SaltStack组件
2019獨角獸企業重金招聘Python工程師標準>>>
一、簡述
? ? 在SaltStack系統中我們的管理對象叫作Target,在Master上我們可以采用不同Target去管理不同的Minion。這些Target都是通過去管理和匹配Minion的ID來做的一些集合。
二、Target
? ? 1.正則匹配
[root@salt-master-1?~]#?salt?-E?'salt-minion*'?test.ping salt-minion-2:True salt-minion-1:True? ? 2.列表匹配
[root@salt-master-1?~]#?salt?-L?salt-minion-1,salt-minion-2?test.ping salt-minion-2:True salt-minion-1:True? ?3.Grains匹配
? ?4.組匹配
? ? 需要在配置文件中加以下配置
nodegroups:mygroups:?'L@salt-minion-1,salt-minion-2'? ? 5.復合匹配
[root@salt-master-1?~]#?salt?-C?'G@os:MacOS?or?L@salt-minion-1'?test.ping salt-minion-1:True? ? 6.CIDR匹配
[root@salt-master-1?~]#?salt?-S?'10.0.0.0/16'?test.ping salt-minion-1:True salt-minion-2:True? ? 7.Pillar值匹配
salt?-I?'key:value'?test.ping Minion:True Minion1:True三、Grains講解
? ? Grains是SaltStack組件中非常重要的組件之一,因為我們在做配置部署的過程中經常會使用它,Grains是SaltStack記錄的Minion的一些靜態信息的組件,我們可以簡單地理解為Grains里面記錄著每臺Minion地一些常用屬性,比如CPU、內存、磁盤、網絡信息等,我們可以通過grains.items查看某臺Minion地所有Grains信息,Minion的Grains信息是Minions啟動的時候采集匯報給Master的,在實際應用環境中我們需要根據自己的需求去自定義一些Grains,關于自定義Grains的常用方法有以下幾種:
? ? 通過Minion配置文件定義
? ? 通過Grains相關模塊定義
? ? 通過Python腳本定義 ? ?//后面會講如何通過python腳本自定義一些Grains信息
? ? 1.了解Grains相關的命令用法:
[root@salt-master-1?~]#?salt?'salt-minion-1'?sys.list_functions?grains salt-minion-1:-?grains.append-?grains.delval-?grains.filter_by-?grains.get-?grains.get_or_set_hash-?grains.has_value-?grains.item-?grains.items-?grains.ls-?grains.remove-?grains.setval-?grains.setvals? ? 2.通過Minion配置文件定義Grains
? ? 比較簡單的放大是通過minion的配置文件來定義(Minion的Grains信息是在Minion服務啟動的時候匯報給Master的),但為了統一Minion的Grains管理,我們把這些文件存儲到minion.d/grains文件中
[root@salt-minion-1?~]#?cat?/etc/salt/minion.d/grains.conf grains:roles:-?webserver-?memcachedeployment:?datacenter4cabinet:?13cab_u:?14-15 [root@salt-minion-1?~]#?systemctl?restart?salt-minion.service #master [root@salt-master-1?~]#?salt?'salt-minion-1'?grains.item?roles salt-minion-1:----------roles:-?webserver-?memcache? ? 3.通過Grains模版定義Grains
[root@salt-master-1?~]#?salt?'salt-minion-1'?grains.append?members?'web1' salt-minion-1:----------members:-?web1 [root@salt-master-1?~]# [root@salt-master-1?~]#?salt?'salt-minion-1'?grains.item?members salt-minion-1:----------members:-?web1 #使用grains.setvals同時設置多對Grains信息 [root@salt-master-1?~]#?salt?'salt-minion-2'?grains.setvals?"{'salt':?'good',?'book':?'cool'}" salt-minion-2:----------book:coolsalt:good [root@salt-master-1?~]#?salt?'salt-minion-2'?grains.item?salt salt-minion-2:----------salt:good四、數據管理中心Pillar
? ? Pillar也是SaltStack組件中非常重要的組件之一,是數據管理中心,我們經常配合states在大規模的配置管理工作中使用它,Pillar在SaltStack中主要的作用就是存儲和定義配置管理中需要的一些數據,比如軟件版本號、用戶名密碼等信息,它的定義存儲格式跟Grains類似,都是YAML格式。
? ? 在Master配置文件中有一段Pillar setting選項專門定義Pillar相關的一些參數:
#pillar_roots: #??base: #????-?/srv/pillar? ?Pillar_roots目錄可以按需修改為自己定義的工作目錄,我們首先去pillar工作目錄新建top.sls文件然后引用兩個sls文件:
? ? Pillar相關的一些模塊用法:
[root@salt-master-1?~]#?salt?'salt-minion-1'?sys.list_functions?pillar salt-minion-1:-?pillar.data-?pillar.ext-?pillar.get-?pillar.item-?pillar.items-?pillar.raw #查看定義的pillar [root@salt-master-1?~]#?salt?'salt-minion-1'?pillar.item?zabbix salt-minion-1:----------zabbix:----------package-name:zabbix20port:10050user:adminversion:2.0.16-1? ? SaltStack也支持從外部讀取pillar數據。我們可以把pillar數據保存在數據庫或者存儲服務器上。
五、針對管理對象
? ? Module是我們日常使用SaltStack接觸最多的一個組件,用于管理對象操作的,這也是SaltStack通過push的方式進行管理的入口,比如我們日常簡單的執行命令、查看安裝情況、查看服務運行情況等工作都是通過SaltStack Module來實現的。默認安裝好Master和Minion包之后,系統上會安裝很多Module,大家可以通過以下命令查看支持的所有Module列表。
? ? 1.查看Minion支持的所有module列表:
[root@salt-master-1?~]#?salt?'salt-minion-1'?sys.list_modules salt-minion-1:-?acl-?aliases-?alternatives-?archive-?artifactory-?at-?augeas-?blockdev-?btrfs-?buildout-?cloud-?cmd-?composer-?config-?container_resource-?cp-?cron-?daemontools-?data-?defaults-?devmap-?dig-?disk-?django-?dnsmasq-?dnsutil-?drbd-?elasticsearch-?environ-?etcd-?event-?extfs-?file-?firewalld-?gem-?genesis-?gnome-?grains-?group-?hashutil-?hg-?hipchat-?hosts-?http-?img-?incron-?ini-?introspect-?ip-?iptables-?jboss7-?jboss7_cli-?key-?keyboard-?kmod-?locale-?locate-?logrotate-?lowpkg-?lvm-?match-?mine-?modjk-?mount-?network-?openstack_config-?pagerduty-?partition-?pillar-?pip-?pkg-?pkg_resource-?postfix-?publish-?pyenv-?quota-?random-?random_org-?rbenv-?ret-?rsync-?runit-?rvm-?s3-?saltutil-?schedule-?scsi-?sdb-?seed-?serverdensity_device-?service-?shadow-?slack-?smtp-?sqlite3-?ssh-?state-?status-?supervisord-?sys-?sysctl-?syslog_ng-?system-?test-?timezone-?user-?vbox_guest-?virtualenv-?xfs? ? 2.查看指定module的所有function
轉載于:https://my.oschina.net/u/2317144/blog/540509
總結
以上是生活随笔為你收集整理的SaltStack组件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: day7 python学习随笔
- 下一篇: Ubuntu14.04安装GitLab指