saltstack从简单到入门详解(二)

6、grains使用以及cmd.runnode

grains.items主要用来收集minion端的信息,方便进行信息采集,后续的pillar使用,根据硬件信息自动匹配配置文件等,基本用法:shell

#salt “*” grains.ls            #显示全部minionitem安全

#salt “*” grains.items         #显示全部minionitemsession

#salt “*” grains.item osshell   #显示os的相关信息,若是多个item,用空格分隔ssh

除了salt自带的items能够获取到系统信息以外,咱们还可使用shell命令,咱们能够借助salt另外一个强大的命令:cmd.run,假如咱们须要获取minion端的内存信息ide

#salt “*” cmd.run “free-m”ui

若是想要在minions执行脚本程序,可使用cmd.script命令加密

#salt “*” cmd.scriptsalt://test.shspa

其中salt://test.sh是脚本的存放路径操作系统

7、states文件

salt states的核心是sls文件,该文件使用YAML语法定义了一些K/V的数据,sls文件存放路径在master配置文件中定义,默认为/srv/salt,若是目录不存在,则手动建立,在salt中能够经过salt://代替根路径,例如,能够经过salt://top.sls访问/srv/salt/top.sls,在statestop文件也由master配置文件定义,默认为top.sls,该文件为states的入口文件。

一个简单的top.sls文件以下

base:

"*":              #匹配全部minion主机

-  httpd        #定义state.sls的名字

minion:           #经过分组名匹配,必需要定义match:nodegroup

-  match:nodegroup

-  httpd

"os:CentOS":       #经过grains模块匹配,必需要定义match:grain

-  match:grain

-  httpd

接下来咱们就能够编写httpd.sls文件了(注意每行的缩进和空格,缩进为2个空格,冒号后面一个空格)

httpd:                #ID说明,表示能够被操做的名字

  pkg:                #包管理

    - name: httpd      #包的名称

- installed         #包的状态(installed:安装;remove:卸载)

  service:             #服务管理

    - name: httpd      #服务名称

- running          #服务状态

- reload: True      #是否容许reload

- require:          #依赖关系

  - pkg: httpd

- watch:            #监测是否发生改变

  - file:/etc/httpd/conf/httpd.conf

/etc/httpd/conf/httpd.conf:  #定义文件

  file:

    - managed            #文件管理

- source: salt://httpd.conf          #源文件路径

- user: root                     #文件属主

- group: root                   #文件属组

- mode: 644                  #文件权限

- backup: minion              #更改前备份

强制执行下httpd.sls

[root@master salt]# salt"*" state.sls httpd

state的逻辑关系:

include   包含某个文件,例如,我新建一个test.sls,就能够继承httpd相关配置而没必要从新编写

match    匹配某个模块 ,好比 以前定义top.sls时候的 match:grain match: nodegroup

require   依赖某个state,在运行此state前,先运行依赖的state,依赖能够有多个 好比文中的httpd模块内,相关的配置必需要先依赖httpd的安装

watch   在某个state变化时运行此模块,文中的配置,相关文件变化后,当即执行相应操做

order     优先级比requirewatch低,有order指定的state比没有order指定的优先级高

8、pillar的定义及使用

PillarSalt很是重要的一个组件,它用于给特定的minion定义任何你须要的数据,这些数据能够被Salt的其余组件使用。这里能够看出Pillar的一个特色,Pillar数据是与特定minion关联的,也就是说每个minion都只能看到本身的数据,因此Pillar能够用来传递敏感数据(在Salt的设计中,Pillar使用独立的加密session,也是为了保证敏感数据的安全性)。另外还能够在Pillar中处理平台差别性,好比针对不一样的操做系统设置软件包的名字,而后在State中引用等。

默认状况下,master配置文件中的全部数据都添加到pillar中,且对全部minion可用,在master的配置文件中咱们须要配置下,若是/srv/pillar目录不存在则手动建立,state同样,pillar也是须要一个top.sls文件做为一个入口,用来指定对象,配置方式与state同样

编辑top.sls文件

base:

  "*":

    - test

编辑test.sls文件

test_path: "salt://httpd.conf"

test_user: root

test_group: root

能够在state文件中引用pillar数据

/etc/httpd/conf/httpd.conf:

  file:

    - managed

    - source: {{ pillar['test_path'] }}

    - user: {{ pillar['test_user'] }}

    - group: {{ pillar['test_group'] }}

咱们还能够在pillar中加入判断条件,这里就很少说了,

更多高级用法请参考官网文档中文地址:http://docs.saltstack.cn/zh_CN/latest/

相关文章
相关标签/搜索