新手上路saltstack常见命令与一些简单配置
2016-07-26 18:49
267 查看
1、salt 分组操作
修改master配置文件,在/etc/salt/master文件中添加如下配置
L@ 和G@ 分别表示minion和grain信息
配置之后不需要重启salt-master; 然后就可以通过group来执行命令了,例如:
表示对app_pick组执行命令
上面定义了三个group
第一个L@开通的是指定的以逗号分隔的多个minionId
第二个G@表示匹配grain信息,G@app:pack表示grains app项内有pack值
第三个and连接了两个G@表示grains app的值中既有pack也有pick
2、salt 帮助命令
master端-->salt命令帮助查
20000
看
minion端-->salt-call帮助查看
master端-->查看saltstack内置模块信息
3、信息查看
1、显示版本号:
2、显示依赖关系及版本号:
3、所有操作目标参数:
3.1、正则匹配的方式去管理
3.2、列表匹配
3.3、Grians匹配
3.4、组匹配
3.5、复合匹配
3.6、Pillar值匹配
3.7、CIDR匹配
4、文件的传送
5、显示当前活着的minion
6、显示未存活的minion
7、显示未存活的minion,并将其删除
8、显示当前up和down的minion
9、显示Master和所有minion的版本,可以通过此命令找到版本不一致的minion
10、获取系统静态信息
获取系统所有静态信息
[root@master ~]# salt 'slaver.test.com' grains.ls //列出所有的 grains 项目名字
[root@master ~]# salt 'slaver.test.com' grains.items //列出所有的 grains 项目名以及值
[root@master ~]# salt 'slaver.test.com' grains.item role env myname //列出多个
[root@master ~]# salt 'slaver.test.com' grains.get myname //列出单个
grains的信息并不是动态的,并不会时时变更,它只是在 minion 启动时收集到的。grains 也可以做配置管理。
下面我们来自定义 grains
1)客户端上配置
[root@slaver ~]# vim /etc/salt/grains //添加如下,注意冒号后有空格
或者
[root@slaver ~]# vim /etc/salt/minion //在最下面添加或更改
重启minion服务
[root@slaver ~]# /etc/init.d/salt-minion restart
:grains 在远程执行命令时很方便。我们可以按照 grains 的一些指标来操作。比如把所有的 web 服务器的 grains 的 role 设置为 nginx,那这样我们就可以批量对 nginx 的服务器进行操作了:
[root@master ~]# salt -G role:nginx cmd.run 'hostname'
[root@master ~]# salt -G os:CentOS cmd.run 'hostname'
注:grains的优先级
grains可以保持在minion端、通过master端下发等多个方式来分发。但不同的方法有不同的优先级的:
a. /etc/salt/grains
b. /etc/salt/minion
c./srv/salt/_grains/ master端_grains目录下
优先级顺序依次为存在在minion端/etc/salt/minion配置文件中的同名grains会覆盖/etc/salt/grains文件中的值,而通过master端_grains目录下grains文件下发的值可以会覆盖minion端的所有同名值。比较拗口,总之记得,通过master下发的grains优先级是最高的可,/etc/salt/minion次之,/etc/salt/grains最低(core grains不大懂,就不讨论了,这个比/etc/salt/grains还低)
获取主机名
获取IP地址
获取CPU核数
11、获取磁盘信息
salt '*' disk.usage
12、runas,定义执行此条命令的用户,使用哪个用户执行这条命令Salt \* cmd.run runas=nobody ‘touch /tmp/file’
13、
cwd 定义命令所在的目录,即工作目录,在哪个目录执行操作
如:
Salt \* cmd.run cwd=/opt ‘pwd’(默认为/root)
4、文件目录管理
1、文件管理
1)服务端配置
接着编辑之前的 top.sls 文件
[root@master ~]# vim /srv/salt/top.sls //修改为如下
新建 filetest.sls 文件
[root@master ~]# vim /srv/salt/filetest.sls
注意:第一行的 file-test 为自定的名字,表示该配置段的名字,可以在别的配置段中引用它(如果不写下面不写-name的话,默认为-name的内容);source指定文件从哪里拷贝,这里的
test 目录相当于是 /srv/salt/test 目录;name指定远程客户端要生成的文件。
新建所要测试的源文件
[root@master ~]# mkdir -p /srv/salt/test/123/
[root@master ~]# vim /srv/salt/test/123/1.txt
执行命令:
[root@master ~]# salt 'slaver.test.com' state.highstate --->state.higstate 就是从top.sls加载sls文件
或者 salt 'slaver.test.com' state.sls filetest ---> 指定执行具体某个sls文件
5、salt minion 调试信息
如果minion 是以
服务进程启动,执行命令salt-call state.highstate -l debug 可以看到错误信息,便于调试。
minion 还可以直接在前台以debug 模式运行:salt-minion -l debug
6、network模块(返回被控主机网络信息)
# salt '*' network.ip_addrs
# salt '*' network.interfaces
7、查看salt-merast启动过程
修改salt-master日志级别为debug,默认为warning
默认日志文件存在/var/log/salt,重启后到/var/log/salt下查看master日志文件
8、更改master主机
1)先把原来的master主机/etc/salt/pki
目录打包 tar -zcf pki.tar.gz pki
2)把打包好的pki.tar.gz解压到新的master主机/etc/salt/目录下
3)在原来的master主机上批量修改/etc/hosts
salt 192.168.0.104(旧)内容,salt '*' cmd.run 'sed -i "s/192.168.0.104/192.168.0.105/" /etc/hosts'
然后重启所有minion端,salt
'*' service.restart salt-minion
(注:salt minion
默认salt 为mater端,默认id为hostname)
4)到新的master
192.168.0.105上端测试是否成功
9、saltmaster returner
1、将master端的返回结果存储到syslog
在master端执行
salt '*' cmd.run 'df -h' --return syslog
到minion端查看
tail /var/log/messages
10、salt执行脚本
在/srv/salt目录下
mkdir
-p etc/script
cd
ect/script
echo
>> test.sh << EOF
#!/bin/bash
echo
"hello world" >/tmp/salt_script_test
EOF
执行命令测试
salt
'*' cmd.script salt://etc/script/test.sh
11、minion 客户端主动同master端同步配置
在客户端执行 salt-call state.sls
xxx
命令 模块
要同步的sls文件
执行此命令会在master端自动搜索xxx.sls文件,然后执行里面的内容
12、pillar自定义内容
1) 把 /etc/salt/master下面的内容注释去掉
pillar_root:
base:
- /srv/pillar
pillar_opts: False 改为 pillar_opts: True
然后重启master端
/etc/init.d/salt-master restart
2)mkdir /srv/pillar
3)cd /srv/pillar
4)touch package.sls top.sls
5)cat packages.sls
{% if grains['os']=='OEL' %}
apache: httpd
owner: sjw
{% elif grains['os']=='Windows %}
apache: apache
owner: administrator
{% endif %}
6)cat packages.sls
base:
'*':
- packages
7)salt '*' saltutil.refresh_pillar
8)salt '*' pillar.get apache
或者
salt '*' pillar.get owner
可以看到刚定义的pillar变量对应的值
13、查看master执行过的命令(默认保存24小时)
salt-run jobs.list_jobs
salt-run jobs.lookup_jid xxx
xxx为jid号
14、salt 分发文件到minion
方法一:salt '*' cp.get_file salt://xxx /tmp/
命令 目标 模块 源文件 目标文件
注:这能复制在环境目录/srv/salt下的文件
方法二:salt-cp
'*' /opt/test.txt /tmp/
命令
目标 源文件 目标文件
注:源文件可以在任意目录下
15、master端用命令给客户端安装软件
salt '*' pkg.install tree
注:要minion 端yum可用
16、master端重启minion端服务
salt '*' service.start crond
17、salt 执行命令时可加-v参数查看job id
例如:salt '*' test.ping -v
会返回job id
18、查看正在执行的job
在master端执行salt '*' cmd.run 'sleep 60'
然后在执行salt '*' saltutil.runnig 即可查看正在执行的job
也可以到minion端默认目录为/var/cache/salt/minion/proc下ls查看正在执行的job,job
执行完后就会被删除
19、salt-ssh 命令使用
配置/etc/salt/roster文件
例如:
client1:
host: 192.168.0.104
user: root
passwd: 123456
测试是否成功 salt-ssh -i '*' test.ping (首次执行加-i 接受host key)
20、schedule用法
[root@master pillar]#pwd
/srv/pillar
[root@master pillar]# cat cron.sls
schedule:
helloworld:
function: cmd.run
args:
- date >> /tmp/test.log
minutes: 1
[root@master pillar]# cat top.sls
base:
'*':
- cron
[root@master pillar]#
salt '*' saltutil.refresh_pillar
然后去客户端/tem/查看
修改master配置文件,在/etc/salt/master文件中添加如下配置
nodegroups: app_pick:'L@YTJ159-93,YTJ159-92' app_pack:'L@YTJ159-91,YTJ159-92'
L@ 和G@ 分别表示minion和grain信息
配置之后不需要重启salt-master; 然后就可以通过group来执行命令了,例如:
salt -N app_pick cmd.run ifconfig
表示对app_pick组执行命令
nodegroups: app_pick:'L@YTJ159-93,YTJ159-92' app_pack:'G@app:pack' app_pick_and_pack:'G@app:pack and G@app:pick'
上面定义了三个group
第一个L@开通的是指定的以逗号分隔的多个minionId
第二个G@表示匹配grain信息,G@app:pack表示grains app项内有pack值
第三个and连接了两个G@表示grains app的值中既有pack也有pick
2、salt 帮助命令
master端-->salt命令帮助查
20000
看
minion端-->salt-call帮助查看
master端-->查看saltstack内置模块信息
salt
'salt02'
sys.list_modules
salt
'salt02'
sys.list_functions
salt
'salt02'
sys.list_functions status
salt
'salt02'
sys.doc
salt
'salt02'
sys.doc status
1 | salt '*' sys.doc | grep "salt '\*' cp" 只看模块方法 |
1、显示版本号:
1 2 | [root@salt01 salt] #salt --version salt 2015.5.8 (Lithium) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | [root@salt01 salt] #salt --versions-report Salt: 2015.5.8 Python: 2.6.6 (r266:84292, Jul 232015, 15:22:56) Jinja2: 2.2.1 M2Crypto: 0.20.2 msgpack-python: 0.4.6 msgpack-pure: Not Installed pycrypto: 2.0.1 libnacl: Not Installed PyYAML: 3.10 ioflo: Not Installed PyZMQ: 14.3.1 RAET: Not Installed ZMQ: 3.2.5 Mako: Not Installed Tornado: Not Installed timelib: Not Installed dateutil: Not Installed |
3.1、正则匹配的方式去管理
1 2 3 4 5 | [root@salt01 init] #salt -E 'salt*' test.ping salt03: True salt02: True |
1 2 3 4 5 | [root@salt01 init] #salt -L 'salt02,salt03' test.ping salt02: True salt03: True |
1 2 3 4 5 | [root@salt01 init] #salt -G 'os:CentOS' test.ping salt03: True salt02: True |
1 2 3 4 5 | SaltStack@Master: salt -N groups test . ping Minion: True Minion1: True |
1 2 3 4 5 6 | SaltStack@Master: salt -C 'G@os:MacOS or L@Minion1' test . ping Minion: True Minion1: True 提示:os:MacOS or L@Minion1是一个复合组合,支持使用and和or关联多个条件。 |
1 2 3 4 5 | SaltStack@Master: salt -I 'key:value' test . ping Minion: True Minion1: True |
1 2 3 4 5 | SaltStack@Master: salt -S '192.168.1.0/24' test . ping Minion: True Minion1: True |
1 2 | salt '*' cp .get_file salt: //apache-tomcat-7 .0.41. tar .gz /home/jack/apache-tomcat-7 .0.41. tar .gz #将salt目录下apache-tomcat-7.0.41.tar.gz复制到所有minion的/home/jack目录下 |
1 2 3 | [root@salt01 salt] #salt-run manage.up - salt02 - salt03 |
1 | salt-run manage.down |
1 | salt-run manage.downremovekeys=True |
1 | salt-run manage.status |
1 2 3 4 5 6 7 8 9 | [root@salt01 init] #salt-run manage.versions Master: 2015.5.8 Up to date : ---------- salt02: 2015.5.8 salt03: 2015.5.8 |
10、获取系统静态信息
获取系统所有静态信息
[root@master ~]# salt 'slaver.test.com' grains.ls //列出所有的 grains 项目名字
[root@master ~]# salt 'slaver.test.com' grains.items //列出所有的 grains 项目名以及值
[root@master ~]# salt 'slaver.test.com' grains.item role env myname //列出多个
[root@master ~]# salt 'slaver.test.com' grains.get myname //列出单个
grains的信息并不是动态的,并不会时时变更,它只是在 minion 启动时收集到的。grains 也可以做配置管理。
下面我们来自定义 grains
1)客户端上配置
[root@slaver ~]# vim /etc/salt/grains //添加如下,注意冒号后有空格
role: nginx env: test myname: tpp |
[root@slaver ~]# vim /etc/salt/minion //在最下面添加或更改
grains: role: - nginx env: - test myname: - tpp |
[root@slaver ~]# /etc/init.d/salt-minion restart
:grains 在远程执行命令时很方便。我们可以按照 grains 的一些指标来操作。比如把所有的 web 服务器的 grains 的 role 设置为 nginx,那这样我们就可以批量对 nginx 的服务器进行操作了:
[root@master ~]# salt -G role:nginx cmd.run 'hostname'
[root@master ~]# salt -G os:CentOS cmd.run 'hostname'
注:grains的优先级
grains可以保持在minion端、通过master端下发等多个方式来分发。但不同的方法有不同的优先级的:
a. /etc/salt/grains
b. /etc/salt/minion
c./srv/salt/_grains/ master端_grains目录下
优先级顺序依次为存在在minion端/etc/salt/minion配置文件中的同名grains会覆盖/etc/salt/grains文件中的值,而通过master端_grains目录下grains文件下发的值可以会覆盖minion端的所有同名值。比较拗口,总之记得,通过master下发的grains优先级是最高的可,/etc/salt/minion次之,/etc/salt/grains最低(core grains不大懂,就不讨论了,这个比/etc/salt/grains还低)
获取主机名
1 | salt '*' grains.item host |
1 | salt '*' grains.item ipv4 |
1 | salt '*' grains.item num_cpus |
salt '*' disk.usage
12、runas,定义执行此条命令的用户,使用哪个用户执行这条命令Salt \* cmd.run runas=nobody ‘touch /tmp/file’
13、
cwd 定义命令所在的目录,即工作目录,在哪个目录执行操作
如:
Salt \* cmd.run cwd=/opt ‘pwd’(默认为/root)
4、文件目录管理
1、文件管理
1)服务端配置
接着编辑之前的 top.sls 文件
[root@master ~]# vim /srv/salt/top.sls //修改为如下
base: 'slaver.test.com': - filetest |
[root@master ~]# vim /srv/salt/filetest.sls
file-test: file.managed: - name: /tmp/filetest.txt - source: salt://test/123/1.txt - user: root - group: root - mode: 644 |
test 目录相当于是 /srv/salt/test 目录;name指定远程客户端要生成的文件。
新建所要测试的源文件
[root@master ~]# mkdir -p /srv/salt/test/123/
[root@master ~]# vim /srv/salt/test/123/1.txt
msiyuetian.blog.51cto.com |
[root@master ~]# salt 'slaver.test.com' state.highstate --->state.higstate 就是从top.sls加载sls文件
或者 salt 'slaver.test.com' state.sls filetest ---> 指定执行具体某个sls文件
5、salt minion 调试信息
如果minion 是以
服务进程启动,执行命令salt-call state.highstate -l debug 可以看到错误信息,便于调试。
minion 还可以直接在前台以debug 模式运行:salt-minion -l debug
6、network模块(返回被控主机网络信息)
# salt '*' network.ip_addrs
# salt '*' network.interfaces
7、查看salt-merast启动过程
修改salt-master日志级别为debug,默认为warning
默认日志文件存在/var/log/salt,重启后到/var/log/salt下查看master日志文件
8、更改master主机
1)先把原来的master主机/etc/salt/pki
目录打包 tar -zcf pki.tar.gz pki
2)把打包好的pki.tar.gz解压到新的master主机/etc/salt/目录下
3)在原来的master主机上批量修改/etc/hosts
salt 192.168.0.104(旧)内容,salt '*' cmd.run 'sed -i "s/192.168.0.104/192.168.0.105/" /etc/hosts'
然后重启所有minion端,salt
'*' service.restart salt-minion
(注:salt minion
默认salt 为mater端,默认id为hostname)
4)到新的master
192.168.0.105上端测试是否成功
9、saltmaster returner
1、将master端的返回结果存储到syslog
在master端执行
salt '*' cmd.run 'df -h' --return syslog
到minion端查看
tail /var/log/messages
10、salt执行脚本
在/srv/salt目录下
mkdir
-p etc/script
cd
ect/script
echo
>> test.sh << EOF
#!/bin/bash
echo
"hello world" >/tmp/salt_script_test
EOF
执行命令测试
salt
'*' cmd.script salt://etc/script/test.sh
11、minion 客户端主动同master端同步配置
在客户端执行 salt-call state.sls
xxx
命令 模块
要同步的sls文件
执行此命令会在master端自动搜索xxx.sls文件,然后执行里面的内容
12、pillar自定义内容
1) 把 /etc/salt/master下面的内容注释去掉
pillar_root:
base:
- /srv/pillar
pillar_opts: False 改为 pillar_opts: True
然后重启master端
/etc/init.d/salt-master restart
2)mkdir /srv/pillar
3)cd /srv/pillar
4)touch package.sls top.sls
5)cat packages.sls
{% if grains['os']=='OEL' %}
apache: httpd
owner: sjw
{% elif grains['os']=='Windows %}
apache: apache
owner: administrator
{% endif %}
6)cat packages.sls
base:
'*':
- packages
7)salt '*' saltutil.refresh_pillar
8)salt '*' pillar.get apache
或者
salt '*' pillar.get owner
可以看到刚定义的pillar变量对应的值
13、查看master执行过的命令(默认保存24小时)
salt-run jobs.list_jobs
salt-run jobs.lookup_jid xxx
xxx为jid号
14、salt 分发文件到minion
方法一:salt '*' cp.get_file salt://xxx /tmp/
命令 目标 模块 源文件 目标文件
注:这能复制在环境目录/srv/salt下的文件
方法二:salt-cp
'*' /opt/test.txt /tmp/
命令
目标 源文件 目标文件
注:源文件可以在任意目录下
15、master端用命令给客户端安装软件
salt '*' pkg.install tree
注:要minion 端yum可用
16、master端重启minion端服务
salt '*' service.start crond
17、salt 执行命令时可加-v参数查看job id
例如:salt '*' test.ping -v
会返回job id
18、查看正在执行的job
在master端执行salt '*' cmd.run 'sleep 60'
然后在执行salt '*' saltutil.runnig 即可查看正在执行的job
也可以到minion端默认目录为/var/cache/salt/minion/proc下ls查看正在执行的job,job
执行完后就会被删除
19、salt-ssh 命令使用
配置/etc/salt/roster文件
例如:
client1:
host: 192.168.0.104
user: root
passwd: 123456
测试是否成功 salt-ssh -i '*' test.ping (首次执行加-i 接受host key)
20、schedule用法
[root@master pillar]#pwd
/srv/pillar
[root@master pillar]# cat cron.sls
schedule:
helloworld:
function: cmd.run
args:
- date >> /tmp/test.log
minutes: 1
[root@master pillar]# cat top.sls
base:
'*':
- cron
[root@master pillar]#
salt '*' saltutil.refresh_pillar
然后去客户端/tem/查看
相关文章推荐
- iOS开发UI篇—程序启动原理和UIApplication
- 9.2.1 Renaming Retrieved Columns
- OpenCV混合高斯背景建模
- hdu_5753_Permutation Bo(找规律)
- 设计模式-工厂模式
- unity解析Json字符串案例
- 使用jsBridge和原生IOS、Android交互
- jquery基本用法二
- android—BroadcastReceiver 中的Context理解
- php坑
- 交换机学习笔记
- hdu5753找规律,期望
- AR初体验:宣传G20
- JSON
- Spark分析笔记
- 深度学习(二)theano环境搭建
- Android Studio 使用技巧(每日一更)
- 程序包org.apache.http不存在,解决方式
- CentOs环境下安装Nginx
- Ubuntu系统下配置Hadoop2.7.1