Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

一、认识自动化运维

传统运维效率低,大多工作人为完成

传统运维工作繁琐,容易出错

传统运维每日重复做相同的事情

传统运维没有标准化流程

传统运维的脚本繁多,不能方便管理

自动化运维就是要解决上面所有问题

Puppet (www.puppetlabs.com)
基于rubby开发,c/s架构,支持多平台,可管理配置文件、用户、cron任务、软件包、系统服务等。 分为社区版(免费)和企业版(收费),企业版支持图形化配置。

Saltstack(官网 https://saltstack.com,文档docs.saltstack.com )
基于python开发,c/s架构,支持多平台,比puppet轻量,在远程执行命令时非常快捷,配置和使用比puppet容易,能实现puppet几乎所有的功能。

Ansible (www.ansible.com )
更加简洁的自动化运维工具,不需要在客户端上安装agent,基于python开发。可以实现批量操作系统配置、批量程序的部署、批量运行命令

Satlstack比Ansible支持的机器更多

二 、saltstack安装

saltstack介绍https://docs.saltstack.com/en/latest/topics/index.html

可以使用salt-ssh远程执行,类似ansible,

也支持c/s模式中控中心,下面我们将讲述c/s种模式的使用,需要准备两台机器

1.101为服务端,1.106为客户端

设置hostname以及hosts,davery,davery01

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

如果客户端机器比较多则需要内部弄个DNS

vim /etc/hosts

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

两台机器全部安装saltstack yum源

yum install -y https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

101上执行 yum install -y salt-master salt-minion

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

yum list |grep salt

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

106上执行 yum install -y salt-minion

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

三、启动salt相关服务

101上编辑配置文件

vi /etc/salt/minion //增加

master: davery

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

添加

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

启动服务

systemctl start salt-master

systemctl start salt-minion

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

服务端监听4505和4506两个端口,4505为消息发布的端口,4506为和客户端通信的端口

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

106上编辑配置文件

vi /etc/salt/minion //增加

master: davery

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

启动服务systemctl start salt-minion

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

客户端不监听端口

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

四、saltstack配置认证

master端和minion端通信需要建立一个安全通道,传输过程需要加密,所以得配置认证,也是通过密钥对来加密解密的

minion在第一次启动时会在/etc/salt/pki/minion/下生成minion.pem私钥和minion.pub公钥,其中.pub为公钥,它会把公钥传输给master

[root@davery01 ~]# ls /etc/salt/pki/minion
minion.pem minion.pub
[root@davery01 ~]#

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

cat /etc/salt/pki/minion/minion.pem私钥

cat /etc/salt/pki/minion/minion.pub公钥

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

master第一次启动时也会在/etc/salt/pki/master下生成密钥对,当master接收到minion传过来的公钥后,通过salt-key工具接受这个公钥,一旦接受后就会在/etc/salt/pki/master/minions/目录里存放刚刚接受的公钥,同时客户端也会接受master传过去的公钥,把它放在/etc/salt/pki/minion目录下,并命名为minion_master.pub

[root@davery ~]# ls /etc/salt/pki/master

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

cat /etc/salt/pki/master/master.pem

cat /etc/salt/pki/master/master.pub

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

以上过程需要借助salt-key工具来实现

执行如下命令 salt-key -a davery  // -a后面跟主机名(增加),可以认证指定主机

salt-key -a davery01

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

报错了不能收到01机器key,先把所有key删除一下,然后重新设置一下hostname和hosts,就可以了,如下

[root@davery ~]# ls /etc/salt/pki/minion
minion.pem minion.pub

[root@davery ~]# rm -rf /etc/salt/pki/minion/minion.pub

[root@davery ~]# rm -rf /etc/salt/pki/minion/minion.pem

[root@davery ~]# cd /etc/salt/pki/master
[root@davery master]# ls
master.pem minions minions_denied minions_rejected
master.pub minions_autosign minions_pre
[root@davery master]# rm -rf master.pem
[root@davery master]# rm -rf master.pub

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

[root@davery ~]# ls /etc/salt/pki/master/minions

[root@davery ~]# ls /etc/salt/pki/master/minions_denied

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

五、salt-key命令用法

-a  后面跟主机名,认证指定主机

-A 认证所有主机

-r  跟主机名,拒绝指定主机

-R  拒绝所有主机

-d 跟主机名,删除指定主机认证

-D 删除全部主机认证

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

-y 省略掉交互,相当于直接按了y,如果已经允许了一次第二次就不会接受了,要重新删除salt-key -D才能再次接受

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

六、saltstack远程执行命令

所有的指令都是在master上执行

salt '*' test.ping //这里的*表示所有已经签名的minion端,也可以指定一个,测试对方机器是否存活

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

salt 'davery' test.ping

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

salt '*' cmd.run "hostname"

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

说明: 这里的*必须是在master上已经被接受过认证的客户端,可以通过salt-key查到,通常是我们已经设定的id值。关于这部分内容,它支持通配、列表以及正则。

比如两台客户端davery01,davery02, 那我们可以写成,正则表达式

salt 'davery*' cmd.run 'hostname'

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

salt 'davery0[12]'

salt -L 'davery01,davery02'

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

salt -E 'davery(01|02)'

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

等形式,使用列表,即多个机器用逗号分隔,而且需要加-L,使用正则必须要带-E选项。 它还支持grains,加-G选项,pillar 加-I选项,下面会介绍到

七、saltstack - grains 都是在master davery上操作

grains是在minion启动时收集到的一些信息,比如操作系统类型、网卡ip、内核版本、cpu架构等。

salt 'davery01' grains.ls 列出所有的grains项目名字

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

salt 'davery01' grains.items 列出所有grains项目以及值

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

grains的信息并不是动态的,并不会实时变更,它是在minion启动时收集到的。

我们可以根据grains收集到的一些信息,做配置管理工作。

grains支持自定义信息。

minion上:

vim /etc/salt/grains  //添加:

role: nginx

env: test

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

重启minion服务

systemctl restart salt-minion

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

master上:

获取grains:

salt '*' grains.item role env

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

可以借助grains的一些属性信息来执行

salt -G role:nginx cmd.run 'hostname'

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

八、saltstack – pillar

pillar和grains不一样,是在master上定义的,并且是针对minion定义的一些信息。像一些比较重要的数据(密码)可以存在pillar里,还可以定义变量等。

配置自定义pillar

vim  /etc/salt/master

找到如下配置://去掉前面的警号

pillar_roots:

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

改为

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

base: #此行前面有两个空格

- /srv/pillar #此行前面有4个空格

重启

[root@davery ~]# systemctl restart salt-master

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

mkdir /srv/pillar

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

vim /srv/pillar/test.sls  //内容如下

conf: /etc/123.conf

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

vi /srv/pillar/top.sls  //内容如下

base:

'aming-02': #此行前面有两个空格

- test #此行前面有4个空格

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

重启master

systemctl  restart salt-master

当更改完pillar配置文件后,我们可以通过刷新pillar配置来获取新的pillar状态:

salt '*' saltutil.refresh_pillar

验证:salt  '*' pillar.item conf

pillar同样可以用来作为salt的匹配对象。比如 salt  -I 'conf:/etc/123.conf'  test.ping

Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

上一篇:CentOS6.4/6.7下Mysql数据库的安装与配置(转载)


下一篇:华为OJ平台——字符串通配符