1、簡述node
在SaltStack系統中咱們的管理對象叫做Target,在Master上咱們能夠採用不一樣Target去管理不一樣的Minion。這些Target都是經過去管理和匹配Minion的ID來作的一些集合。python
2、Targetweb
1.正則匹配sql
[root@salt-master-1 ~]# salt -E 'salt-minion*' test.ping salt-minion-2: True salt-minion-1: True
2.列表匹配shell
[root@salt-master-1 ~]# salt -L salt-minion-1,salt-minion-2 test.ping salt-minion-2: True salt-minion-1: True
3.Grains匹配
數據庫
[root@salt-master-1 ~]# salt -G 'os:CentOS' test.ping salt-minion-2: True salt-minion-1: True
4.組匹配
django
[root@salt-master-1 ~]# salt -N mygroups test.ping salt-minion-2: True salt-minion-1: True
須要在配置文件中加如下配置服務器
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匹配app
[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
3、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 - memcache deployment: datacenter4 cabinet: 13 cab_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: cool salt: good [root@salt-master-1 ~]# salt 'salt-minion-2' grains.item salt salt-minion-2: ---------- salt: good
4、數據管理中心Pillar
Pillar也是SaltStack組件中很是重要的組件之一,是數據管理中心,咱們常常配合states在大規模的配置管理工做中使用它,Pillar在SaltStack中主要的做用就是存儲和定義配置管理中須要的一些數據,好比軟件版本號、用戶名密碼等信息,它的定義存儲格式跟Grains相似,都是YAML格式。
在Master配置文件中有一段Pillar setting選項專門定義Pillar相關的一些參數:
#pillar_roots: # base: # - /srv/pillar
Pillar_roots目錄能夠按需修改成本身定義的工做目錄,咱們首先去pillar工做目錄新建top.sls文件而後引用兩個sls文件:
[root@salt-master-1 ~]# cat /srv/pillar/top.sls base: # 指定環境 '*': # Target - packages # 引用packages.sls 或者 packages/init.sls - services # 引用services.sls 或者 services/init.sls [root@salt-master-1 ~]# cat /srv/pillar/packages.sls zabbix: package-name: zabbix20 version: 2.0.16-1 [root@salt-master-1 ~]# cat /srv/pillar/services.sls zabbix: port: 10050 user: admin
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: zabbix20 port: 10050 user: admin version: 2.0.16-1
SaltStack也支持從外部讀取pillar數據。咱們能夠把pillar數據保存在數據庫或者存儲服務器上。
5、針對管理對象
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
#查看cmd module的全部functions命令 [root@salt-master-1 ~]# salt 'salt-minion-1' sys.list_functions cmd salt-minion-1: - cmd.exec_code - cmd.exec_code_all - cmd.has_exec - cmd.retcode - cmd.run - cmd.run_all - cmd.run_chroot - cmd.run_stderr - cmd.run_stdout - cmd.script - cmd.script_retcode - cmd.shell - cmd.shells - cmd.tty - cmd.which - cmd.which_bin #查看cmd module的詳細用法與例子的命令以下: [root@salt-master-1 ~]# salt 'salt-minion-1' sys.doc cmd