初识SaltStack
SaltStack是什么:
SaltStack是一个运维开源软件,用python写的。
能够实现的功能:
远程执行,配置(状态)管理,云管理
同类型软件还有Puppet,ansible
saltstack四种运行方式:
Local
Minion/Master C/S结构,客户端/服务器模式
Syndic - zabbix proxy
Salt SSH
安装:
需要注意 master和minion安装的主机
主机安装:
yum install -y salt-master salt-minion
从机安装:
yum isntall salt-minion
配置:
systemctl start salt-master 启动服务
/etc/salt/minion 配置文件
/etc/salt/master 配置文件
先配置minion
16行,master:192.168.56.11 配置master的ip,也可以写主机名
101行,id 是minion唯一标识符,可以不配置,默认是主机名,不建议改。
minion在启动的时候会创建一个pki目录
![](https://images2018.cnblogs.com/blog/1168113/201803/1168113-20180320111028466-1740825420.png)
pem是私钥
pub是公钥
minion两台均要如上配置。
之后配置master
master在第一次启动的时候也会生成一个pki目录
命令:
salt-key 列出所有的key
salt-key-a key...... 同意这个Key
![](https://images2018.cnblogs.com/blog/1168113/201803/1168113-20180320111112686-112924993.png)
key在命令中可以使用通配符
salt -key--help 查看帮助
同意之后,master和minion会把公钥互相发送。
pki/minion目录下有master公钥
pki/master目录下有minion公钥
远程执行命令:
salt命令 “具体命令" 模块.方法
salt '*' test.ping #因为*在shell中有歧义,所以需要用引号引起,也可以用双引号。test是个模块,ping是个方法。
salt "linux-nodel.oldboyedu.com" cmd.run "w" 主机名,cmd模块 w命令
salt "*" cmd.run "ls -l /tmp/file"
还可以执行删除命令,所以比较危险。
![](https://images2018.cnblogs.com/blog/1168113/201803/1168113-20180320111137911-400660819.png)
上面这种情况说明成功了,没有消息说明没有报错。
典型案例:
1.远程执行 salt '*' cmd.run 'uptime'
2.State 需要写一个文件。格式 YAML 后缀.sls
YAML:三个规则
1.缩进。通过2个空格。不要使用tab。
2.冒号。冒号和缩进表示层级结构。
还有个功能表示键值对,冒号后面需要有个空格。
3.短横线。代表一个列表。短横线后面需要一个空格。
slatstack配置文件也是YAML语法
vim /etc/salt/master配置文件
set nu 453行
file_roots: 定义写在哪里,环境定义
base环境是必须的,且名字不能改。
设置之后需要重启服务,并创建该路径目录。
systemctl restart salt-master
mkdir /srv/salt
在base路径下创建一个web目录
就是/srv/salt/web
然后创建文件apache.sls
注意后缀名。
在该文件中写安装命令。
如下:
![](https://images2018.cnblogs.com/blog/1168113/201803/1168113-20180320111203129-1371387956.png)
如上文件是一种状态
会有两个id
一个是apache-install
一个是apache-service
模块分执行模块和状态模块。
执行该文件:
salt "*" state.sls web.apache
执行原理是:
master将执行文件发送给Minion
文件在/var/cache/salt/minion/files/base/web/apache.sls
收到文件之后,自上而下加载。
centos是用Yum
ubantu是用apt-get安装
自动区分系统
安装之后,检查服务状态。
top文件
top.sls
top file必须放在base环境下,base环境就放在自己设置的路径下。
在/srv/salt/创建top.sls文件
![](https://images2018.cnblogs.com/blog/1168113/201803/1168113-20180320111224511-1564889205.png)
top文件内可以写多个环境,多个服务
豆知识:
linux在提示符中显示绝对路径,在/etc/bashrc中将PS1处的W改成w即可,然后sorce /etc/bashrc 再重新打开窗口。
先执行:
salt "linux-node.oldboyedu.com" state.highstate test=True
该命令不会执行,会提示将要修改的位置
确认之后在执行,生产环境不建议使用*
salt "*" state.highstate
状态可以多次执行,所以写的时候需要注意。
建议以后用salt控制状态,那么就一直用salt,以免对minion做了更改,却没有文件,等想还原的时候不知道
之前都做了哪些更改。
SaltStack 数据系统
Granins(谷粒)
Pillar(柱子)
Grains:静态数据 当Minion启动的时候收集的Minion本地的相关信息。
操作系统版本,内核版本,CPU,内存,硬盘。设备型号,序列号。
1.资产管理
2.用于目标选择
3.配置管理中使用。
salt "linux-node1*" grains.ls 列出所有
salt 'linux-node1*' grains.items 列出信息
salt '*' grains.item os 查看每个项具体的值
salt '*' grains.item fqdn_ip4
salt -G ‘os:CentOS’cmd.run 'echo hehe' 目标选择,通过操作系统选择,执行命令
未完待续
中天一片无情月,是我平生不悔心