Saltstack进阶Tips

2017年底做了一个关于saltstack的demo,用到了一些比较方便的tips,简单记录一下。

另外吐槽一下saltstack的官方文档,跟ansible一比,真的很垃圾很不方便,加大了学习saltstack的难度。。。有问题,只能自己多琢磨琢磨,多Google看看了。

(一)异步执行

Saltstack执行命令时,minion端经常因为超时没有返回,通过异步执行,直接返回jobId,再查询job执行结果。

# salt -v "SERVER-01" test.ping
Executing job with jid 20180328113510462472
-------------------------------------------

SERVER-01:
Minion did not return. 

加上异步选项–async:

# salt --async "SERVER-01" test.ping
Executed command with job ID: 20180328113742741120

# salt-run jobs.lookup_jid 20180328113742741120
SERVER-01:
    True

异步操作可以和shell相结合,根据job id查询job执行结果,eg:

res=`salt --async -N targets state.sls multiInstall`
jid=`echo $res | head -1| awk -F ' ' '{print $6}' | tr -d ' '

salt-run jobs.lookup_jid $jid

(二)pillar变量

官网相关链接:https://docs.saltstack.com/en/latest/topics/pillar/
Pillar直接看以下示例:

目录结构:
-srv_dir
    -srv_pillar
        -patch.sls
        -top.sls
    -srv_salt
        -install.sls

pillar文件夹:

#cat top.sls
base:
  '*':
    - patch



#cat patch.sls
patch:
info:
  win2008Id: KB1234567
  win2016Id: KB7654321

调用pillar变量:

#cat multiInstall.sls
multiInstall:
  wua.installed:
    #如果minion的系统是2008R2,就安装KB1234567
    {% if grains['osrelease']  == '2008ServerR2' %}
    - name: {{ salt['pillar.get']('patch:info:win2008Id') }} 
    #如果minion的系统是2016,就安装KB7654321
    {% elif grains['osrelease']  == '2016Server' %}
    - name: {{ salt['pillar.get']('patch:info:win2016Id') }}
    {% endif %}

猜你喜欢

转载自blog.csdn.net/wn_hello/article/details/79726842