SaltSack入門(三)Salt相關命令和Pillar應用

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 #
顯示當前updown 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,管理端也不用安裝mastersalt-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 StateSalt狀態系統的核心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分發到被監控主機,這個文件中hostnameip每臺都不一樣,咱們不可能寫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
9
ip

# 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
既然grainspillar相似,就說下區別:
1.grains
minion每次加載時獲取本地系統信息數據,是靜態的,固定的,而pillar是動態加載數據,隨時變化的,比grains更靈活。
2.grains
數據存儲在minion本地,pillar存儲在master

相關文章
相關標籤/搜索