1.先了解下管理端(master)經常使用相關命令 1.1 salt #主要管理命令 命令格式:salt [options] <target> [arguments] 例:salt ‘*’ test.ping 1.2 salt-key #證書管理 # salt-key –L #查看全部minion-key # salt-key –a <keys-name> #接受某個minion-key # salt-key –d <keys-name> #刪除某個minion-key # salt-key –A #接受全部的minion-key # salt-key –D #刪除全部的minion-key 1.3 salt-run #管理minion # salt-run manage.up #顯示當前活着的minion # salt-run manage.down #顯示未存活的minion # salt-run manage.status #顯示當前up和down 的minion # salt-run manage.downremovekeys-True #顯示未存活的minion,並將其移除 1.4 salt-cp #將master文件複製到minion,不支持複製目錄 命令格式:salt-cp [options]<target> SRC DST 例:salt-cp '*'/root/test.sh /root/test.sh 1.5 salt-ssh #經過ssh鏈接被管理端,被管理端不用安裝minion,管理端也不用安裝master,salt-ssh是一個獨立的包,安裝後便可使用saltstack大部分功能,沒有通信機制ZeroMQ,命令執行速度會降低。通常沒有客戶端沒有安裝minion時候才考慮先用salt-ssh批量安裝minion。 # apt-get install salt-ssh sshpass #salt-ssh用的sshpass進行密碼交互,必需要安裝 1.5.1 salt-ssh經常使用參數 -r,-raw-shell 執行shell命令 --key-deploy 配置keys -i,-ignore-host-keys 當ssh鏈接時,忽略keys -passwd 指定默認密碼 -roster-file 指定roster文件 1.5.2 salt-ssh使用 1.5.2.1 sat-ssh經過調用roster配置文件實現,因此先定義roster,讓salt-ssh生效,就能夠執行操做了 # vi /etc/salt/roster db: host: 192.168.18.212 user: root passwd: 123456 port: 22 timeout: 10 1.5.2.1 測試 # salt-ssh 'db' test.ping db: True 1.5.2.3 執行shell命令及salt自己的模塊 #第一次運行時會提示是否接受祕鑰,若是不想再提示能夠加入—key-deploy參數 # salt-ssh 'db' -r 'uptime' # salt-ssh 'db' disk.usage #調用salt自己的模塊 # salt-ssh 'db' grains.itemcpu_model #獲取grains信息 2、Pillar 上節講過Salt State,Salt狀態系統的核心SLS,也可叫作配置管理,SLS描述了系統的目標狀態,由簡單的格式來包含這些數據。 Pillar是Salt最重要的系統之一,可用於提供開發接口,用於在master端定義數據,而後再minion中使用,通常傳輸敏感的數據,例如ssh key,加密證書等。 pillar和states創建方式相似,由sls文件組成,有一個入口文件top.sls,經過這個文件關聯其餘sls文件,默認路徑在/srv/pillar,可經過/etc/salt/master裏面pillar_roots:指定位置。 pillar到底什麼做用呢?那麼下面介紹一個簡單的例子,你就明白了。 用zabbix監控新上架的服務器(10臺),須要將zabbix_agentd.conf分發到被監控主機,這個文件中hostname的ip每臺都不一樣,咱們不可能寫10分配置文件吧!那麼如何讓hostname在分發的時候就根據被監控主機IP,修改爲本身的呢?這時就能夠用渲染了。 2.1 建立pillar目錄和top.sls文件shell
1 2 3 4 5服務器 |
# mkdir /srv/pillar # vi /srv/pillar/top.sls base: '*': - ip
ssh |
2.2 先經過pillar獲取minion主機IP測試
1 2加密 |
# vi /srv/pillar/ip.sls ip: {{ grains['ipv4'][1] }}
spa |
#寫完後,執行sls命令,能夠看到已經獲取到IP接口
1 2 3 4 5 6 7 8 9ip |
# salt '*' pillar.item ip host2: ---------- ip: 192.168.18.213 host1: ---------- ip: 192.168.18.212
ci |
2.3 隨後寫個sate文件,將文件分發到minion上開發
1 2 3 4 5 6 7 8 9 |
# mkdir /srv/salt/zabbix # vi /srv/salt/zabbix/agentd_conf.sls zabbix: file.managed: - source: salt://zabbix/zabbix_agentd.conf - name:/usr/local/zabbix/conf/zabbix_agentd.conf - template: jinja - defaults: ip: {{ pillar['ip'] }}
|
2.4 修改zabbix_agentd.conf要渲染的IP
1 2 3 4 5 |
# vi /srv/salt/zabbix/zabbix_agentd.conf LogFile=/tmp/zabbix_agentd.log Server=192.168.18.214 ServerActive=127.0.0.1 Hostname={{ ip }}
|
2.5 執行單sls命令,不用將sls文件關聯到top.sls文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# salt '*' state.slszabbix.agentd_conf host1: ---------- ID: zabbix Function: file.managed Name:/usr/local/zabbix/conf/zabbix_agentd.conf Result: True Comment: File/usr/local/zabbix/conf/zabbix_agentd.conf is in the correct state Started: 11:48:35.261683 Duration: 139.733 ms Changes: Summary ------------ Succeeded: 1 Failed: 0 ------------ Total states run: 1 host2: ---------- ID: zabbix Function: file.managed Name:/usr/local/zabbix/conf/zabbix_agentd.conf Result: True Comment: File/usr/local/zabbix/conf/zabbix_agentd.conf is in the correct state Started: 11:31:41.906766 Duration: 141.928 ms Changes: Summary ------------ Succeeded: 1 Failed: 0 ------------ Total states run: 1
|
#這時再經過命令查看,已經更新成功
1 2 3 4 5 6 7 8 9 10 11 |
# salt '*' cmd.run 'cat/usr/local/zabbix/conf/zabbix_agentd.conf' host1: LogFile=/tmp/zabbix_agentd.log Server=192.168.18.214 ServerActive=127.0.0.1 Hostname=192.168.18.212 host2: LogFile=/tmp/zabbix_agentd.log Server=192.168.18.214 ServerActive=127.0.0.1 Hostname=192.168.18.213
|
pillar相關命令:
#刷新pillar數據到minion # salt "*" saltutil.refresh_pillar #查看全部pillar信息 # salt "*" pillar.items #查看某個pillar信息 # salt "*" pillar.item ip 既然grains與pillar相似,就說下區別: 1.grains是minion每次加載時獲取本地系統信息數據,是靜態的,固定的,而pillar是動態加載數據,隨時變化的,比grains更靈活。 2.grains數據存儲在minion本地,pillar存儲在master。
|