Saltstack 數據系統
Grains (穀粒)
Pillar (柱子)
Grains:靜態數據 當Minion 啓動的時候手機的minion本地的相關信息,操作系統版本內核版本,CPU,內存,硬盤,設備型號,序列號
1.資產管理,信息查詢
2.用於目標選擇
3.配置管理
salt ‘zf-200’ grains.item
salt ‘’ grains.item os #查看所有機器的操作系統
salt '’ grains.item ipv4 #查看所有機器的IP
salt -G ‘os:CentOS’ test.ping #在centos上測試連接
定義grains 配置
vim /etc/salt/grains
grains:
roles: apache
systemctl restart salt-minion.service #重啓minion
salt -G ‘roles:apache’ cmd.run ‘systemctl restart httpd’ #查找裝有apache的機器並重啓服務
top file使用案例
base:
'zf-202':
- web.apache
'zf-200':
- web.apache
'roles:apache':
- match: grain
- web.apache
開發一個Grains:
python 寫一個python腳本 返回一個字典
#!/usr/bin/env python
def my_grains():
#初始化grains字典
grains = {}
#設置字典中的key-vlaue
grains[‘iaas’] = ‘openstack’
grains[‘edu’] = ‘oldboyedu’
#返回這個字典
return grains
#刷新grains
salt ‘*’ saltutil.sync_grains
Grians優先級
1.系統自帶
2.granin
Pillar: Pillar動態,給特定的minion指定特定的數據。只有指定的minion自己能看到自己的數據
vim /etc/salt/master
pillar_opts: True
salt ‘*’ pillar.items #查看pillar
深入學習saltstack遠程執行:
salt '’ cmd.run ‘w’
命令:salt
目標:
模塊 cmd.run 自帶150+模塊。 自己寫模塊
返回: 執行後結果返回,Returnners
目標: Targeting
一種和Minion ID 有關
一種和Minion ID無關
1.Minion ID有關的方法
通配符
[root@zf-200 ~]# salt ‘zf-20*’ test.ping
zf-200:
True
zf-201:
True
zf-202:
True
[root@zf-200 ~]# salt ‘zf-20?’ test.ping
zf-201:
True
zf-202:
True
zf-200:
True
列表
[root@zf-200 ~]# salt -L ‘zf-200,zf-202’ test.ping
zf-202:
True
zf-200:
True
正則表達式
所有匹配目標的方式,都可以用到top file 裏面來指定目標。
主機名設置方案
1.IP地址
2.根據業務來進行設置
salt-cp ‘*’ /etc/hosts /opt/hehe
salt-cp '*' /etc/hosts /opt/hehe **#遠程執行拷貝命令**
[root@zf-200 ~]# salt '*' cmd.run 'ls -l /opt/hehe'
zf-200:
-rw-r--r-- 1 root root 158 Jun 9 13:47 /opt/hehe
zf-202:
-rw-r--r-- 1 root root 158 Jun 9 13:47 /opt/hehe
zf-201:
-rw-r--r-- 1 root root 158 Jun 9 13:47 /opt/hehe
salt '*' state.single pkg.installed name=MySQL-python
salt ‘*’ cmd.run ‘yum -y install MySQL-python’
#https://www.unixhot.com/docs/saltstack/ref/returners/all/salt.returners.mysql.html#module-salt.returners.mysql
寫入數據庫
#salt ‘*’ cmd.run ‘df -h’ --return mysql