saltstack
saltstack自动化运维工具,以下是本人对于它的一些操作记录
1.服务安装
master服务端安装:
|
|
master配置文件
|
|
minion客户端安装:
|
|
minion配置文件:
|
|
2.配置认证
master服务端操作:
- -a 接受一个minion-key
- -A 接受所有minion-key
- -L 查看所有minion
- -d 删除一个minion-key
- -D 删除所有minion-key
|
|
模块:
test.ping:可以检查通讯是否正常
cmd.run: 可以执行linux命令,如后面跟’df -h’查看磁盘情况
3.grains 和 pillar
1、grains
grains 是在 minion(客户端)启动时收集到的一些信息,比如操作系统类型、网卡ip等。
在master上可以查询设备的grains信息
grains的信息并不是动态的,并不会时时变更,它只是在 minion 启动时收集到的,需要在minion中配置。
需要重启minion服务才能生效
列出所有的信息:
列出指定的信息:
当我们对minion分类完毕后,我们能根据一些指标进行操作,比如对所有role为nginx执行批量操作:
2.pillar
pillar 是在maseter(服务端)定义的,针对minion定义一些信息,对于一些比较重要的信息我们可以存在pillar中。
在master上可以查询设备的pillar信息
服务端配置pillar信息:
需要重启master服务才能生效
在重启完后,我们需要通过刷新pillar来获取最新的状态:
pillar同样可以根据分类进行匹配对象:
4.状态文件编写
1.配置
配置master确定状态文件目录:
|
|
其中:base、dev(开发环境)、test(测试环境)、prod(生产环境)
编写配置文件:
|
|
配置文件下发管理
- name:文件下发在minion位置
- source:文件获取的位置
- user:下发用户
- group:下发用户组
- mode:权限1234567conf_file:file.managed:- name: /etc/test.conf- source: salt://test/file/test.conf- user: root- group: root- mode: 755
yum仓库的配置:
- name:仓库名
- humanname:介绍
- baseurl:下载地址
- gpgcheck:gpg签名验证
- enabled:是否启用
- order:优先级比require和watch低,有order指定的state比没有order指定的优先级高12345678910{% if grains.os == 'CentOS' %}repo_install:pkgrepo.managed:- name: rhel-test- humanname: is a test repo- baseurl: http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os- gpgcheck: 0- enabled: 1- order: 3{% endif %}
文件内容替换:
- name:文件名
- pattern:需要替换的内容,可以正则匹配
- repl:替换的内容123456selinux:file.replace:- name: /etc/selinux/config- pattern: ^SELINUX=\w+- repl: SELINUX=disabled- order: 1
安装包:
第一种:
- pkgs:包名
- only_upgrade:是否更新
第二种:
包名在最上面
- version:指定版本
- name:服务名称
- enabled:是否开机启动12345678910111213basepkgs:pkg.installed:- pkgs:- iptraf- tree- only_upgrade: Truehttpd:pkg.installed:- version: 1.7.12.4-1.el6.rfxservice.running:- name: http- enabled: True
执行shell命令:
- name:命令名
- user:执行用户
- unless:当返回False时候执行上面操作;onlyif,反之1234567{% for ser in ['crond','rsyslog','network','salt-minion','sysstat','atd'] %}chkon-{{ser}}:cmd.run:- name: 'chkconfig {{ser}} on'- user: root- unless: 'chkconfig --list {{ser}}|grep :on'{% endfor%}
2.执行状态文件
master服务端执行:
minion客户端上执行: