使用saltstack给minion自动化安装httpd及配置管理

概览:

一.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脚本
发布了108 篇原创文章 · 获赞 26 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_37369726/article/details/103349455