Salt,汉语意思是盐。
Salt对于运维攻城狮来说,就像盐对人体体征一样重要;哈哈哈,我是这么意淫的。
SaltStack是一个服务器基础架构集中化管理平台,具有远程执行、配置管理、云管理等功能。
SaltStack是基于Python语言实现的;所以对于熟悉python的运维来说,那非常有亲切感,容易上手,而且yaml格式也类似于python的缩进,并且非常严格,刚入门的时候非常酸爽,因为你一不小心,多一个或者少一个空格,就容易出错,排错还挺费劲。
通过部署SaltStack环境,我们可以做到对成千上万台服务器批量执行命令;可以根据不同的业务线进行配置集中化管理、文件分发、服务器数据采集、操作系统基础以及软件包的管理,总之非常方便。
SaltStack是运维攻城狮们提高工作效率,规范化配置和操作的利器。有了它,你就可以吃着火锅,唱着歌,愉快地工作了。
(1)部署简单、方便;
(2)支持大部分Unix/Linux及Windows环境;
(3)主从集中化管理;
(4)配置简单、功能强大、扩展性强;
(5)master和minion基于证书认证,安全;
(6)支持API及自定义模块,通过python可轻松扩展。
(1)Local,即在本地运行
(2)Master/Minion模式, C/S模式
(3)Syndic 代理模式
(4)Salt SSH模式,这种模式不用安装minion 也可以收集。
IP地址 主机名 操作系统 192.168.56.11 linux-node1 CentOS7 192.168.56.12 linux-node2 CentOS7
打开http://repo.saltstack.com/,这是SaltStack自己的repo库, 进去后,你可以看到基于各种平台的安装方法
安装SaltStack的repository
yum install https://repo.saltstack.com/yum/redhat/salt-repo-2016.3-1.el7.noarch.rpm
两台机器上都安装repo源。
接下来安装Salt
yum install -y salt-master salt-minion 注:在node1上安装master和minion,在node2上只安装minion
启动master
systemctl start salt-master
启动minion,先进行配置,让minion知道它的老大是谁,谁在管它
vi /etc/salt/minion 修改 master: 192.168.56.11 #冒号后有空格,切记 id: 每台服务器有一个唯一标识符号;默认可以不做配置,为主机名 启动minion systemctl start salt-minion
查看minion的id
[root@linux-node1 ~]# cd /etc/salt/ [root@linux-node1 /etc/salt]# ll total 112 -rw-r----- 1 root root 2626 Jun 11 04:43 cloud drwxr-xr-x 2 root root 6 Jun 14 04:42 cloud.conf.d drwxr-xr-x 2 root root 6 Jun 14 04:42 cloud.deploy.d drwxr-xr-x 2 root root 6 Jun 14 04:42 cloud.maps.d drwxr-xr-x 2 root root 6 Jun 14 04:42 cloud.profiles.d drwxr-xr-x 2 root root 6 Jun 14 04:42 cloud.providers.d -rw-r----- 1 root root 39184 Jul 24 04:41 master drwxr-xr-x 2 root root 38 Jul 24 04:44 master.d -rw-r----- 1 root root 31601 Jun 29 09:45 minion drwxr-xr-x 2 root root 27 Jun 24 19:01 minion.d -rw-r--r-- 1 root root 23 Jun 24 18:54 minion_id drwxr-xr-x 4 root root 32 Jun 24 18:42 pki -rw-r----- 1 root root 26460 Jun 11 04:43 proxy -rw-r----- 1 root root 344 Jun 11 04:43 roster [root@linux-node1 /etc/salt]# cat minion_id linux-node1.example.com pki目录是minion第一次启动后创建的目录。 使用tree命令查看pki目录,可以看到minion和master两个目录。 在minion目录下有minion.pem和minion.pub。 minion会把自己的公钥发给master。
查看master下目录情况
cd /etc/salt/master/pki/ 在pki下同样有两个目录master和minion 在master目录下,在master同意添加minion之前,minion的公钥是存放在minions_pre目录下的,而且是以minion的ID存放公钥。 纳管minion方法 使用salt-key查看master下有哪些minion 执行salt-key -a linux-node* 然后执行salt-key,查看发生了什么变化 [root@linux-node1 /etc/salt/pki]# salt-key Accepted Keys: linux-node1.example.com linux-node2.example.com Denied Keys: Unaccepted Keys: Rejected Keys: 再次查看公钥位置,会发现公钥已经被存放到/etc/salt/master/pki/minions [root@linux-node1 /etc/salt/pki]# tree ../pki/ ../pki/ ├── master │ ├── master.pem │ ├── master.pub │ ├── minions │ │ ├── linux-node1.example.com │ │ └── linux-node2.example.com │ ├── minions_autosign │ ├── minions_denied │ ├── minions_pre │ └── minions_rejected └── minion ├── minion_master.pub ├── minion.pem └── minion.pub
注意:minion上也有master的公钥,这样他们就可以通信了。
[root@linux-node2 salt]# cd pki/ [root@linux-node2 pki]# tree . ├── master └── minion ├── minion_master.pub ├── minion.pem └── minion.pub
例1、 salt ‘*‘ test.ping ‘*‘在shell里面是有意义的,所有用引号引起来。此处是master远程执行的目标 test是一个模块 ping是模块里的一个方法,用于master和minion的通信。 [root@linux-node1 /etc/salt/pki]# salt ‘*‘ test.ping linux-node2.example.com: True linux-node1.example.com: True 例2、 [root@linux-node1 /etc/salt/pki]# salt ‘linux-node1*‘ cmd.run ‘w‘ linux-node1.example.com: 08:03:10 up 10:17, 2 users, load average: 0.21, 0.14, 0.08 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 06:56 1:05m 0.18s 0.18s -bash root pts/0 192.168.56.1 07:13 6.00s 1.51s 1.38s /usr/bin/python /usr/bin/salt linux-node1* cmd.run w 例3、 [root@linux-node1 /etc/salt/pki]# salt ‘linux-node1*‘ cmd.run ‘ls -l /tmp‘ linux-node1.example.com: total 32 drwxr-xr-x 2 root root 6 Jul 17 19:39 hsperfdata_root -rw-rw-r-- 1 zabbix zabbix 0 Jul 17 19:33 localhost-mysql_cacti_stats.txt -rw------- 1 root root 1411 May 27 10:35 localhost.crt -rw------- 1 root root 1675 May 27 10:35 localhost.key -rw-rw-r-- 1 zabbix zabbix 43 Jul 17 19:35 netstat.tmp drwxr-xr-x 3 root root 17 Jul 19 07:39 pear -rw-r--r-- 1 root root 1188 Jul 24 00:20 php_errors.log -rw-rw-r-- 1 zabbix zabbix 16308 Jul 17 17:58 sms.log drwx------ 3 root root 16 Jul 23 21:46 systemd-private-1718f11d5b814680841058906c1429c8-cobblerd.service-x1ZIHQ drwx------ 3 root root 16 Jun 24 11:07 systemd-private-ee2a5374182b40fb83bb256efa24f62b-cobblerd.service-hF5d1q drwx------ 3 root root 16 Jun 24 11:04 systemd-private-ee2a5374182b40fb83bb256efa24f62b-httpd.service-1ehcOR drwx------ 3 root root 16 Jun 24 11:08 systemd-private-ee2a5374182b40fb83bb256efa24f62b-mariadb.service-qOJnmO [root@linux-node1 /etc/salt/pki]# 例4、重启zabbix-agent [root@linux-node1 /etc/salt/pki]# salt ‘linux-node1*‘ cmd.run ‘systemctl restart zabbix-agent‘ linux-node1.example.com: 这里没有返回,其实跟linux差不多,没有消息就是好消息
本文出自 “Jacky鑫” 博客,请务必保留此出处http://jackyxin.blog.51cto.com/1976631/1833762
原文地址:http://jackyxin.blog.51cto.com/1976631/1833762