|
一.远程命令执行
1.1测试联通性
salt '*' test.ping
1.2# 查询主机运行了多长时间
salt '*' cmd.run "uptime"
1.3 # 批量重启服务
salt '*' cmd.run "service httpd restart"
1.4测试多个单独客户端
salt -L 'web202,db203' test.ping
1.5主机分组测试
需要在master上面做配置修改。
vim /etc/salt/master
增加下面分组
nodegroups:
web: 'web202' #web为组名
db: 'db203' #db为组名
service salt-master restart #重新启动master让添加的配置生效
1.6测试web分组下所有机器联通性
salt -N web test.ping
1.7测试db分组下所有机器联通性
salt -N db test.ping
二.配置管理
2.1批量安装配置测试
在master服务器端:
vim /etc/salt/master #添加里面内容
file_roots:
base:
- /srv/salt #基础路径
service salt-master restart #重新启动master让添加的配置生效
2.2#需要自己创建/srv/salt目录
mkdir -p /srv/salt #salt基础路径
mkdir /srv/salt/nginx #nginx配置路径
mkdir /srv/salt/mysql #mysql配置路径
mkdir /srv/salt/conf_sls #nginx,mysql,packs的sls文件
mkdir /srv/salt/software #软件包存放路径
mkdir /srv/salt/scripts #脚本文件存放路径
mkdir /srv/salt/_modules #模板文件存放路径
2.3#为客户端安装vsftpd这个软件包,通过yum安装。
vim /srv/salt/conf_sls/packs.sls
vsftpd:
pkg:
- installed #卸载是- removed
service: #如果带有service,running表示安装的包需要自动运行
- running
- enable: True
修改top.sls为基础配置文件
vim /srv/salt/top.sls
base:
'*': #'*'表示所有监控客户端
- conf_sls.packs #表示调用/srv/salt/conf_sls/packs.sls文件
#在master服务端上面执行发布到客户端
salt '*' state.highstate
2.4分发文件及修改文件权限
vim /srv/salt/conf_sls/nginx.sls
/usr/local/nginx/conf/nginx.conf:
file:
- managed
- source: salt://nginx/nginx.conf
- mode: 777
- owner: root
- group: root
修改top.sls为基础配置文件
vim /srv/salt/top.sls
base:
'*': #'*'表示所有监控客户端
- conf_sls.nginx #表示调用/srv/salt/conf_sls/nginx.sls文件
#在master服务端上面执行发布到web组客户端
salt -N web state.highstate
2.5分发单个脚本文件到客户端
salt '*' cp.get_file salt://scripts/hello.sh /root/scripts/hello.sh makedirs=True
#把/srv/salt/scripts/hello.sh文件拷贝到所有监控客户端的/root/scripts/目录下,如果不存在此目录,将自动建此目录
salt '*' cmd.run 'sh /root/scripts/hello.sh' #执行拷贝的hello.sh脚本文件
2.6分发目录到客户端
salt '*' cp.get_dir salt://software /root gzip=5
2.7分发crontab到客户端
vim /srv/salt/scripts/cron.sh
#!/bin/bash
/usr/sbin/ntpdate ntp.api.bz
chmod u+x /srv/salt/scripts/cron.sh
vim /srv/salt/conf_sls/crontab.sls
/root/scripts/cron.sh:
file.managed:
- source: salt://scripts/cron.sh
- mode: 700
cron.present:
- minute: '5'
- hour: '*/2'
修改top.sls为基础配置文件
vim /srv/salt/top.sls
base:
'*': #'*'表示所有监控客户端
- conf_sls.crontab #表示调用/srv/salt/conf_sls/crontab.sls文件
salt '*' state.highstate
2.8为客户端添加系统用户
vim /srv/salt/conf_sls/useradd.sls
test_user: #添加的用户名
user.present: #次状态为添加用户
- fullname: test #全名
- shell: /bin/bash #shell环境
- password: '$1$NdyLqU0s$yxa4TI//RmBmQ/hQwE0NR1' #默认密码是123456
- home: /home/test_user #用户家目录
- uid: 10001 #用户id
- gid: 10001 #组id
- groups: #所包含为root和test_user组
- root
- test_user
- require:
- group: test_user
group.present: #次状态为添加组
- gid: 10001 #组id
修改top.sls为基础配置文件
vim /srv/salt/top.sls
base:
'*': #'*'表示所有监控客户端
- conf_sls.useradd #表示调用/srv/salt/conf_sls/useradd.sls文件
salt '*' state.highstate
2.9为客户端删除系统用户
vim /srv/salt/conf_sls/userdel.sls
test_user:
user.absent:
- purge: True #设置清除用户的文件(家目录)
- force: True #如果用户当前已登录,则absent state会失败. 设置force选项为True时,就算用户当前处于登录状态也会删除本用户.
修改top.sls为基础配置文件
vim /srv/salt/top.sls
base:
'*': #'*'表示所有监控客户端
- conf_sls.userdel #表示调用/srv/salt/conf_sls/userdel.sls文件
salt '*' state.highstate
3.1为客户端删除系统用户组
vim /srv/salt/conf_sls/groupdel.sls
test_user:
group.absent
vim /srv/salt/top.sls
base:
'*': #'*'表示所有监控客户端
- conf_sls.group #表示调用/srv/salt/conf_sls/group.sls文件
salt '*' state.highstate
3.2自定义模板
cd /srv/salt/_modules #存放模板文件
vim check_web.py
#!usr/bin/python
import os
num=int(os.popen("netstat -tunlp|grep nginx|wc -l").readline().strip())
def status():
if num==1:
return "this is nginx server!!!"
else:
return "this is not nginx server!!!"
salt '*' saltutil.sync_all #同步到所有客户端
salt '*' check_web.status #调用自定义模板方法
3.2目录显示
[root@lnmp conf_sls]# tree /srv/salt/
/srv/salt/
|-- _modules
| `-- check_web.py
|-- conf_sls
| |-- crontab.sls
| |-- groupdel.sls
| |-- nginx.sls
| |-- packs.sls
| |-- useradd.sls
| `-- userdel.sls
|-- mysql
|-- nginx
| `-- nginx.conf
|-- scripts
| `-- cron.sh
|-- software
| `-- Django-1.5.8.tar.gz
`-- top.sls |
|
|