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