【SaltStack】SaltStack的安装、远程执行与配置管理教程

Tanglu 系统运维 2015-08-21 4835 0

SaltStack的安装配置:

使用epel的yum源可以直接安装saltstack,简单省事。在服务器端安装salt-master,在所有客户端安装salt-minion

QQ图片20150820161916.png

 

安装好服务后会生成一些配置文件和目录,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

salt1.png

 

执行salt-key -a keyname 可以同意指定的key认证salt2.png

 

再次执行salt-key命令可以看到认证的key已经出现了

salt3.png

 

salt-key --help还可以看到很多参数,如-A 可以同意所有认证,适用于大量minion需要认证的情况,-d删除某个mino认证等

 

认证后在minion端的pki目录可以看到master的公钥文件也会传输过来

salt44.png

 

salt-stack的远程执行:

saltstack远程执行是一个比较重要的功能,简单点来说就是在master上执行一个命令让所有minion执行所需命令


salt '*' test.ping  #*代表是所有minion主机,也可以单独指定某主机,test.ping是salt内置模块,用于测试minion连接是否正常

salt5.png 



 


salt '*' cmd.run 'df -h'  #cmd.run也是一个内置模块,可以用于执行所有Linux命令

salt6.png 



 

salt-stack配置管理:

配置管理功能可以根据不同业务特性将minion端的配置进行集中化管理,如系统配置文件、软件包管理、分发文件等。

salt-stack用一个文件描述了服务器的状态,在操作该文件之前要打开配置管理功能。编辑/etc/salt/master配置文件,取消以下几行的注释,注意定格和原有空格数不能发生变化

salt7.png

重启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安装命令了

salt8.png

 

当安装结束后在master上会返回以下信息,可以看到安装了哪些东西以及是否成功等

salt9.png

 

由于之前的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的快速使用已经介绍完毕,一些高级使用将在后续中讲到!


评论