SaltStack组件

一、简述

    在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匹配

[root@salt-master-1 ~]# salt -G 'os:CentOS' test.ping
salt-minion-2:
    True
salt-minion-1:
    True

   4.组匹配

[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匹配

[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
        - 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

四、数据管理中心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数据保存在数据库或者存储服务器上。

五、针对管理对象

    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








你可能感兴趣的:(SaltStack组件)