如何使用 Salt State?
<code>Extend:扩展被引用的SLS数据</code>
<code>include:</code>
<code> </code><code>-</code> <code>apache</code>
<code>extend:</code>
<code> </code><code>apache:</code>
<code> </code><code>service:</code>
<code> </code><code>-</code> <code>watch:</code>
<code> </code><code>-</code> <code>pkg: mod_python</code>
<code>mod_python:</code>
<code> </code><code>pkg.installed</code>
<code>yaml_jinja: 默认的渲染器</code>
<code>moosefs</code><code>/</code><code>chunk.sls</code>
<code>简单介绍Python和PyDSL渲染器</code>
<code>运行和调试 Salt States</code>
<code>salt </code><code>'*'</code> <code>state.</code><code>apply</code>
<code>salt</code><code>-</code><code>call state.aply </code><code>-</code><code>l debug</code>
<code>minion还可以直接在前台以debug模式运行:salt</code><code>-</code><code>minion </code><code>-</code><code>l debug</code>
Salt States 基本法之一
<code>使用 Salt 配置一个 minion,使之运行 Apache 服务器,并确保该服务正常运行。</code>
<code>准备 top 文件</code>
<code>base:</code>
<code> </code><code>'*'</code><code>:</code>
<code> </code><code>-</code> <code>webserver</code>
<code>top 文件可以区分多个运行环境(这个以后会再详细论述),默认的运行环境是 base。在 base 环境下,定义了一系列的 minion,对于上面这个例子来说,它适用于所有(</code><code>*</code><code>) minion 主机。</code>
<code>master 通知所有的目标 minions 来执行 state.</code><code>apply</code> <code>方法。当 state.</code><code>apply</code><code>方法不带任何 sls 文件作为参数时,minion 将下载 master 的 top 文件并尝试去匹配里面的表达式(top.sls 的第 </code><code>2</code> <code>行),如果匹配上,它将下载对应的 sls 文件(webserver.sls),编译(还记得yaml_jinja 吗?),运行</code>
<code>SLS命名空间</code>
<code>webserver</code><code>/</code><code>dev.sls 可以用 webserver.dev 表示</code>
<code>webserver_1.</code><code>0</code> <code>将匹配webserver_1</code><code>/</code><code>0.sls</code>
<code>salt </code><code>-</code><code>t </code><code>60</code>
<code>salt</code><code>-</code><code>minion </code><code>-</code><code>l debug </code><code># On the minion</code>
<code>salt </code><code>'*'</code> <code>state.</code><code>apply</code> <code>-</code><code>t </code><code>60</code> <code># On the master</code>
Salt States 基本法之三
<code>首先熟悉以下的命令</code>
<code>更新所有的minion的状态</code>
<code>salt </code><code>'*'</code> <code>state.highstate</code>
<code>salt</code><code>-</code><code>call </code><code>'192.168.0.100'</code> <code>state.sls webserver</code>
<code>调试</code>
<code>salt</code><code>-</code><code>minion </code><code>-</code><code>l debug</code>
<code>设置默认超时</code>
<code>salt </code><code>'*'</code> <code>state.highstate </code><code>-</code><code>t </code><code>60</code>
<code>grains</code>
<code>salt </code><code>'linux-node1*'</code> <code>grains.ls</code>
<code>salt </code><code>'slaver.test.com'</code> <code>grains.item role env myname</code>
<code>salt </code><code>'slaver.test.com'</code> <code>pillar.items</code>
<code>salt </code><code>'*'</code> <code>saltutil.refresh_pillar</code>
<code>salt </code><code>-</code><code>I </code><code>'conf:/etc/123.conf'</code> <code>test.ping</code>
<code>主机匹配</code>
<code>salt </code><code>-</code><code>G roles:cgt cmd.run </code><code>'uptime'</code>
<code>介绍如何使用 file_roots 来建立一套可同时用于研发、测试、生产线的运行环境。</code>
<code>/</code><code>etc</code><code>/</code><code>salt</code><code>/</code><code>master:</code>
<code>file_roots:</code>
<code> </code><code>base:</code>
<code> </code><code>-</code> <code>/</code><code>srv</code><code>/</code><code>salt</code><code>/</code>
<code> </code><code>prod:</code>
<code> </code><code>-</code> <code>/</code><code>srv</code><code>/</code><code>salt</code><code>/</code><code>prod</code>
<code> </code><code>dev:</code>
<code> </code><code>-</code> <code>/</code><code>srv</code><code>/</code><code>salt</code><code>/</code><code>dev</code>
<code>实用案例</code>
<code>/</code><code>srv</code><code>/</code><code>salt</code><code>/</code><code>prod</code><code>/</code><code>top.sls:</code>
<code> </code><code>'web*prod*'</code><code>:</code>
<code> </code><code>-</code> <code>webserver.foobarcom</code>
<code>qa:</code>
<code> </code><code>'web*qa*'</code><code>:</code>
<code>dev:</code>
<code> </code><code>'web*dev*'</code><code>:</code>
<code>通过 pillar,给不同的主机设置不同的角色</code>
<code>/</code><code>srv</code><code>/</code><code>pillar</code><code>/</code><code>top.sls:</code>
<code> </code><code>-</code> <code>webserver.prod</code>
<code> </code><code>-</code> <code>webserver.qa</code>
<code> </code><code>-</code> <code>webserver.dev</code>
<code>/</code><code>srv</code><code>/</code><code>pillar</code><code>/</code><code>webserver</code><code>/</code><code>prod.sls:</code>
<code>webserver_role: prod</code>
<code>最后,是部署网站的 sls 文件:</code>
<code>/</code><code>srv</code><code>/</code><code>salt</code><code>/</code><code>prod</code><code>/</code><code>webserver</code><code>/</code><code>foobarcom.sls:</code>
<code>{</code><code>%</code> <code>if</code> <code>pillar.get(</code><code>'webserver_role'</code><code>, '') </code><code>%</code><code>}</code>
<code>/</code><code>var</code><code>/</code><code>www</code><code>/</code><code>foobarcom:</code>
<code> </code><code>file</code><code>.recurse:</code>
<code> </code><code>-</code> <code>source: salt:</code><code>/</code><code>/</code><code>webserver</code><code>/</code><code>src</code><code>/</code><code>foobarcom</code>
<code> </code><code>-</code> <code>saltenv: {{ pillar[</code><code>'webserver_role'</code><code>] }}</code>
<code> </code><code>-</code> <code>dir_mode: </code><code>755</code>
<code> </code><code>-</code> <code>file_mode: </code><code>644</code>
<code>{</code><code>%</code> <code>endif </code><code>%</code><code>}</code>
<code>salt </code><code>'*'</code> <code>pillar.items</code>
<code>salt </code><code>-</code><code>I </code><code>'webserverrole:dev'</code> <code>state.</code><code>apply</code> <code>webserver.foobarcom saltenv</code><code>=</code><code>prod</code>
<code>salt </code><code>-</code><code>I </code><code>'webserverrole:prod'</code> <code>state.</code><code>apply</code> <code>webserver.foobarcom saltenv</code><code>=</code><code>prod</code>
上面的例子说明,后面的source可以引用非prod的file。
本文转自 liqius 51CTO博客,原文链接:http://blog.51cto.com/szgb17/1931727,如需转载请自行联系原作者