Saltstack数据系统Grains和Pillar(三)
- Saltstack數據系統
分為Grains和Pillar
?
一、Grains
靜態數據,當Minion啟動的時候收集的MInion本地的相關信息。(包含操作系統版本、內核版本、CPU、內存、硬盤、設備型號等)
備注:不重啟minion,這些信息數據是不會改變的。
1)信息管理,包括資產管理;
例:
salt 'linux-node1*' grains.ls # 列出ID為linux-node1的主機,grains的所有key salt 'linux-node1*' grains.items # 列出主機的詳細信息,可用于資產管理 salt '*' grains.item os # 列出所有主機的系統版本 salt '*' grains.item fqdn_ip4 # 列出所有主機的IP地址2)用于目標選擇;(查詢具體id的主機,查詢系統版本為centos的主機 等場景)
例:
salt -G 'os:Centos' test.ping # 所有主機系統為centos版本ping測試 salt -G 'os:Centos' cmd.run 'echo 123' # 所有主機系統為centos版本執行命令'echo 123'3)配置管理中使用
自定義grains的item
方式一: 修改配置文件?vim /etc/salt/minion
重啟?systemctl restart salt-minion
通過自定義的item,可以實現重啟所有角色為apache的主機
salt '*' grains.item roles # 獲取所有主機的roles salt -G 'roles:apache' cmd.run 'systemctl restart httpd' # 所有主機roles為apache的執行命令systemctl restart httpd方式二:(生產環境使用)?
修改配置文件?vim /etc/salt/grains,寫法
cloud: openstack重啟?systemctl restart salt-minion
salt '*' grains.item cloud # 獲取所有主機的cloud修改/etc/salt/grains不重啟服務的方法,刷新命令如下(備注:方式一和方式二修改配置文件,通過此命令都可以不用重啟服務)
salt '*' saltutil.sync_grainsgrains在top FILE中的使用案例
vim /srv/salt/top.sls
base:'linux-node1.example.com':- web.apache'roles:apache':- match: grain- web.apach
grains腳本目錄,必須是base下創建_grains目錄(如:/srv/salt/_grains)
創建一個python腳本在/srv/salt/_grains目錄下
腳本名:my_grains.py
#!/usr/bin/env python #-*- coding: utf-8 -*-def my_grains():# 初始化grains字典grains = {}# 設置字典中的key-valuegrains['iaas'] = 'openstack'grains['edu'] = 'shhnwangjian'# 返回字典return grains通過master同步腳本文件至每臺minion
salt '*' saltutil.sync_grains文件放在minion主機的/var/cache/salt/minion/extmods/grains目錄下
salt '*' grains.item edu # 獲取所有主機的edugrains優先級(item名稱相同的情況下): 1. 系統自帶 2. grains文件寫到 3. minion配置文件寫的 4. 自己寫的腳本
?
二、Pillar
動態數據,給特定的minion指定特定的數據。只有指定的minion自己能看到自己的數據。
salt '*' pillar.items開啟系統自帶,修改配置文件
vim /etc/salt/master重啟systemctl restart salt-master
執行salt '*' pillar.items 可以看到系統自帶的item
piller存在文件路徑設置
mkdir /srv/pillar
重啟systemctl restart salt-master
實現pillar流程
1)創建一個piller文件,python?jinja2寫法
mkdir /srv/pillar/web cd /srv/pillar/web vim apache.sls {% if grains['os'] == 'CentOS' %} apache: httpd {% elif grains['os'] == 'Debian' %} apache: apache2 {% endif %}2)創建TOP FILE文件
vim /srv/pillar/top.sls base:'linux-node2.example.com':- web.apache salt '*' saltutil.refresh_pillar # 刷新 salt '*' pillar.items apache目標選擇
salt -I 'apache:httpd' test.ping?
三、Grains VS?Pillar
?
??
?
?
轉載于:https://www.cnblogs.com/shhnwangjian/p/5985868.html
總結
以上是生活随笔為你收集整理的Saltstack数据系统Grains和Pillar(三)的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Lua的require机制
- 下一篇: 域名备案_网页资料
