天天看點

Salt States 入門三篇

如何使用 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,如需轉載請自行聯系原作者