salt-modules讲解
saltstack 常用模块介绍
file模块
被控主机文件常见操作,包括文件读写、权限、查找、校验等
salt '*' file.get_sum /etc/resolv.conf md5
salt '*' file.stats /etc/resolv.conf
file.managed-文件管理
先来一个实例
1 | /etc/http/conf/http.conf: |
source-指定源文件
source参数可以作为一个列表指定。如果这样做的话,那么会使用第一个匹配到的文件。这个特性允许你如果请求的文件不存在于salt文件服务器时有一个默认的文件回溯。
1 | /etc/foo.conf: |
source 参数同样可以指定一个在另一个Salt环境的文件。在这个例子中 foo.conf 将会使用 dev 环境中的来替代。
1 | /etc/foo.conf: |
file.directory-目录管理
1 | /srv/stuff/substuf: |
使用 dir_mode 和 file_mode,同时指定目录和文件的权限。
1 | /srv/stuff/substuf: |
file.recurse - 递归目录
1 | /opt/code/flask: |
file.synlink - 创建快捷方式
1 | /etc/grub.conf: |
file.append - 文件后面追加内容
1 | /etc/motd: |
官方帮助文档:https://docs.saltstack.com/en/latest/ref/states/all/salt.states.file.html
cmd模块
实现远程的命令行调用执行
run-执行命令
salt '*' cmd.run 'ss -lntup'
cmd模块执行windows命令
salt '*' cmd.run 'dir' shell=powershell
1 | getpip: |
script-执行脚本
1 | salt://scripts/bar.sh: |
pkg包管理模块
installed - 安装包
1 | php.packages: |
也可以指定安装包的位置
1 | mypkgs: |
命令行的方式安装包
salt '*' pkg.install nmap
salt '*' pkg.file_list nmap
service 服务模块
running 配置服务启动
1 | redis: |
reload
和watch
一起使用,watch
监控到服务的变化,reload
会自动重载服务。
dead 停止服务
1 | redis: |
确定redis服务已经停止,并加入开机自启动。
shell端执行命令
使sshd
加入开机自启动salt '*' service.enable sshd
使sshd
加入开机自启动 salt '*' service.disable sshd
查看sshd
的状态salt '*' service.status sshd
停止sshd
服务salt '*' service.stop sshd
启动sshd
服务salt '*' service.start sshd
重启sshd
服务 salt '*' service.restart sshd
重载sshd
服务salt '*' service.reload sshd
useradd用户模块
absent - 删除用户
1 | nginx: |
purge: 清楚用户家目录
force: 即使用户登录,也要删除用户(默认用户登录时,清除会失败)。
present - 创建用户
一、添加单个用户:
生成密码
1 | openssl passwd -1 -salt 'nginx' |
1 | nginx: |
创建一个不能登录,没有家目录的用户
1 | nginx: |
gid_from_name: 如果设置为_True_,默认的组id将自动设置为和本用户同名的组id
groups: 分配给该用户的组列表(a list of groups). 如果组在minion上不存在,则本state会报错. 如果设置会空,将会删除本用户所属的除了默认组之外的其他组
optional_groups: 分配给用户的组列表。 如果组在minion上不存在,则state会忽略它.
配合jinja模板批量添加多个用户
1 | {{ set userlist=['big','little','ant'] }} |
cp模块
实现远程文件、目录的复制,以及下载URL文件等操作
将主服务器file_roots指定位置下的目录复制到被控主机
salt 'chuye.backup*' cp.get_dir salt://iis-works/files/ /tmp/
将主服务器file_roots指定位置下的文件复制到被控主机salt 'chuye.backup*' cp.get_file salt://iis-works/files/web-config /tmp/
下载指定URL内容到被控主机指定位置salt '*' cp.get_url http://xxx.xyz.com/download/0/files.tgz /root/files.tgz
cron模块
present - 管理crontab
实现被控主机的crontab操作
1 | date > /tmp/crontest: |
1 | superscript > /tmp/crontest: |
identifier:文件的标示,默认是状态ID。
file - 为crontab提供类似文件管理的功能
1 | foo_crontab: |
命令行执行
查看指定主机某用户的crontab
salt '*' cron.raw_cron root
为指定的被控主机、root用户添加crontab信息salt '*' cron.set_job root '*/5' '*' '*' '*' '*' 'date >/dev/null 2>&1'
删除指定的被控主机、root用户的crontab信息salt '*' cron.rm_job root 'date >/dev/null 2>&1'
dnsutil模块
实现被控主机通用DNS操作
为被控主机添加指定的hosts主机配置项salt '*' dnsutil.hosts_append /etc/hosts 192.168.56.12 linux-node2
network模块
返回被控主机网络信息salt '*' network.ip_addrs
salt '*' network.interfaces