天天看點

saltstack的狀态檔案

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>#&lt;domain&gt;      &lt;type&gt;  &lt;item&gt;         &lt;value&gt;</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&gt;</code><code>/dev/null</code> <code>2&gt;&amp;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,如需轉載請自行聯系原作者

繼續閱讀