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:True2.列表匹配
[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:True6.CIDR匹配
[root@salt-master-1 ~]# salt -S '10.0.0.0/16' test.ping salt-minion-1:True salt-minion-2:True7.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.setvals2.通过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- memcache3.通过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-1SaltStack也支持从外部读取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学习随笔
- 下一篇: 以软件开发生命周期来说明不同的测试的使用