saltstack的探索-使用模版分发一个配置文件到minion
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
|
配置pillar:
[root@server200-21 salt]
# cat /srv/pillar/top.sls
base:
'*'
:
- data
[root@server200-21 salt]
# cat /srv/pillar/data.sls
a: 1
b: 2
c:
c1: 1001
c2: 2001
c3: 3001
使用yaml模版来创建一个配置文件:
[root@server200-21 salt]
# cat /srv/salt/top.sls
base:
'*'
:
- servers
'test230'
:
- appconfig
模版文件路径:
[root@server200-21 salt]
# cat /srv/salt/appconfig.sls
/tmp/appconfig
.conf:
file
.managed:
-
source
: salt:
//files/appconfig
.conf.yaml
- template: jinja
模版文件内容:
[root@server200-21 salt]
# cat files/appconfig.conf.yaml
test
hostname
: {{ grains[
'id'
] }}
get the value of a: {{ pillar[
'a'
] }}
get the value of b: {{ pillar[
'b'
] }}
{%
if
'c'
in
pillar %}
get the value of c:
{%
for
k,
v
in
pillar.get(
'c'
, {}).items() %}
{{ k }}: {{
v
}}
{% endfor %}
{% endif %}
执行:
[root@server200-21 salt]
# salt 'test230' state.highstate
test230:
----------
ID: dnsmasq
Function: pkg.installed
Result: True
Comment: Package dnsmasq is already installed.
Started: 15:44:55.301089
Duration: 1084.57 ms
Changes:
----------
ID:
/tmp/appconfig
.conf
Function:
file
.managed
Result: True
Comment: File
/tmp/appconfig
.conf updated
Started: 15:44:56.385793
Duration: 12.932 ms
Changes:
----------
diff
:
New
file
mode:
0644
Summary
------------
Succeeded: 2 (changed=1)
Failed: 0
------------
Total states run: 2
查看生成的squid.conf文件内容:
[root@test230 monitor_agent]
# cat /tmp/appconfig.conf
test
hostname
: test230
get the value of a: 1
get the value of b: 2
get the value of c:
c3: 3001
c2: 2001
c1: 1001
|
本文转自 pcnk 51CTO博客,原文链接:http://blog.51cto.com/nosmoking/1613374,如需转载请自行联系原作者