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