saltstack狀态檔案設定:
編輯/etc/salt/master,修改其中關于“設定檔案的目錄”的設定:
<a href="https://s5.51cto.com/wyfs02/M02/8D/BB/wKiom1ioU9yjVAQbAAASdBuXfz0630.png" target="_blank"></a>
說明:注意文法格式,頂格/冒号/兩個空格
<code>state_top: </code><code>top</code><code>.sls</code>
<code># The state system uses a "top" file to tell the minions what environment to</code>
<code># use and what modules to use. The state_top file is defined relative to the</code>
<code># root of the base environment as defined in "File Server settings" below.</code>
<code>#state_top: top.sls</code>
<code>[root@master ~]</code><code># mkdir -p /etc/salt/states</code>
<code>[root@master ~]</code><code># vim /etc/salt/states/top.sls</code>
<code>[root@master ~]</code><code># sed -i '329s/#//' /etc/salt/master </code>
<code>說明:将329行的注釋取消</code>
進入base環境下,并配置下top.sls
<code>[root@master ~]</code><code># cd /etc/salt/states/</code>
<code>[root@master states]</code><code># mkdir -p init</code>
<code>[root@master states]</code><code># mkdir -p prod</code>
<code>[root@master states]</code><code># vim top.sls</code>
<code>[root@master states]</code><code># cat top.sls </code>
<code>base:</code>
<code> </code><code>'node01.saltstack.com'</code><code>:</code>
<code> </code><code>-init.pkg</code>
說明:base是指定一個名稱,init為檔案夾的名稱,pkg為pkg.sls
<code>[root@master states]</code><code># ll</code>
<code>總用量 12</code>
<code>drwxr-xr-x 2 root root 4096 2月 15 14:16 init</code>
<code>drwxr-xr-x 2 root root 4096 2月 15 14:16 prod</code>
<code>-rw-r--r-- 1 root root 46 2月 15 14:17 </code><code>top</code><code>.sls</code>
<code>[root@master states]</code><code># cd init/</code>
<code>[root@master init]</code><code># vim pkg.sls</code>
<code>[root@master init]</code><code># cat pkg.sls </code>
<code>pkg.init:</code>
<code> </code><code>pkg.installed:</code>
<code> </code><code>- names:</code>
<code> </code><code>- lrzsz</code>
<code> </code><code>- mtr</code>
<code> </code><code>- nmap</code>
案例1:使用salt初始化系統子產品:
<code>[root@master init]</code><code># salt '*' state.sls init.pkg</code>
<code>node01.saltstack.com:</code>
<code>----------</code>
<code> </code><code>ID: pkg.init</code>
<code> </code><code>Function: pkg.installed</code>
<code> </code><code>Name: mtr</code>
<code> </code><code>Result: True</code>
<code> </code><code>Comment: Package mtr is already installed.</code>
<code> </code><code>Started: 14:56:02.574416</code>
<code> </code><code>Duration: 11389.014 ms</code>
<code> </code><code>Changes: </code>
<code> </code><code>Name: nmap</code>
<code> </code><code>Comment: Package nmap is already installed.</code>
<code> </code><code>Started: 14:56:13.963968</code>
<code> </code><code>Duration: 3.619 ms</code>
<code> </code><code>Name: lrzsz</code>
<code> </code><code>Comment: Package lrzsz is already installed.</code>
<code> </code><code>Started: 14:56:13.967979</code>
<code> </code><code>Duration: 1.042 ms</code>
<code>Summary</code>
<code>------------</code>
<code>Succeeded: 3</code>
<code>Failed: 0</code>
<code>Total states run: 3</code>
案例2:saltstack修改核心參數:
<code>[root@master ~]</code><code># cd /etc/salt/states/init/</code>
<code>[root@master init]</code><code># tree</code>
<code>.</code>
<code>└── pkg.sls</code>
<code>0 directories, 1 </code><code>file</code>
<code>[root@master init]</code><code># mkdir -p files</code>
<code>[root@master init]</code><code># cd files/</code>
<code>[root@master init]</code><code># vim limit.sls</code>
<code>limit-conf-config:</code>
<code> </code><code>file</code><code>.managed:</code>
<code> </code><code>- name: </code><code>/etc/security/limits</code><code>.conf</code>
<code> </code><code>- </code><code>source</code><code>: salt:</code><code>//init/files/limits</code><code>.conf</code>
<code> </code><code>- user: root</code>
<code> </code><code>- group: root</code>
<code> </code><code>- mode: 644</code>
<code>[root@master files]</code><code># cd /etc/security/</code>
<code>[root@master security]</code><code># ls</code>
<code>access.conf console.perms limits.d opasswd </code><code>time</code><code>.conf</code>
<code>chroot.conf console.perms.d namespace.conf pam_env.conf</code>
<code>console.apps group.conf namespace.d pam_winbind.conf</code>
<code>console.handlers limits.conf namespace.init sepermit.conf</code>
<code>[root@master security]</code><code># cp limits.conf /etc/salt/states/init/files/</code>
<code>[root@master files]</code><code># vim limits.conf </code>
<code>* soft core 0</code>
<code>* hard rss 10000</code>
<code>[root@master states]</code><code># pwd</code>
<code>/etc/salt/states</code>
<code>注意:要将新的子產品添加到</code><code>top</code><code>.sls中,不然會有其它報錯</code>
<code> </code><code>'*'</code><code>:</code>
<code> </code><code>- init.pkg</code>
<code> </code><code>- init.limit</code>
<code>[root@master init]</code><code># salt '*' state.highstate</code>
<code> </code><code>Started: 17:42:55.479576</code>
<code> </code><code>Duration: 7120.831 ms</code>
<code> </code><code>Started: 17:43:02.601307</code>
<code> </code><code>Duration: 2.278 ms</code>
<code> </code><code>Started: 17:43:02.603841</code>
<code> </code><code>Duration: 0.952 ms</code>
<code> </code><code>ID: limit-conf-config</code>
<code> </code><code>Function: </code><code>file</code><code>.managed</code>
<code> </code><code>Name: </code><code>/etc/security/limits</code><code>.conf</code>
<code> </code><code>Comment: File </code><code>/etc/security/limits</code><code>.conf updated</code>
<code> </code><code>Started: 17:43:02.612678</code>
<code> </code><code>Duration: 19.256 ms</code>
<code> </code><code>----------</code>
<code> </code><code>diff</code><code>:</code>
<code> </code><code>--- </code>
<code> </code><code>+++ </code>
<code> </code><code>@@ -39,8 +39,8 @@</code>
<code> </code><code>#<domain> <type> <item> <value></code>
<code> </code><code>#</code>
<code> </code>
<code> </code><code>-</code><code>#* soft core 0</code>
<code> </code><code>-</code><code>#* hard rss 10000</code>
<code> </code><code>+* soft core 0</code>
<code> </code><code>+* hard rss 10000</code>
<code> </code><code>#@student hard nproc 20</code>
<code> </code><code>#@faculty soft nproc 20</code>
<code> </code><code>#@faculty hard nproc 50</code>
<code>Succeeded: 4 (changed=1)</code>
<code>Total states run: 4</code>
<code>用戶端測試:</code>
<code>[root@node01 security]</code><code># egrep -v '#|^$' limits.conf </code>
案例3:同步某個計劃任務
<code>最近發現很多伺服器上沒有配置ntp伺服器指向,簡單寫個計劃任務,然後通過狀态檔案下發</code>
<code>思路:</code>
<code>a)準備好需要下發的檔案</code>
<code>b)編輯sls檔案</code>
<code>c)修改</code><code>top</code><code>.sls,添加資訊進去</code>
<code>[root@master ~]</code><code># cat /var/spool/cron/root </code>
<code>*</code><code>/5</code> <code>* * * * </code><code>/usr/sbin/ntpdate</code> <code>-u 202.120.2.101></code><code>/dev/null</code> <code>2>&1</code>
<code>[root@master states]</code><code># ls</code>
<code>init prod </code><code>top</code><code>.sls</code>
<code>[root@master init]</code><code># ls</code>
<code>files limit.sls pkg.sls</code>
<code>[root@master init]</code><code># cp limit.sls ntp-crontab.sls</code>
<code>files limit.sls ntp-</code><code>crontab</code><code>.sls pkg.sls</code>
<code>[root@master files]</code><code># cp /var/spool/cron/root .</code>
<code>[root@master files]</code><code># pwd</code>
<code>/etc/salt/states/init/files</code>
<code>[root@master files]</code><code># cat root </code>
<code>[root@master files]</code><code># mv root ntp-crontab.conf</code>
<code>[root@master files]</code><code># cat ntp-crontab.conf </code>
<code>[root@master files]</code><code># cd ..</code>
<code>[root@master ~]</code><code># cat /etc/salt/states/init/ntp-crontab.sls </code>
<code>ntp-</code><code>crontab</code><code>-config:</code>
<code> </code><code>- name: </code><code>/var/spool/cron/root</code>
<code> </code><code>- </code><code>source</code><code>: salt:</code><code>//init/files/ntp-crontab</code><code>.conf</code>
<code>計劃任務更新執行結果:</code>
<code> </code><code>Started: 21:09:06.608808</code>
<code> </code><code>Duration: 4265.514 ms</code>
<code> </code><code>Started: 21:09:10.874647</code>
<code> </code><code>Duration: 0.685 ms</code>
<code> </code><code>Started: 21:09:10.875446</code>
<code> </code><code>Duration: 0.583 ms</code>
<code> </code><code>Comment: File </code><code>/etc/security/limits</code><code>.conf is </code><code>in</code> <code>the correct state</code>
<code> </code><code>Started: 21:09:10.879350</code>
<code> </code><code>Duration: 4.1 ms</code>
<code> </code><code>ID: ntp-</code><code>crontab</code><code>-config</code>
<code> </code><code>Name: </code><code>/var/spool/cron/root</code>
<code> </code><code>Comment: File </code><code>/var/spool/cron/root</code> <code>updated</code>
<code> </code><code>Started: 21:09:10.883639</code>
<code> </code><code>Duration: 9.342 ms</code>
<code> </code><code>New </code><code>file</code>
<code> </code><code>mode:</code>
<code> </code><code>0644</code>
<code>Succeeded: 5 (changed=1)</code>
<code>Total states run: 5</code>
<code>node02.saltstack.com:</code>
<code> </code><code>Started: 21:09:07.831431</code>
<code> </code><code>Duration: 4292.2 ms</code>
<code> </code><code>Started: 21:09:12.123977</code>
<code> </code><code>Duration: 0.714 ms</code>
<code> </code><code>Started: 21:09:12.124798</code>
<code> </code><code>Duration: 0.426 ms</code>
<code> </code><code>Started: 21:09:12.128235</code>
<code> </code><code>Duration: 5.165 ms</code>
<code> </code><code>Started: 21:09:12.133621</code>
<code> </code><code>Duration: 8.761 ms</code>
<code>檢查結果:</code>
<code>[root@node01 spool]</code><code># cd /var/spool/cron/</code>
<code>[root@node01 </code><code>cron</code><code>]</code><code># ls</code>
<code>root</code>
<code>[root@node01 </code><code>cron</code><code>]</code><code># cat root</code>
<code>[root@node02 ~]</code><code># cat /var/spool/cron/root </code>
<code>通過對比會發現,與master的下發檔案一緻</code>
案例4:同步内網的hosts檔案(适用于内網沒有建立獨立DNS的情況)
<code>[root@master init]</code><code># ll</code>
<code>總用量 16</code>
<code>drwxr-xr-x 2 root root 4096 2月 18 21:01 files</code>
<code>-rw-r--r-- 1 root root 168 2月 18 17:42 limit.sls</code>
<code>-rw-r--r-- 1 root root 169 2月 18 21:08 ntp-</code><code>crontab</code><code>.sls</code>
<code>-rw-r--r-- 1 root root 79 2月 15 14:55 pkg.sls</code>
<code>[root@master files]</code><code># vim hosts.conf </code>
<code>127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4</code>
<code>::1 localhost localhost.localdomain localhost6 localhost6.localdomain6</code>
<code>10.10.10.140 master master.saltstack.com</code>
<code>10.10.10.141 node01 node01.saltstack.com</code>
<code>10.10.10.142 node02 node02.saltstack.com</code>
<code>10.10.10.143 node03 node03.saltstack.com</code>
<code>[root@master init]</code><code># cat hosts.sls </code>
<code>hosts-config:</code>
<code> </code><code>- name: </code><code>/etc/hosts</code>
<code> </code><code>- </code><code>source</code><code>: salt:</code><code>//init/files/hosts</code><code>.conf</code>
<code>說明:下發檔案到</code><code>/etc/hosts</code><code>,源檔案</code>
<code>[root@master states]</code><code># cat /etc/salt/states/top.sls </code>
<code> </code><code>- init.ntp-</code><code>crontab</code>
<code> </code><code>- init.hosts</code>
<code>[root@master states]</code><code># salt '*' state.highstate</code>
<code>----------前面的部分我直接省略了--------------</code>
<code> </code><code>ID: hosts-config</code>
<code> </code><code>Name: </code><code>/etc/hosts</code>
<code> </code><code>Comment: File </code><code>/etc/hosts</code> <code>updated</code>
<code> </code><code>Started: 21:31:43.644962</code>
<code> </code><code>Duration: 13.119 ms</code>
<code> </code><code>@@ -3,3 +3,4 @@</code>
<code> </code><code>10.10.10.140 mastermaster.saltstack.com</code>
<code> </code><code>10.10.10.141 node01node01.saltstack.com</code>
<code> </code><code>10.10.10.142 node02node02.saltstack.com</code>
<code> </code><code>+10.10.10.143 node03node03.saltstack.com</code>
<code>Succeeded: 6 (changed=1)</code>
<code>Total states run: 6</code>
<code>用戶端進行測試:</code>
<code>[root@node01 </code><code>cron</code><code>]</code><code># cat /etc/hosts</code>
<code>10.10.10.140 master master.saltstack.com</code>
<code>10.10.10.141 node01 node01.saltstack.com</code>
<code>10.10.10.142 node02 node02.saltstack.com</code>
<code>10.10.10.143 node03 node03.saltstack.com</code>
<code>[root@node02 ~]</code><code># cat /etc/hosts</code>
<code>如果此時我在master端修改hosts.conf檔案</code>
<code>[root@master init]</code><code># pwd</code>
<code>/etc/salt/states/init</code>
<code>[root@master init]</code><code># cat files/hosts.conf </code>
<code>10.10.10.144 openstack01 openstack01.saltstack.com</code>
<code>10.10.10.145 openstack02 openstack02.saltstack.com</code>
<code> </code><code>Started: 21:37:50.679328</code>
<code> </code><code>Duration: 78.269 ms</code>
<code> </code><code>@@ -4,3 +4,5 @@</code>
<code> </code><code>10.10.10.141node01node01.saltstack.com</code>
<code> </code><code>10.10.10.142node02node02.saltstack.com</code>
<code> </code><code>10.10.10.143node03node03.saltstack.com</code>
<code> </code><code>+10.10.10.144openstack01openstack01.saltstack.com</code>
<code> </code><code>+10.10.10.145openstack02openstack02.saltstack.com</code>
關于salt批量配置hosts檔案:http://www.ttlsa.com/linux/salt-modules-hosts/
這裡我隻寫一個添加hosts檔案的例子,更多内容可以參考上面的連結(幹貨很多)
<code>[root@master ~]</code><code># salt '*' hosts.set_host 10.10.10.145 openstack02.saltstack.com</code>
<code> </code><code>True</code>
<code>[root@master ~]</code><code># salt '*' hosts.set_host 10.10.10.143 openstack03.saltstack.com</code>
<code>[root@master ~]</code><code># salt-ssh '*' cmd.run 'tail -2 /etc/hosts'</code>
<code>node02:</code>
<code> </code><code>10.10.10.144 openstack01 openstack01.saltstack.com</code>
<code> </code><code>10.10.10.145 openstack02.saltstack.com</code>
<code>node01:</code>
<code></code>
本文轉自 冰凍vs西瓜 51CTO部落格,原文連結:http://blog.51cto.com/molewan/1899125,如需轉載請自行聯系原作者