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格式)的主要内容,如果未能解决你的问题,请参考以下文章