saltstack pillar与ansible 变量
saltstack pillar与ansible 变量需求,由不同主机,生成不同的配置项目。
1、在ansible中如果要实现配置文件的参数替换,只需要在inventory中配置,并使用{{}}在template中引用变量即可
示例:
1
2
3
4
5
6
7
had5 port=111var1=1
had6 port=222var1=2
vi templates/test.conf.j2
port = {{ port }}
var = {{ var1 }}
生成的配置文件内容如下:
1
2
3
4
5
6
7
8
# ansible all -i hosts -m shell -a "cat /tmp/test.conf"
had5 | success | rc=0 >>
port = 111
var = 1
had6 | success | rc=0 >>
port = 222
var = 2
2、在slatstack,要实现上述需求,需要借助pillar与grains。
先看pillar的配置:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# tree /srv/pillar/vartest/
/srv/pillar/vartest/
└── init.sls
0 directories, 1 file
# cat /srv/pillar/top.sls
base:
'*':
- vartest
# cat /srv/pillar/vartest/init.sls
vartest:
conn: 100
{% if grains['id'] == 'had5.com' %}
port: 111
var1: 1
{% elif grains['id'] == 'had6.com' %}
port: 222
var1: 2
{% else %}
port: 888
var1: 8
{% endif %}
我们是通过 grains来指定特定主机的变量参数值。
state配置:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
# tree /srv/salt/base/vartest/
/srv/salt/base/vartest/
├── init.sls
└── test.conf.j2
0 directories, 2 files
#
#
#
#
# cat /srv/salt/base/vartest/init.sls
vartest:
file.managed:
- source: salt://vartest/test.conf.j2
- name: /tmp/test.conf.salt
- user: root
- group: root
- mode: 644
- template: jinja
#
#
# cat /srv/salt/base/vartest/test.conf.j2
port = {{ pillar['vartest']['port'] }}
var = {{ pillar['vartest']['var1'] }}
--刷新pillar
# salt '*' saltutil.refresh_pillar
had6.com:
True
had5.com:
True
hadm.com:
True
--查看pillar是否生效
# salt '*' pillar.data vartest
hadm.com:
----------
vartest:
----------
conn:
100
port:
888
var1:
8
had5.com:
----------
vartest:
----------
conn:
100
port:
111
var1:
1
had6.com:
----------
vartest:
----------
conn:
100
port:
222
var1:
2
# salt '*' state.sls vartest
hadm.com:
----------
ID: vartest
Function: file.managed
Name: /tmp/test.conf.salt
Result: True
Comment: File /tmp/test.conf.salt updated
Started: 14:38:25.607505
Duration: 22.97 ms
Changes:
----------
diff:
New file
mode:
0644
Summary
------------
Succeeded: 1 (changed=1)
Failed: 0
------------
Total states run: 1
had6.com:
----------
ID: vartest
Function: file.managed
Name: /tmp/test.conf.salt
Result: True
Comment: File /tmp/test.conf.salt updated
Started: 14:38:31.355029
Duration: 36.952 ms
Changes:
----------
diff:
New file
mode:
0644
Summary
------------
Succeeded: 1 (changed=1)
Failed: 0
------------
Total states run: 1
had5.com:
----------
ID: vartest
Function: file.managed
Name: /tmp/test.conf.salt
Result: True
Comment: File /tmp/test.conf.salt updated
Started: 14:38:42.161422
Duration: 24.327 ms
Changes:
----------
diff:
New file
mode:
0644
Summary
------------
Succeeded: 1 (changed=1)
Failed: 0
------------
Total states run: 1
#
# salt '*' cmd.run 'cat /tmp/test.conf.salt'
hadm.com:
port = 888
var = 8
had6.com:
port = 222
var = 2
had5.com:
port = 111
var = 1
salt还是要复杂一些的。
页:
[1]