发表于 2018-8-1 08:07:58

SaltStack入门(二)Grains、NoteGroup和State

  开始前须知:
  SLS文件默认使用序列化数据格式-YAML,这个格式风格你要注意的是:不要使用Tab键缩进,通常开头缩进2个空格,字符后缩进1个空格,如冒号、逗号、横杠。
  如果执行命令时,忘记语法,可以使用sys.doc模块查询salt模块相关使用方法。
  # salt '*' sys.doc disk
  如想看执行过程,可加-l debug,如下:
  # salt '*' cmd.run 'ls' -l debug
  1、执行命令时,查找minion目标(targeting)常用有三种方式:
  salt ‘bash’ command         #根据bash形式匹配主机(如host1、host2)
  例:# salt 'host*' test.ping
  salt –E ‘RE’ command          #--pcre,使用正则表达式匹配主机
  例:# salt -E '(web|mysql)' test.ping
  salt –N group command         #--nodegroup,使用分组匹配,前提已经做好分组
  例:# salt -N web test.ping
  salt –L ‘host1,host2’command   #--list,根据主机名
  例:# salt -L 'host1,host2' test.ping
  salt -G 'os:CentOS' command      #--grains,根据grains获取的信息来查找
  Grains是什么?
  grains是minion启动时采集服务器系统信息,运行过程中数据不会发生变化,如操作系统、内核、网卡等一些静态的数据。
  Grains相关命令:
  列出grains相关模块
  # salt '*' grains.ls
  列出minion采集的grains静态数据
  # salt '*' grains.items
  列出某个grains信息
  # salt '*' grains.item os
  对grains有了初步了解,现在会用salt –G命令了吧!
  # salt -G 'os:Ubuntu' test.ping
  2、NodeGroup(minion分组)
# vi /etc/salt/master       #不用重启salt服务,修改后即生效  
nodegroups:
  
web: 'L@host1'      #以列表形式写,多个主机以逗点分割
  
db: 'L@host2'
  

  
注:也可以使用通配符,如web: 'host*'
  

  
#测试分组后效果
  
# salt -N db test.ping
  
host2:
  
   True
  

  
# salt -N web test.ping
  
host1:
  
True
  3、States(配置管理)
  要想启用配置管理功能,首先要对受控端进行设置,让minion以root用户接受主空端管理指令:
# vi /etc/salt/minion  
user: root
  开启主控端配置管理功能:
# vi /etc/salt/master  
file_roots:
  
base:
  
    - /srv/salt/               #默认存放管理指令和文件位置
  手动创建目录和默认入口配置文件(top.sls)
# mkdir /srv/salt  
# cd /srv/salt
  
# vi top.sls          #使用YAML语言格式定义
  
base:            #默认的起点配置
  
'*':         #匹配所有在线minion,指定组直接写组名
  
    - web.httpd    #web是默认/srv/salt下目录,http是state文件名字,以sls结尾
  

  
----------------------------
  
如果想使用分组定义,如下:
  
base:
  
web:       #组名
  
   - match: nodegroup
  
   - web.httpd
  
----------------------------
  

  
# mkdir web
  
# vi web/httpd.sls      #创建目录或文件名根据自己情况定义
  
httpd:                  #说明
  
pkg:                  #包管理
  
   -name: apache2         #包名称
  
- installed               #包的状态,卸载是removed
# salt '*' state.sls web.httpd    #只执行单个sls文件(/srv/salt/web/httpd.sls)  
# salt '*' state.highstate      #给minion永久添加状态,读top关联的sls文件
  
host1:
  
----------
  
         ID: httpd
  
   Function: pkg.installed
  
       Name: apache2
  
   Result: True
  
    Comment: The following packages were installed/updated: apache2.
  
    Started: 11:30:40.994840
  
   Duration: 103211.119 ms
  
    Changes:
  
                  省略.....
  
Summary
  
------------
  
Succeeded: 1 (changed=1)
  
Failed:   0
  
------------
  
Total states run:   1
  
host2:
  
----------
  
         ID: httpd
  
   Function: pkg.installed
  
       Name: apache2
  
   Result: True
  
    Comment: The following packages were installed/updated: apache2.
  
    Started: 11:30:41.458100
  
   Duration: 122426.802 ms
  
    Changes:
  
               省略.....
  
Summary
  
------------
  
Succeeded: 1 (changed=1)
  
Failed:   0
  
------------
  
Total states run:   1
  Apache已安装完毕并启动,然后将修改后的配置文件推送到minion(apache服务器),配置文件已修改好,位置在/srv/salt/web/httpd.conf,修改内容是添加个虚拟主机,在httpd.sls添加文件分发信息。
# vi httpd.sls  
httpd:
  
pkg:
  
   -name: apache2
  
   -installed
  
service:
  
   -name: apache2         #服务脚本名
  
   -running            #运行状态
  
   -reload: True         #如watch监控项发生变化,则重新加载配置
  
   -watch:               #监控文件变化
  
    - file: /etc/apache2/httpd.conf
  
/etc/apache2/httpd.conf:         #分发到minion位置
  
file.managed:            #文件管理操作
  
   -source: salt://web/httpd.conf#修改好的配置文件位置
  
   -user: root
  
   -group: root
  
   -mode: 644
# salt '*' state.sls web.httpd         #再执行下  使用下面命令查看minion服务器apache配置文件已经更新完成:
# salt '*' cmd.run 'cat /etc/apache2/httpd.conf'
页: [1]
查看完整版本: SaltStack入门(二)Grains、NoteGroup和State