saltstack三种运行模式:

  local本地、master/minion(类似于agent)、salt ssh

saltstack三大功能:

  远程执行、配置管理、云管理

saltstack安装:1、使用官方进行yum安装 2、自建yum源进行安装

node1:

wget https://repo.saltstack.com/yum/redhat/salt-repo-2017.7-1.el6.noarch.rpm
yum install salt-repo-2017.7-1.el6.noarch.rpm
yum clean expire-cache
yum install salt-master salt-minion

修改minion配置:/etc/salt/minion

master: 指向master节点ip

node2:

wget https://repo.saltstack.com/yum/redhat/salt-repo-2017.7-1.el6.noarch.rpm
yum install salt-repo-2017.7-1.el6.noarch.rpm
yum clean expire-cache
yum install salt-minion

修改minion配置:/etc/salt/minion

master: 指向master节点ip
 
2、由于yum安装下载官方rpm包比较慢,所以自己自建了yum源,从https://repo.saltstack.com/yum/redhat/6/x86_64/2017.7/此处将需要以来安装的rpm包下载下来

查看下配置文件:

[root@node1 ~]# egrep -v "^#|^$" /etc/salt/master
[root@node1 ~]# egrep -v "^#|^$" /etc/salt/minion
master: 192.168.44.134
[root@node2 ~]# egrep -v "^#|^$" /etc/salt/minion
master: 192.168.44.134

启动两节点上的服务:

[root@node1 ~]# /etc/init.d/salt-master start
Starting salt-master daemon: [确定]
[root@node1 ~]# /etc/init.d/salt-minion start
Starting salt-minion:root:node1 daemon: OK
[root@node1 ~]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1265/sshd
tcp 0 0 0.0.0.0:4505 0.0.0.0:* LISTEN 2797/python2.7
tcp 0 0 0.0.0.0:4506 0.0.0.0:* LISTEN 2803/python2.7 [root@node2 ~]# /etc/init.d/salt-minion start
Starting salt-minion:root:node2 daemon: OK

显示当前未连接上master的minion节点:

[root@node1 master]# tree
.
├── master.pem
├── master.pub
├── minions
├── minions_autosign
├── minions_denied
├── minions_pre 还没有成为master的minion节点
│ ├── node1
│ └── node2
└── minions_rejected
[root@node1 master]# salt-key
Accepted Keys:
Denied Keys:
Unaccepted Keys: 未同意的key有两个,node1和node2上的minion
node1
node2
Rejected Keys:
将未同意的minion进行加入到master来:
salt-key -A:同意所有未同意的minion节点
salt-key -a node*:匹配模式的同意
[root@node1 master]# salt-key -a node*
The following keys are going to be accepted:
Unaccepted Keys:
node1
node2
Proceed? [n/Y] Y
Key for minion node1 accepted.
Key for minion node2 accepted.
[root@node1 master]# tree
.
├── master.pem
├── master.pub
├── minions
│ ├── node1
│ └── node2
├── minions_autosign
├── minions_denied
├── minions_pre
└── minions_rejected salt-key:
[root@node1 ~]# salt-key -L
Accepted Keys:
node1
node2
Denied Keys:
Unaccepted Keys:
Rejected Keys:

1、test.ping:类似于zabbix的agent的ping,test是一个模块,ping是模块中的方法

[root@node1 ~]# salt '*' test.ping
node2:
True
node1:
True

2、cmd.run:执行所有命令的模块

[root@node1 ~]# salt "*" cmd.run "uptime"
node1:
12:04:22 up 2:32, 2 users, load average: 0.00, 0.00, 0.00
node2:
12:04:22 up 23:28, 1 user, load average: 0.07, 0.02, 0.00 [root@node1 ~]# salt "*" cmd.run "df -h"
node2:
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_node2-lv_root
16G 3.5G 12G 24% /
tmpfs 932M 12K 932M 1% /dev/shm
/dev/sda1 485M 32M 429M 7% /boot
node1:
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_node1-lv_root
16G 2.9G 12G 20% /
tmpfs 932M 28K 932M 1% /dev/shm
/dev/sda1 485M 32M 429M 7% /boot
grains:salt的一个组件,存储在minion上
  信息收集:收集minion端的信息
  匹配某个minion端执行某个命令
  匹配top file执行某些命令
[root@node1 salt]# salt 'node1' grains.ls          列出所有的grains信息
node1:
- SSDs
- biosreleasedate
- biosversion
- cpu_flags
- cpu_model
- cpuarch
- disks
- dns
[root@node1 salt]# salt 'node1' grains.items 列出详细的grains的key和value
显示单个item的值:
[root@node1 salt]# salt 'node1' grains.item fqdn     获取某一个grains的item
node1:
----------
fqdn:
node1

或者使用get方法:

[root@node1 salt]# salt 'node1' grains.get fqdn      获取某一个grains的值
node1:
node1

显示minion端的操作系统:

[root@node1 salt]# salt 'node1' grains.get os       获取某一个grains的值
node1:
CentOS

在操作系统是CentOS上执行某命令:

[root@node1 salt]# salt -G os:CentOS cmd.run 'w'     -G:以grains类型作匹配
node1:
13:04:59 up 3:32, 2 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.44.1 11:42 0.00s 0.54s 0.35s /usr/bin/python
root pts/1 192.168.44.1 11:49 28:30 0.04s 0.04s -bash
node2:
13:04:59 up 1 day, 29 min, 1 user, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.44.1 11:42 28:36 0.08s 0.08s -bash
[root@node1 salt]# salt "*" grains.item roles          获取roles这个item的grains信息
node1:
----------
roles:
- webserver
- memcache
node2:
----------
roles:

grains存在于minion端的配置文件中,可以使用配置grains进行将minion打一个标签,然后通过使用grains进行匹配,执行某操作:

[root@node1 salt]# egrep -v "^$|^#" /etc/salt/minion
master: 192.168.44.134
grains:
roles:
- webserver
- memcache
修改了配置文件,需要重启才能生效:
[root@node1 salt]# /etc/init.d/salt-minion restart
Stopping salt-minion:root:node1 daemon: OK
Starting salt-minion:root:node1 daemon: OK
执行操作:
[root@node1 salt]# salt -G "roles:memcache" cmd.run 'echo "hello node1"'
node1:
hello node1
-G "roles:memcache":匹配刚刚在minion端配置文件中的roles定义

当然如果不想将grains配置写在minion的配置文件中,那么可以将grains配置单独写在/etc/salt/grains中:匹配某一个minion端执行某一个命令

[root@node1 salt]# ll /etc/salt/grains,该grains需要事先进行创建
比如:
[root@node1 salt]# cat /etc/salt/grains
roles: nginx [root@node1 salt]# /etc/init.d/salt-minion restart
Stopping salt-minion:root:node1 daemon: OK
Starting salt-minion:root:node1 daemon: OK
[root@node1 salt]# salt -G "roles:nginx" cmd.run 'echo "node1 nginx"'
No minions matched the target. No command was sent, no jid was assigned.
ERROR: No return received

报错原因:/etc/salt/grains 改配置文件中的key为roles与minion中的key值roles一致,导致冲突了,修改该key就可以解决

[root@node1 salt]# cat /etc/salt/grains
web: nginx
[root@node1 salt]# /etc/init.d/salt-minion restart
Stopping salt-minion:root:node1 daemon: OK
Starting salt-minion:root:node1 daemon: OK
[root@node1 salt]# salt -G "web:nginx" cmd.run 'echo "node1 nginx"'
node1:
node1 nginx

pillar:只有在master配置文件中才会用到设置pillar

默认pillar没有打开

[root@node1 salt]# salt "*" pillar.items
node1:
----------
node2:
----------

需要在master配置文件中开启:

[root@node1 ~]# egrep -v "^#|^$" /etc/salt/master
file_roots:
base:
- /srv/salt
pillar_opts: True
[root@node1 ~]# /etc/init.d/salt-master restart
Stopping salt-master daemon: [确定]
Starting salt-master daemon: [确定]
[root@node1 ~]# salt "*" pillar.items node2:
----------
master:
----------
__role:
master
allow_minion_key_revoke:

pillar支持环境,base环境或其他,pillar也有一个入口目录,入口文件top file,top file必须放在base环境下面,打开base环境设置:

[root@node1 ~]# egrep -v "^#|^$" /etc/salt/master
pillar_roots:
base:
- /srv/pillar
创建该文件:[root@node1 ~]# mkdir /srv/pillar
重启master服务:[root@node1 ~]# /etc/init.d/salt-master restart
[root@node1 pillar]# cat apache.sls
{% if grains['os'] == 'CentOS' %}
apache: httpd
{% elif grains['os'] == 'Debian' %}
apache: apache2
{% endif %}
[root@node1 pillar]# cat top.sls
base:
'*':
- apache
将pillar的True再次修改为False,重启master,查看上面编写的sls文件是否已经生效
[root@node1 pillar]# salt '*' pillar.items
node2:
----------
apache:
httpd
node1:
----------
apache:
httpd
设置完了pillar,需要进行刷新才能够使用:
[root@node1 pillar]# salt '*' saltutil.refresh_pillar
node2:
True
node1:
True
[root@node1 pillar]# salt -I 'apache:httpd' test.ping 刷新了才能调用pillar的设置,-I表示使用pillar匹配
node2:
True
node1:
True

saltstack1的更多相关文章

  1. Linux 之集群 LVS

    查看系统是否支持IPVS功能 [root@nginx ~]# grep -i 'ipvs' /boot/config-2.6.18-308.el5 # IPVS transport protocol ...

  2. Linux 之加密类型,CA,Openssl,Openssh

    TCP/IP:安全 A------->B 机密性:明文传输(ftp,http,smtp,telnet),被窃听 完整性:消息被篡改 身份验证:你访问的主机就是你真实要访问的那台,而不是钓鱼网站 ...

  3. 自动化运维工具saltstack03 -- 之SaltStack的数据系统

    SaltStack数据系统 saltstack有两种数据系统:grains与pillar 1.SaltStack数据系统之grains grains可以收集minion端的静态数据(即机器启动时收集一 ...

  4. python 1秒启动一个下载服务器

    在Linux系统中,进入要下载文件的目录,用python执行以下命令.启动一个简单的文件下载服务器. python2: [root@saltstack-1 apps]# python -m Simpl ...

随机推荐

  1. 【BZOJ2622】[2012国家集训队测试]深入虎穴 次短路

    [BZOJ2622][2012国家集训队测试]深入虎穴 Description 虎是中国传统文化中一个独特的意象.我们既会把老虎的形象用到喜庆的节日装饰画上,也可能把它视作一种邪恶的可怕的动物,例如“ ...

  2. JavaIo编程基础复习

    什么是Io io是指Input和Output,指输入和输出 Input是指外部读入数据到内存,例如读取一个文件,或者从网络中读取 Output是指把内存中的数据输出到外部,例如写文件,输出到网络 什么 ...

  3. jenkins提交SVN文件

    需求背景: 公司有内网和外网两台SVN服务器,都需要维护相同的配置文件,但是我们想能否在内网修改配置文件后同时提交到外网SVN服务器上. 开发人员操作步骤 1.开发人员在IDE中checkout内网c ...

  4. setMasksToBounds

    setMasksToBounds 在IB中,当你使用Custom类型的Button时,你可以指定按钮的背景色.但当你运行时按钮就失去了圆角特性,你看到的仅仅是一个方块.因为custombutton没有 ...

  5. 反编译apk + eclipse中调试smali

    1.对apk使用apktool反编译出可调试的smali代码到out文件夹 apktool -d d 定点加粉丝_com.mingniu.wxddjfs_440.apk -o out 这里必须使用-d ...

  6. 页面加载异常 清除浏览器静态文件 js css 缓存 js动态加载js css文件,可以配置文件后辍,防止浏览器缓存

    js清除浏览器缓存的几种方法 - 兔老霸夏 - 博客园 https://www.cnblogs.com/Mr-Rocker/p/6031096.html js清除浏览器缓存的几种方法   一.CSS和 ...

  7. 唯品会的Service Mesh三年进化史 2018 年 Service Mesh 元年,被誉为是下一代微服务架构

    2018 年 Service Mesh 元年,被誉为是下一代微服务架构 https://www.sohu.com/a/225324586_465914 唯品会的Service Mesh三年进化史 - ...

  8. Spring整合JUnit4进行AOP单元测试的时候,报:"C:\Program Files\Java\jdk1.8.0_191\bin\java.exe" -ea -Didea.test.cyclic.buffer.size=1048576 "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2018.3\lib\idea_rt.jar=64

    错误代码 "C:\Program Files\Java\jdk1.8.0_191\bin\java.exe" -ea -Didea.test.cyclic.buffer.size= ...

  9. Elasticsearch提示low disk watermark [85%] exceeded on [UTyrLH40Q9uIzHzX-yMFXg][Sonofelice][/Users/baidu/Documents/work/soft/data/nodes/0] free: 15.2gb[13.4%], replicas will not be assigned to this node

    mac本地启动es之后发现运行一段时间一分钟就能打印好几条info日志: [--13T10::,][INFO ][o.e.c.r.a.DiskThresholdMonitor] [Sonofelice ...

  10. VoIP应用系统大盘点

    一.VoIP拓扑 PBX是程控交换机,程控交换机有实体交换机和软件模拟的交换机. 软件模拟的交换机,即交换机服务器,常用开源的sip服务器有asterisk,freepbx, opensip等,商用的 ...