SaltStack組件

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
相關文章
相關標籤/搜索