Salt是一个配置管理系统,能够维护预定义状态的远程节点(比如,确保指定的包被安装,指定的服务在运行),一个分布式远程执行系统,用来在远程节点(可以是单个节点,也可以是任意规则挑选出来的节点)上执行命令和查询数据,开发其的目的是为远程执行提供最好的解决方案,并使远程执行变得更好,更快,更简单。Saltstack(中国用户组 www.saltstack.cn )基于python开发,c/s架构,支持多平台,比puppet轻量,在远程执行命令时非常快捷,配置和使用比puppet容易,能实现puppet几乎所有的功能。
有master端和minion端,执行的信息比较稳定,不容易丢失信息,或者出现失联主机的情况。有封装好的http-api,我们可以直接启动salt-api就可以通过http协议进行调用。不需要自己进行第二次的封装。
基于centos6和centos7的差异,在两个不同的操作系统中安装saltstack也是不一样的。参考网址:https://docs.saltstack.com/en/latest/topics/installation/rhel.htmlCentos6需要先安装扩展源,然后在进行安装。
Master端(192.168.127.165)
安装 yum install –y salt-master yum install –y salt-api vi /etc/salt/master interface: 192.168.127.165 启动 systemctl start salt-masterMinion端(192.168.127.166)
安装 yum install -y salt-minion vi /etc/salt/minion master: 192.168.127.165 其中有一个id选项,这个id虽然不定义也没有关系,如果不定义,那么master会以客户端的hostname来显示,一旦定义了就按id定义的名字来显示了,这个id可以不和hostname一致,但定义了id后,也应该在/etc/hosts里面定义记录。 启动 systemctl start salt-minion源码安装:http://note.youdao.com/noteshare?id=881bbdbb6fd7bca9f74360aa052b79a4&sub=EEDE33154E13432FA9198021015C5C25
minion在第一次启动时,会在/etc/salt/pki/minion/(该路径在/etc/salt/minion里面设置)下自动生成minion.pem(private key)和 minion.pub(public key),然后将 minion.pub发送给master。master在接收到minion的public key后,通过salt-key命令accept minion public key,这样在master的/etc/salt/pki/master/minions下的将会存放以minion id命名的 public key,然后master就能对minion发送指令了。
salt-key -L 或者salt-key 显示所有的key salt-key -D 删除所有认证主机id证书 salt-key -d keys_values -y salt-key -A 接收所有id证书请求 salt-key -a id 接受单个id证书请求在Master上执行:
[root@k8s-master /]# salt-key Accepted Keys: k8s-node1 # 因为我在Minion上没有定义id,所以这里显示的是客户端的hostname Denied Keys: Unaccepted Keys: Rejected Keys:
1.-E, --pcre,通过正则表达式进行匹配
salt -E 'web(9|10)*' test.ping -t 12. -L, --list, 主机id进行过滤
salt -L "*app*" cmd.run "df -h"3. -G, --grain, 根据被控主机的grains信息进行过滤
salt -G 'role:nginx' cmd.run "ls /export"4. -I, --pillar, 根据被控主机的pillar信息进行过滤
salt -I 'myname:xiang' test.ping -t 55. -S, --ipcidr, 根据minion的ip地址进行匹配
salt -S 192.168.1.1 test.ping salt -S 192.168.1.0/24 test.ping salt -S 192.168.0.0/16 test.ping salt -S 192.0.0.0/8 test.ping6.检查客户端是否挂掉
salt-run manage.status |head salt-run manage.down 例子: [root@k8s-master ~]# salt-run manage.status down: up: - k8s-node1
测试一:salt "*" test.ping # 检测通讯是否正常
[root@k8s-master ~]# salt "*" test.ping k8s-node1: True
测试二:salt-run "*" cmd.run "df -h" # 远程执行命令
[root@k8s-master ~]# salt "*" cmd.run "df -h" k8s-node1: Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 17G 1.2G 16G 7% / devtmpfs 478M 0 478M 0% /dev tmpfs 489M 12K 489M 1% /dev/shm tmpfs 489M 13M 476M 3% /run tmpfs 489M 0 489M 0% /sys/fs/cgroup /dev/sda1 1014M 125M 890M 13% /boot tmpfs 98M 0 98M 0% /run/user/0说明: 这里的 * 必须是在 master 上已经被接受过的客户端,可以通过 salt-key 查到,通常是我们已经设定的 id 值。关于这部分内容,它支持通配、列表以及正则。 比如两台客户端 web10、web11, 那我们可以写成 salt 'web*' salt 'web1[02]' salt -L 'web10,web11' salt -E 'web(10|11)' 等形式,使用列表,即多个机器用逗号分隔,而且需要加-L,使用正则必须要带-E选项。 它还支持 grains 和 pillar,分别加 -G 和 -I 选项,下面会介绍到。
自定义grians(在minion上定义的)grains是在minion启动时搜集一些信息,如操作系统类型,网卡,内核版本,cpu架构等salt "*" grains.ls 列出所有grains项目名字salt "*app.*" grains.items 列出所有grains项目以及值grains的信息并不是动态的,并不会实时变化,它只是在minion启动时收集到的我们可以根据grains收集到的一些信息,做一些配置管理工作在minion上:vim /etc/salt/grainsrole: nginxenv: test重启service salt-minion restart获取grians:salt "*" grains.item role env或者:salt -G "*" role:nginx cmd.run "hostname“salt "*" grains.items
pillar(在master上定义)(yaml语法)在配置文件中找pillar的文件路径:
找到以后,mkdir /export/salt/pillarvim top.slsbase:"*":- testvim test.slsconf: xiang然后刷新pillar: salt '*' saltutil.refresh_pillar验证:salt '*' pillar.items conf或者: salt -I 'conf:xiang' test.ping
转载于:https://www.cnblogs.com/yangjian319/p/9234319.html
相关资源:JAVA上百实例源码以及开源项目