天天看點

2.1 salt 子產品

用途

Saltstack目前最主要的三大主要功能

·  遠端執行

·  配置管理

·  雲管理

實際

通過Saltstack批量執行系統指令,包括系統重新開機,檢視系統負載,添加/删除使用者等等

salt

Saltstack的三種運作方式

·  Local

·  Master/Minion

·  Salt SSH

Saltstack最傳統的運作方式還是C/S模式,需要在被管理節點上安裝Minion用戶端;其實Saltstack也支援SSH方式,無需安裝Agent,通過SSH實作管理

複習上次的東西

1.想檢視saltstack具體程序,可以安裝一個python-setproctitle庫

2.salt-key -a saltstack-node1.lichengbing.com # -a認證參數

3.遠端執行

salt '*' cmd.run 'w'

遠端指令執行(cmd子產品),格式:salt  'client配置的id' 子產品.方法  '指令參數'           (其中'*'表示所有的client)

4.分組

nodegroups:

     mysql: 'cm1'

5.salt key相關指令總結

salt-key list   檢視已經認證或未認證的用戶端id,Accepted Keys為已認證清單,Unaccepted Keys為未認證的清單,Rejected Keys為拒絕的清單。

salt-key -a id  認證單個主機id證書請求。

salt-key -A     認證所有主機id證書請求。

salt-key -d id  删除單個主機id證書。

salt-key -D     删除所有認證主機id證書。

6.遠端批量傳輸檔案(salt-cp指令)

salt-cp '*' /mnt/aa /opt/

7.操作目标

-E:--pcre      通過正規表達式進行比對

salt -E '^minion-192-168*' test.ping

-L:--list        以主機id名清單的形式進行過濾,格式與Python的清單相似,即不同主機id名稱使用逗号分隔

salt -L 'minion-192-168-1-102,minion-192-168-1-118' grains.item osfullname

-G:--grain     根據被控主機的grains資訊(grains是saltstack重要元件之一,重要作用是收集被控主機的基本系統資訊)進行比對過濾,格式為'<grain value>:<glob expression>'

salt -G 'osrelease:6.8' cmd.run 'python -V'

-I:--pillar       根據被控主機的pillar(作用是定義與被控主機相關的任何資料,定義好的資料可以被其他元件使用)資訊進行過濾比對,格式為'對象名稱:對象值',比如過濾所有具備'apache:httpd' pillar值的主機。

salt -I 'nginx:root:/data' test.ping

-N:--nodegroup       根據主要端master配置檔案中的分組名稱進行過濾。

  web1group: 'L@minion-192-168-1-102,minion-192-168-1-118'          //前面空兩格,冒号後面空一格

  web2group: 'L@minion-192-168-1-102'

其中:

L@    表示後面的主機id格式為清單,即主機id以逗号隔開;

G@   表示以grain格式描述;

S@   表示以ip子網或位址格式描述

f)-C:--compound        根據條件運算符not、and、or去比對不同規則的主機資訊

salt -C 'E@^minion-192-168* and G@os:Centos' test.ping

g)-S:--ipcidr        根據被控主機的ip位址或ip子網進行比對

salt -S 192.168.0.0/16 test.ping

Saltstack常用子產品及API

https://docs.saltstack.com/en/latest/ref/modules/all/index.html

salt '*' sys.list_modules

import salt.client  

client = salt.client.LocalClient()

ret = client.cmd('*','test.ping')

print ret

a)Archive子產品

salt '*' archive.gunzip /tmp/wangshibo.gz

解壓預設放到被控制機的目前使用者家目錄(即/root)路徑下

salt '*' archive.tar zxf /mnt/nginx-1.9.7.tar.gz

将被控制機的/mnt/huihui打包到/opt下的huihui.tar.bz2

[root@linux-node1 ~]# salt '*' archive.tar jcf /opt/test.huihui.bz2 /mnt/huihui

自動化運維Saltstack系列(二)之遠端執行和常用子產品

saltstack自帶子產品參考:https://www.unixhot.com/docs/saltstack/contents.html

sys.doc = man

salt 'saltstack-node1*' sys.list_functions cmd

salt 'saltstack-node1*' sys.doc cmd.run

将master file_roots下的目錄拷貝到minion

salt 'saltstack-node1*' cp.get_dir salt://base/ minion/dest

salt 'saltstack-node2*' cp.get_url http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm /tmp/1

salt '*' cron.raw_cron root

salt '*' cron.set_job root '*' '*' '*' '*' 1 /usr/local/weekly

salt '*' cron.rm_job root '*' '*' '*' '*' 1 /usr/local/weekly

salt '*' file.chown /etc/passwd root root

salt '*' file.directory_exists /etc

salt '*' file.stats /etc/passwd

salt '*' file.get_mode /etc/passwd

salt '*' file.mkdir /opt/test

salt '*' file.remove /opt/test

salt '*' file.touch /tmp/test.txt

salt '*' file.append /tmp/test.txt "10000"

salt '*' file.sed /tmp/test.txt "10000" "1"

salt '*' file.get_sum /etc/passwd md5

有檔案,檔案夾,定時任務,拷貝,網絡,pkg子產品,service子產品

還有以下

user(系統使用者子產品)

group(系統組子產品)

partition(系統分區子產品)

puppet(puppet管理子產品)

system(系統重新開機、關機子產品)

timezone(時區管理子產品)

nginx(Nginx管理子產品)

iptables(被控主機iptables支援子產品)

mount(檔案系統挂載子產品) 等等...

自定義子產品

vim /etc/salt/master

file_roots:

  base:

    - /srv/salt/base

mkdir /srv/salt/base/_modules

vim my_disk.py

def list():

  cmd = 'df -h'

  ret = __salt__['cmd.run'](cmd)

  return ret

salt '*' saltutil.sync_modules 

salt '*' my_disk.list

本文轉自 liqius 51CTO部落格,原文連結:http://blog.51cto.com/szgb17/1914622,如需轉載請自行聯系原作者