概览:
一.saltstack给minion安装httpd
在master操作,给其他远程的minion安装httpd:
#编辑master配置文件
vim /etc/salt/master
#把下面几行的注释去掉,注意空格缩进,要不然重启master会失败。
file_roots:
base:
- /srv/salt/
#重启salt-master
systemctl restart salt-master
#创建/srv/salt目录
mkdir /srv/salt
cd /srv/salt/
#创建一个top.sls,给当前目录salt一个指引识别其他文件
vim top.sls
#添加
base:
'*':
- httpd
#第三行表示去找当前目录的httpd.sls文件
#创建httpd.sls文件
vim httpd.sls
#添加
httpd-service:
pkg.installed:
- names:
- httpd
- httpd-devel
service.running:
- name: httpd
- enable: True
//httpd-service是id的名字,自定义的。pkg.installed是一个安装模块,相当于yum install。它会安装names下面的包的名字。service.running是一个启动服务的模块,enable为True表示启动。
#执行下面命令给其他minion安装httpd:
#state.highstate 会自动安装/src/salt/目录下配置好的文件
salt 'ligen_07' state.highstate //给ligen_07 的minion安装httpd
二.配置管理
- 配置文件管理:
假如minion的有些文件需要变更,master上做一个模板传给minion
cd /srv/salt/
#创建一个test.sls,文件名可以自定义,用来配置要发送的文件
vim test.sls
#添加
file_test: //名字可以自定义
file.managed: //salt的模块
- name: /tmp/ddd.txt //拷贝到minion的路径
- source: salt://test/123/1.txt //master端源文件,salt://等价于salt:/src/salt/
- user: root //定义文件用户
- group: root //定义用户组
- mode: 600 //定义权限
因为上面的源文件在/src/salt/test/123/1.txt,我没有这几个目录,先创建一下:
mkdir -p test/123
vim test/123/1.txt //随便写点内容
创建top.sls文件,salt默认会读取top.sls:
base:
'*':
- test
刷新salt:
salt 'ligen_07' state.highstate
- 配置目录管理
cd /srv/salt/
vim test_dir.sls
#添加
file_dir:
file.recurse:
- name: /tmp/testdir
- source: salt://test/123
- user: root
- file_mode: 640
- dir_mode: 750
- mkdir: True
- clean: True
top.sls文件:
base:
'*':
- test_dir
- 配置管理远程命令
过程和前面类似
在master端执行shell在minion端生效:
vim shell_test.sls
shell_test:
cmd.script:
- source: salt://test/1.sh
- user: root
#创建shell脚本
vim test/1.sh
#!/bin/bash
touch /tmp/2222.txt
vim top.sls
base:
'*':
- shell_test
salt 'ligen_07' state.highstate
- 配置任务管理计划
同样的先配置一个cron的配置文件:
vim cron.sls
cron_test:
cron.present:
- name: /bin/bash /tmp/111.txt
- user: root
- minute: '*'
- hour: 20
- daymonth: '*'
- month: '*'
- dayweek: '*'
然后更改top.sls
vim top.sls
base:
'*':
- test_dir
- shell_test
- cron
刷新salt:
salt 'ligen_07' state.highstate
在ligen_07上查看:
crontab -l
* * * * * /bin/bash /usr/local/sbin/rm_minion.sh
# Lines below here are managed by Salt, do not edit
# SALT_CRON_IDENTIFIER:/bin/bash /tmp/111.txt
* 20 * * * /bin/bash /tmp/111.txt
删除crontab,不要在minion上手动删除,也是在master上
编辑原来的cron.sls文件:
vim cron.sls
更改为:
cron_test:
cron.absent:
- name: /bin/touch /tmp/111.txt
- 其他命令
#拷贝
salt '*' cp.get_dir salt://test/conf /tmp/
#显示存活的minion
salt-run manage.up
#salt '*' cmd.script salt://test/1.sh 命令行下执行master上的shell脚本