SaltSack自动化运维:SalkStack的state模块(使用YAML格式)

Posted Tuki_a

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SaltSack自动化运维:SalkStack的state模块(使用YAML格式)相关的知识,希望对你有一定的参考价值。

什么是state模块?

远程执行模块的执行是过程式的,而状态是对minion的一种描述和定义,管理人员不关心部署任务如何完成的,只需要描述minion的状态,确保主机处于state文件所描述的状态下
state模块的核心是写sls(Salt State file)文件(脚本必须是.sls后缀),sls文件默认格式是YAML格式,Salt默认使用Jinja模板系统来生成YAML,jinja是是python语言开发的一个模板引擎,类似于Djingo模板系统,简单并强大,支持for if 等循环判断。salt state主要用来描述系统,软性,服务,配置文件的状态,常常被称为配置管理!也是saltstack第二大作用。
通常state,pillar,top file会用sls文件来编写。state文件默认是放在/srv/salt中,它与你的master配置文件中的file_roots设置有关。
点击查看所有内置的state模块列表

什么是YAML?

YAML(/ˈjæməl/,尾音类似camel骆驼)是一个可读性高,用来表达数据序列化的格式
YAML仍是一种标记语言
默认的SLS文件的renderer(渲染器)是YAML renderer。YAML是一个有很多强大特性的标记性语言。
Salt使用了一个YAML的小型子集,映射非常常用的数据结构,像列表和字典。
YAML renderer的工作是将YAML数据格式的结构编译成为Python数据结构给Salt使用。
尽管YAML语法可能第一眼看上去很简洁但令人畏惧,但是只要记住三个非常简单的规则就可以使用YAML语法写SLS文件了。
重要的三个语法规则:
1、YAML使用一个固定的缩进风格表示数据层结构关系。Salt需要每个缩进级别由两个空格组成。不要使用tabs。
2、字典的keys在YAML中的表现形式是一个以冒号结尾的字符串。Values的表现形式冒号下面的每一行,用一个空格隔开,即冒号后边要有一个空格!
3、想要表示列表项,使用一个短横杠加一个空格。多个项使用同样的缩进级别作为同一列表的一部分。列表可以可以作为一个键值对的value。

编写下载并运行apache的模块

先在/srv/salt/下创建相应目录

[root@server5 salt]# mkdir apache/
[root@server5 salt]# vim apache.sls		
#这个没在apache目录下,后面我还在apache目录下编写了init.sls。两个一样但优先识别没在apache目录下的文件。
[root@server5 salt]# rm -fr apache.sls	#删掉
[root@server5 salt]# ls
apache  _modules
[root@server5 salt]# cd apache/

然后在一台空闲的主机下载apache并将配置文件拷贝到master主机/srv/salt/apache/目录下
之后再编写sls文件

[root@server5 apache]# ls
httpd.conf  init.sls
[root@server5 apache]# vim init.sls		#文件一定要在目录下写,因为base默认目录
apache:					#声明必须是唯一的,一个模块中声明 不能多次调用
  pkg.installed:		#下载apache
    - pkgs:
      - httpd
      - php
  service.running:		#运行apache
    - name: httpd		#没用文件名声明,要告诉去处-name
    - enable: true
    - reload: true
    - watch:			#监控配置文件
      - file: /etc/httpd/conf/httpd.conf

/etc/httpd/conf/httpd.conf:
  file.managed:
    - source: salt://apache/httpd.conf

master端推送到minion端执行

 [root@server5 apache]# salt server6 state.sls apache

在这里插入图片描述

可以看到没报错,执行成功!
在这里插入图片描述
去minion端查看apache状态,一致!
在这里插入图片描述

以上是关于SaltSack自动化运维:SalkStack的state模块(使用YAML格式)的主要内容,如果未能解决你的问题,请参考以下文章

SaltSack自动化运维:SaltAPI

SaltSack 自动化运维2

SaltSack自动化运维:job管理

SaltSack自动化运维:编写简单的远程执行模块

SaltSack自动化运维:Zabbix的部署

SaltSack自动化运维:topmaster--syndic--master