原创-实用salt部署文档(持续更新)

检测存活性:

salt 主机名 test.ping 

批量检测存活性:

salt -L '主机名1 主机名2..' test.ping

执行单句命令

salt 主机名 cmd.run '执行命令'

执行某个sls文件

salt 主机名 state.sls salt下相对路径/目标文件名(不带sls后缀)

 ---传输文件及文件权限

abcd:(注释)
file.managed:(使用文件管理功能)
- source: salt://A/B/C.sh(存放在/srv/salt下的目录)
- name: /usr/local/A/B.sh(需要传输的目标目录)
- mode: 0755(文件权限)

---执行命令

cmd.run:
- name: sh /usr/local/A/B.sh 

---crontab设置

abcd:(注释)
cron.present:(使用cron功能)
- name: /usr/local/A/B/C/D.sh monitor > /tmp/monitorA.log 2>&1(crontab语句)
- identifier: go-node-proxy monitor(注释)
- user: xladm(crontab用户)

(默认一分钟一次)

abcd:(注释)
cron.present:(使用cron功能)
- name: /usr/local/A/B/C/D.sh monitor > /tmp/monitorA.log 2>&1(crontab语句)
- identifier: go-node-proxy monitor(注释)
- user: xladm(crontab用户) 

- minute: '*/10'(每10分钟执行一次)

- minute: '1'
- hour: '1'
- daymonth: '1'

---循环执行多个rpm包

{% for pkg in ["kernel-ml-5.6.5-1.el7.elrepo.x86_64.rpm","kernel-ml-devel-5.6.5-1.el7.elrepo.x86_64.rpm"]%}
{{ pkg }}:
file.managed:
- name: /usr/local/src/{{ pkg }}
- source: salt://A/files/kernel/{{ pkg }}
cmd.run:
- cwd: /usr/local/src/
- name: rpm -ivh {{ pkg }}
{% endfor %}

---文件夹传输及保持各项属性

/usr/local/A/B:(在配置中如果没有name的情况下,注释这里作为目标路径)
file.recurse:
- source: salt://A/files/B
- user: C
- group: C
- file_mode: 0755
- makedirs: Ture
- include_empty: True
- keep_symlinks: True

传输过去以C用户为属性,0755,允许空文件夹并创建文件夹,保持软连接。

---创建文件夹

/data1/logs/A:
file.directory:
- user: C
- group: C
- mode: 755
- makedirs: Ture (目录不存在则创建)
- recurse:
- user
- group
- mode

---创建软连接

/usr/local/A/B/C:(创建这个软连接文件指向target路径)
file.symlink:
- mode: 0755
- target: /data1/logs/A
- force: true
- user: xladm
- group: xladm
- onlyif: test -d /data1/logs/A (首先测试文件是否存在,当判断为真执行。)

---以某身份执行命令

start:(注释)
cmd.run:
- name: /usr/local/A.sh start
- runas: xladm

---修改内核参数

net.ipv4.tcp_sack:
sysctl.present:
- value: 1

net.ipv4.tcp_dsack:
sysctl.present:
- value: 1

net.core.default_qdisc:
sysctl.present:
- value: fq

net.ipv4.tcp_congestion_control:
sysctl.present:
- value: bbr

net.ipv4.tcp_fack:
sysctl.present:
- value: 1

net.ipv4.tcp_fastopen:
sysctl.present:
- value: 1

---设置变量传参

{% set sql_file = 'ABCD'%}

copy_sql:
file.managed:
- name: /tmp/{{ sql_file }}
- source: salt://A/mysql/files/{{ sql_file }}
- mode: 0755

---用判断语句使变量传入不同的值

{% set hostname = grains.id %}
{% if 'a05' in hostname %}
{% set host = 'A'%}
{% elif 'a03' in hostname %}
{% set host = 'B'%}
{% elif 'al02' in hostname %}
{% set host = 'C'%}

---修改iptables

allow_ABCD:(注释)
iptables.insert:
- position: 1
- table: filter
- chain: RH-Firewall-1-INPUT
- jump: ACCEPT
- match:
- state
- connstate: NEW
- source: '114.114.114.114,114.114.115.115'
- dport: 9004:9005
- protocol: tcp
- sport: 1025:65535
- save: True

---删除计划任务

chown -R A:A /data1/:
cron.absent:
- user: xladm
- name: chown -R A:A /data1/

---判断文件存在再执行

test-onlyif:

cmd.run:

  - name: mkdir /tmp/onlyif

  - onlyif: test -f /tmp/onlyif.txt

原文地址:https://www.cnblogs.com/normanlin/p/14208402.html