【SaltStack】SaltStack的安装、远程执行与配置管理教程
SaltStack的安装配置:
使用epel的yum源可以直接安装saltstack,简单省事。在服务器端安装salt-master,在所有客户端安装salt-minion
安装好服务后会生成一些配置文件和目录,master为服务器端配置文件,minion为客户端配置文件,pki目录是一个认证密钥存放目录,后面会用到
[azureuser@test-node1 salt]$ pwd;ll /etc/salt -rw-r-----. 1 root root 29232 Jul 7 20:42 master -rw-r-----. 1 root root 25854 Jul 7 20:42 minion drwxr-xr-x. 3 root root 4096 Aug 20 08:43 pki
编辑minion配置文件,在16行位置指定master的具体地址,注意冒号后面有个空格
master: masterhostname
在服务器端和客户端分别启动master和minion服务
service salt-master start service salt-minion start
由于安全性,服务启动后还需要进行认证操作。需要把minion端的公钥传输给master端,然后master端同意后才算认证完成,在pki目录下会有公钥和私钥文件
[root@test-node1 minion]# pwd;ll /etc/salt/pki/minion -r--------. 1 root root 1675 Aug 20 08:59 minion.pem -rw-r--r--. 1 root root 451 Aug 20 08:59 minion.pub
在master端执行salt-key命令可以看到已经认证的key和未认证key
执行salt-key -a keyname 可以同意指定的key认证
再次执行salt-key命令可以看到认证的key已经出现了
salt-key --help还可以看到很多参数,如-A 可以同意所有认证,适用于大量minion需要认证的情况,-d删除某个mino认证等
认证后在minion端的pki目录可以看到master的公钥文件也会传输过来
salt-stack的远程执行:
saltstack远程执行是一个比较重要的功能,简单点来说就是在master上执行一个命令让所有minion执行所需命令
salt '*' test.ping #*代表是所有minion主机,也可以单独指定某主机,test.ping是salt内置模块,用于测试minion连接是否正常
salt '*' cmd.run 'df -h' #cmd.run也是一个内置模块,可以用于执行所有Linux命令
salt-stack配置管理:
配置管理功能可以根据不同业务特性将minion端的配置进行集中化管理,如系统配置文件、软件包管理、分发文件等。
salt-stack用一个文件描述了服务器的状态,在操作该文件之前要打开配置管理功能。编辑/etc/salt/master配置文件,取消以下几行的注释,注意定格和原有空格数不能发生变化
重启salt-master
service salt-master restart
创建/srv/salt目录
mkdir /src/salt
进入/srv/salt目录后需要创建一个top.sls文件,top.sls是配置管理的入口文件,一切都是从这里开始,默认存放在/srv/salt/目录(在/etc/salt/master配置文件里可以指定),文件内容如下:
base: #必须顶格 '*': #两个空格,然后*代表所有minion - apache #4个空格,指定需要执行的sls文件名,不需要有sls后缀
在/srv/salt目录继续创建apache.sls,这里的后缀不能少
[root@test-node1 salt]# vi apache.sls apache-service: #定义一个id pkg.installed: #salt的模块和方法 - names: - httpd #要安装的软件包 - httpd-devel #同上
使用一个salt命令来执行刚才定义的操作
salt '*' state.highstate
到一台minion查看下,发现在执行yum安装命令了
当安装结束后在master上会返回以下信息,可以看到安装了哪些东西以及是否成功等
由于之前的apache.sls只定义了安装软件包的模块,服务并没有随之启动,我们可以在sls文件里增加一些内容,让其安装后自动启动
[root@test-node1 ~]# cat /srv/salt/apache.sls apache-service: pkg.installed: - names: - httpd - httpd-devel service.running: - name: httpd - enable: True
执行state.highstate模块来刷新配置
salt '*' state.highstate
到此salt-stack的快速使用已经介绍完毕,一些高级使用将在后续中讲到!
评论