saltstack自动化运维—自动化配置管理

基于完成安装的salt master和minion,接下来配置它强大的的管理功能。
需求:分发 从服务器运行指令,例如:可以指定某客户端或者所有客户端运行安装nginx。

Master 与 Minion 认证

1.minion 在第一次启动时,会在/etc/salt/pki/minion/(该路径在/etc/salt/minion 里面  设置)下自动生成 minion.pem(private key)和 minion.pub(public key),然后将 minion.pub  发送给master。

2.master 在接收到minion的public key后,通过salt-key命令accept minion public key,这样在 master 的/etc/salt/pki/master/minions 下的将会存放以 minion id 命名的 public  key, 然后 master 就能对 minion 发送指令了。

KEY 管理:
Salt 在 master 和 minion 数据交换过程中使用 AES 加密, 为了保证发送给 minion 的指令不 会被篡改,master 和 minion 之间认证采用信任的接受(trusted, accepted )的 key. 在发送命令到 minion 之前,minion 的 key 需要先被 master 所接受(accepted). 运行 salt-key 可以列出当前 key 的状态
1. 修改 master 配置, vim /etc/salt/master 去掉前面 #号

 

2. 告诉master 的salt,配置管理文件在哪里,根据你是如何安装salt,有时需要自动创建 /srv/salt目录,然后需要创建一个top.sls 文件,这个也是入口文件,可以用于作为其他服务器的基础配置文件。


base:
‘*’:
– dev.nginx.nginx
‘platform-zk01’:
– dev.httpd.httpd



第一行告诉salt基础配置文件在dev目录下

第二行客户端minion的名称,*表示匹配所有机器

第三行指定sls文件位置,此处表示nginx目录下的nginx.sls

第四行客户端minion的名称,此处指定platform-zl01

第五行指定sls文件位置,此处表示httpd目录下的httpd.sls

3. 在/srv/salt/ 目录下,创建 dev目录,dev 目录下创建 nginx目录和httpd(这些目录和文件名,随意定义,清晰的表示自己安装什么服务即可)

cd /srv/salt
mkdir dev
cd dev
mkdir -p {nginx,httpd}

4. 在/srv/salt/dev/nginx 目录下,指定配置文件内容nginx.sls ( 缩进为2个空格,冒号后面1个空格)

nginx:
  pkg:
    - installed
  service:
    - running
    - enable: True
    - watch:
    - file: /usr/local/nginx/conf/nginx.conf
    - require:
  - pkg: nginx
/usr/local/nginx/conf/nginx.conf:
    file.managed:
      - source: salt://nginx/nginx.conf
      - mode: 644
      - user: root
      - group: root

第一行被称为(ID declaration) 标签定义,在这里被定义为安装包的名。注意:在不同发行版软件包命名不同,比如 fedora 中叫httpd的包 Debian/Ubuntu中叫apache2
第二行被称为(state declaration)状态定义, 在这里定义使用(pkg state module)
第三行被称为(function declaration)函数定义, 在这里定义使用(pkg state module)调用 installed 函数
第四行:告诉管理工具,这是服务管理
第五行:告诉管理工具,这个服务需保证是运行状态
第六行:告诉管理工具,这个服务设置开机启动
第七-八行:观察file文件改动,有改动就重启服务
第十一行:文件标识
第十二行:文件管理
第十三行:指定数据源在哪里,即服务端的源,当这个文件被改动时,就会触发包管理工具,更改上面file指定的文件,可以看成是同步更新。
第十四行:指定file文件的权限
第十五行:指定文件的所属用户
第十六行:指定文件的所属组


5. 然后把master上nginx目录下的 nginx.conf 复制到salt 的nginx目录下(/srv/salt/nginx)

现在我们在服务端进行推送管理:

salt ‘*’ state.highstate

 


到这里就完成master 指定客户端安装nginx服务。如果有几百台机器同时需要安装,岂不是很方便。

0
如无特殊说明,文章均为本站原创,转载请注明出处

该文章由 发布

这货来去如风,什么鬼都没留下!!!