原创-salt批量替换变量(例如nginx域名)

当批量更新nginx配置文件是,某些场景中每个服务器都可以使用单独的域名,这时候使用salt批量修改就要使用pillar模块去做变量匹配。下面举例:

编写一个tmp/lyztest.txt。文件传输后匹配变量赋值目标主机b020063的域名为lyz_testb020063.com,实现变量匹配的效果。

 


[root@b020150 lyz-test]# cat pillar-test.sls

{% set hostname = grains.id %}   #获取主机名

{% set domain = pillar['lyz_test'][hostname] %} #去/srv/pillar中lyz_test文件获取主机名对应的值

lyztest.txt:

 file.managed:

   - name: /tmp/lyztest.txt

   - source: salt://lyz-test/test.txt

   - user: root

   - group: root

   - mode: 644

   - template: jinja

   - defaults:

     domain: {{ domain }}

 cmd.run:

   - name: cat /tmp/lyztest.txt

[root@b020150 lyz-test]# cat test.txt

{{ domain }}  #文件里定义变量

 


添加pillar配置:

vim /etc/salt/master

找到pillar目录

[root@b020150 pillar]# cat lyz_test.sls  

lyz_test:

 b020063: lyz_testb020063.com

[root@b020150 pillar]# cat top.sls

base:

 '*':

   - lyz_test


[root@b020063 tmp]# cat lyztest.txt  

lyz_testb020063.com

---

可以看到文件里的变量已经变成了pillar文件中的值。

posted @ 2021-01-20 17:57  Normanlin  阅读(134)  评论(0编辑  收藏  举报