用途
Saltstack目前最主要的三大主要功能
· 远程执行
· 配置管理
· 云管理
实际
通过Saltstack批量执行系统命令,包括系统重启,查看系统负载,添加/删除用户等等
salt
Saltstack的三种运行方式
· Local
· Master/Minion
· Salt SSH
Saltstack最传统的运行方式还是C/S模式,需要在被管理节点上安装Minion客户端;其实Saltstack也支持SSH方式,无需安装Agent,通过SSH实现管理
复习上次的东西
1.想查看saltstack具体进程,可以安装一个python-setproctitle库
2.salt-key -a saltstack-node1.lichengbing.com # -a认证参数
3.远程执行
salt '*' cmd.run 'w'
远程命令执行(cmd模块),格式:salt 'client配置的id' 模块.方法 '命令参数' (其中'*'表示所有的client)
4.分组
nodegroups:
mysql: 'cm1'
5.salt key相关命令总结
salt-key list 查看已经认证或未认证的客户端id,Accepted Keys为已认证清单,Unaccepted Keys为未认证的清单,Rejected Keys为拒绝的清单。
salt-key -a id 认证单个主机id证书请求。
salt-key -A 认证所有主机id证书请求。
salt-key -d id 删除单个主机id证书。
salt-key -D 删除所有认证主机id证书。
6.远程批量传输文件(salt-cp命令)
salt-cp '*' /mnt/aa /opt/
7.操作目标
-E:--pcre 通过正则表达式进行匹配
salt -E '^minion-192-168*' test.ping
-L:--list 以主机id名列表的形式进行过滤,格式与Python的列表相似,即不同主机id名称使用逗号分隔
salt -L 'minion-192-168-1-102,minion-192-168-1-118' grains.item osfullname
-G:--grain 根据被控主机的grains信息(grains是saltstack重要组件之一,重要作用是收集被控主机的基本系统信息)进行匹配过滤,格式为'<grain value>:<glob expression>'
salt -G 'osrelease:6.8' cmd.run 'python -V'
-I:--pillar 根据被控主机的pillar(作用是定义与被控主机相关的任何数据,定义好的数据可以被其他组件使用)信息进行过滤匹配,格式为'对象名称:对象值',比如过滤所有具备'apache:httpd' pillar值的主机。
salt -I 'nginx:root:/data' test.ping
-N:--nodegroup 根据主控端master配置文件中的分组名称进行过滤。
web1group: 'L@minion-192-168-1-102,minion-192-168-1-118' //前面空两格,冒号后面空一格
web2group: 'L@minion-192-168-1-102'
其中:
L@ 表示后面的主机id格式为列表,即主机id以逗号隔开;
G@ 表示以grain格式描述;
S@ 表示以ip子网或地址格式描述
f)-C:--compound 根据条件运算符not、and、or去匹配不同规则的主机信息
salt -C 'E@^minion-192-168* and G@os:Centos' test.ping
g)-S:--ipcidr 根据被控主机的ip地址或ip子网进行匹配
salt -S 192.168.0.0/16 test.ping
Saltstack常用模块及API
https://docs.saltstack.com/en/latest/ref/modules/all/index.html
salt '*' sys.list_modules
import salt.client
client = salt.client.LocalClient()
ret = client.cmd('*','test.ping')
print ret
a)Archive模块
salt '*' archive.gunzip /tmp/wangshibo.gz
解压默认放到被控制机的当前用户家目录(即/root)路径下
salt '*' archive.tar zxf /mnt/nginx-1.9.7.tar.gz
将被控制机的/mnt/huihui打包到/opt下的huihui.tar.bz2
[root@linux-node1 ~]# salt '*' archive.tar jcf /opt/test.huihui.bz2 /mnt/huihui
自动化运维Saltstack系列(二)之远程执行和常用模块
saltstack自带模块参考:https://www.unixhot.com/docs/saltstack/contents.html
sys.doc = man
salt 'saltstack-node1*' sys.list_functions cmd
salt 'saltstack-node1*' sys.doc cmd.run
将master file_roots下的目录拷贝到minion
salt 'saltstack-node1*' cp.get_dir salt://base/ minion/dest
salt 'saltstack-node2*' cp.get_url http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm /tmp/1
salt '*' cron.raw_cron root
salt '*' cron.set_job root '*' '*' '*' '*' 1 /usr/local/weekly
salt '*' cron.rm_job root '*' '*' '*' '*' 1 /usr/local/weekly
salt '*' file.chown /etc/passwd root root
salt '*' file.directory_exists /etc
salt '*' file.stats /etc/passwd
salt '*' file.get_mode /etc/passwd
salt '*' file.mkdir /opt/test
salt '*' file.remove /opt/test
salt '*' file.touch /tmp/test.txt
salt '*' file.append /tmp/test.txt "10000"
salt '*' file.sed /tmp/test.txt "10000" "1"
salt '*' file.get_sum /etc/passwd md5
有文件,文件夹,定时任务,拷贝,网络,pkg模块,service模块
还有以下
user(系统用户模块)
group(系统组模块)
partition(系统分区模块)
puppet(puppet管理模块)
system(系统重启、关机模块)
timezone(时区管理模块)
nginx(Nginx管理模块)
iptables(被控主机iptables支持模块)
mount(文件系统挂载模块) 等等...
自定义模块
vim /etc/salt/master
file_roots:
base:
- /srv/salt/base
mkdir /srv/salt/base/_modules
vim my_disk.py
def list():
cmd = 'df -h'
ret = __salt__['cmd.run'](cmd)
return ret
salt '*' saltutil.sync_modules
salt '*' my_disk.list
本文转自 liqius 51CTO博客,原文链接:http://blog.51cto.com/szgb17/1914622,如需转载请自行联系原作者