1. saltstack
1.1 saltstack介绍
常用的运维管理工具:
fabric、puppet、chef、ansible、saltstack
salt灵活性强大,可以进行大规模部署,也能进行小规模的系统部署。salt的设计架构适用于任意数量的服务器,从少量本地网络系统到跨越数个数据中心,拓扑架构都是c/s模型,配置简单。
salt依赖包
python
zeromq
pyzmp
pycrypto
msgpack-python
yaml
jinja2
1.2 saltstack部署
1.2.1 确保主从两台机器能够正常通信
192.168.12.139 # master端
192.168.12.200 # minion端
1.2.2 修改两台机器的/etc/hosts强制解析(公司会搭建一个私有dns服务器)
1.2.3 关闭两台机器的防火墙策略
一个是selinux
另一个是防火墙firewalld
注意: 前三步非常重要,必须确认OK才可以继续往下操作!!!
注意: 前三步非常重要,必须确认OK才可以继续往下操作!!!
注意: 前三步非常重要,必须确认OK才可以继续往下操作!!!
1.2.4 下载安装master端和minion端
1 首先配置阿里云源
2 在master端安装
yum install -y salt-master
3 在minion端安装
yum install -y salt-minion
1.2.5 配置master端和minion端配置文件
1 master端配置文件
vim /etc/salt/master
加入以下内容
interface: 0.0.0.0
publish_port: 4505
user: root
worker_threads: 5
ret_port: 4506
pidfile: /var/run/salt-master.pid
log_file: /var/log/salt/master
2 minion端配置文件
vim /etc/salt/minion
写入以下配置
master: master
master_port: 4506
user: root
id: slave
acceptance_wait_time: 10
log_file: /var/log/salt/minion
1.2.6 分别启master端和minion端
1 在minion服务器上, 先启动minion端
systectl start salt-minion
2 在master服务器上
systemctl start salt-master
1.2.7 salt基本使用
salt-key -L 查看所有子节点服务器的key(密钥)
salt-key -a lijie 接收lijie服务器的key(密钥)
salt-key -A 接收所有服务器的key(密钥)
salt "*" test.ping 测试ping连通性
salt "*" test.echo "你好" 打印你好
salt "xiaochun" cmd.run "ifconfig" 获取xiaochun这台机器的所有IP信息
salt "*" cmd.run "yum install -y nginx" 获取所有被管理机器(已接收密钥的机器)的所有IP信息
salt-key -d zhengge 删除指定被管理端的key
salt-key -r zhengge 吊销被管理端的key
salt-key -f zhengge 获取被管理端的key
salt-call --local key.finger 在被管理端执行,可以获取自己的key
salt '*' test.fib 50 test.fib生成斐波那契数列
salt 'huafeng' grains.items 获取被管理端的所有信息
salt 'huafeng' grains.item host ipv4 获取指定信息
salt 'huafeng' grains.items --out=yaml 将从被管理端获取的信息通过yaml语法展示出来
salt 'huafeng' grains.items --out=json 将从被管理端获取的信息通过json语法展示出来
salt 'slave' pkg.install "nginx" 远程安装nginx
salt 'slave' pkg.remove "nginx" 远程卸载nginx
salt 'slave' pkg.version "nginx" 远程查看nginx版本
salt "*" service.start "nginx" 远程启动nginx服务(还有停止/重启/查看状态)
salt 'slave' grains.setval cpu_num 8 自定义grains数据(也可以在客户端修改/etc/salt/grains配置文件)
1.3 yaml语法
语法规则
大小写敏感
使用缩进表示层级关系
缩进时禁止tab键,只能空格
缩进的空格数不重要,相同层级的元素左侧对其即可
# 表示注释行
yaml支持的数据结构
对象: 键值对,也称作映射 mapping 哈希hashes 字典 dict 冒号表示 key: value key冒号后必须有
数组: 一组按次序排列的值,又称为序列sequence 列表list 短横线 - list1
纯量: 单个不可再分的值
1.4 Salt采集静态信息之Grains
1.5 Python API调用SaltStack
参照博客: https://www.cnblogs.com/tiger666/articles/10351693.html