saltstack/salt的state.sls的使用

SLS(代表SaLt State文件)是Salt State系统的核心。SLS描述了系统的目标状态,由格式简单的数据构成。这经常被称作配置管理 首先,在master上面定义salt的主目录,默认是在/srv/salt/下面,vim /etc/salt/master:

file_roots:
   base:
     - /srv/salt
   dev:
    - /srv/salt-dev 

然后,在/srv/salt下面创建top.sls文件(如果有的话,就不用创建了,直接编辑好了) vim top.sls

base:
  ‘*‘: 

top.sls 默认从 base 标签开始解析执行,下一级是操作的目标,可以通过正则,grain模块,或分组名,来进行匹配,再下一级是要执行的state文件

base:
  ‘*‘:               #通过正则去匹配所有minion
    - nginx          #这里都是我自己写的state.sls模块名 这里可以无视 后面会提到

  my_app:             #通过分组名去进行匹配 必须要定义match:nodegroup
    - match: nodegroup
    - nginx

  ‘os:Redhat‘:        #通过grains模块去匹配,必须要定义match:grain
    - match: grain
    - nginx 

整个top.sls大概的格式就是这个样子,编写完top.sls后,编写state.sls文件;

cd /srv/salt
vim nginx.sls 

nginx.sls内容:

nginx:
  pkg:               #定义使用(pkg state module)
    - installed      #安装nginx(yum安装)
  service.running:   #保持服务是启动状态
    - enable: True
    - reload: True
    - require:
      - file: /etc/init.d/nginx
    - watch:                 #检测下面两个配置文件,有变动,立马执行上述/etc/init.d/nginx 命令reload操作
      - file: /etc/nginx/nginx.conf
      - file: /etc/nginx/fastcgi.conf
      - pkg: nginx
/etc/nginx/nginx.conf:       #绝对路径
  file.managed:
    - source: salt://files/nginx/nginx.conf  #nginx.conf配置文件在salt上面的位置
    - user: root
    - mode: 644
    - template: jinja   #salt使用jinja模块
    - require:
      - pkg: nginx

/etc/nginx/fastcgi.conf:
  file.managed:
    - source: salt://files/nginx/fastcgi.conf
    - user: root
    - mode: 644
    - require:
      - pkg: nginx 

在当前目录下面(salt的主目录)创建files/nginx/nginx.conf、files/nginx/fastcgi.conf文件,里面肯 定是你自己项配置的nginx配置文件的内容啦;使用salt做自动化,一般nginx都是挺熟悉的,这里不做详细解释了

测试安装:

[email protected] salt # salt ‘sa10-003‘ state.sls nginx test=True
··········这里省略输出信息
Summary
------------
Succeeded: 8
Failed:    0
------------
Total:     8 

往minion上面进行推送的时候,一般salt ‘sa10-003‘ state.sls nginx 这种命令;当然,也可以执行 salt sa10-003 state.highstate 这种命令会默认匹配所有的state.sls模块。其中test=True 是指测试安装 ,也就是不进行实际操作,只是查看测试效果。



state的逻辑关系列表:

include: 包含某个文件 比如我新建的一个my_webserver.sls文件内,就可以继承nginx和php相关模块配置,而不必重新编写

[email protected] salt # cat my_webserver.sls
include:
  - nginx
  - php 

match: 配模某个模块,比如 之前定义top.sls时候的 match: grain match: nodegroup require: 依赖某个state,在运行此state前,先运行依赖的state,依赖可以有多个 比如文中的nginx模块内,相关的配置必须要先依赖nginx的安装

- require:
  - pkg: nginx 

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

- watch:
  - file: /etc/nginx/nginx.conf
  - file: /etc/nginx/fastcgi.conf
  - pkg: nginx 

order: 优先级比require和watch低,有order指定的state比没有order指定的优先级高,假如一个state模块内安装多个服务,或者其他依赖关系,可以使用

nginx:
  pkg.installed:
    - order:1 

想让某个state最后一个运行,可以用last

时间: 2024-12-28 16:24:52

saltstack/salt的state.sls的使用的相关文章

saltstack/salt的state.sls和pillar定义以及使用

SLS(代表SaLt State文件)是Salt State系统的核心.SLS描述了系统的目标状态,由格式简单的数据构成.这经常被称作配置管理 首先,在master上面定义salt的主目录,默认是在/srv/salt/下面,vim /etc/salt/master: file_roots:    base:      - /srv/salt    dev:     - /srv/salt-dev 然后,在/srv/salt下面创建top.sls文件(如果有的话,就不用创建了,直接编辑好了) vi

关于Saltstack核心模块state详解

一.问题背景:  学习使用自动运维工具saltstack的过程中,其中state模块是帮助管理员控制minion达到一个预想的状态.换句话来说,我想让minion能够远程执行命令,自动配置环境文件,软件安装.服务启动.关闭,信息收集等自动化操作,都能通过saltstack的state模块实现.  并且最重要的一个好处就是简单.简洁.方便.引用一段官方文档的话: Simplicity, Simplicity, SimplicityMany of the most powerful and usef

saltstack state.sls常用功能模板编写

saltstack常用功能模块编写 一.简介 Master - 控制中心,salt命令运行和资源状态管理端 Minions - 需要管理的客户端机器,会主动去连接Master端,并从Master端得到资源状态信息,同步资源管理信息 States - 配置管理的指令集 Modules- 包含命令行下运行的指令,和在配置文件里面使用的指令模块可以的函数可以在命令行下运行 Grains - minion端的变量,静态 pillar - minion端的变量,动态,可自定义 highstate - 给m

saltstack执行state.sls耗时长的坑

一直用的 jenkins + saltstack 自动化构建发布项目,一共也就不超过20台服务器,奈何运行时间越来越慢,并且负载越来越高(这里大部分都是使用state模块),但是不用state模块效率挺高的,所以初步锁定坑应该在 state配置以及运行机制上. 查阅各种资料果不其然,需要注意几点. Minion 配置 By default, the Salt fileserver recurses fully into all defined environmentsto attempt to

saltstack   state.sls 与 state.highstate

这里简单介绍一下state.sls 与 state.highstate 与区别,这也是自己在使用过程中的一点心得吧. 环境介绍:salt 2015.5.0 (Lithium) top.sls state.highstate 这个是全局的所有的环境的所有的状态生效: state.sls 用来指定特定sls进行处理. 当使用  salt '*' state.highstate 没有任何问题 可是当执行 salt '*' state.sls servers_packages 发现没法执行 翻看官方文档

SaltStack:Salt SSH

20. Salt SSH 在版本0.17.0当中,引入了新的传输系统,它支持通过SSH通道来实现Salt的通信.通过这种方式,我们可以将Salt routines直接通过SSH通道在远程主机上执行,而不需要在远程主机上运行Salt Minion,同样的道理,Salt Master也就不需要运行了.这样,也就实现了免客户端的方式的部署和实施. 注解: Salt SSH 并不能完全取代标准的Salt通信方式,它只是简单的提供了一个基于SSH通道的可选方式,这种方式不需要ZeroMQ和远程Agent的

saltstack salt 命令用法以及模块(二)

[[email protected] ~]# salt --help Usage: salt   [options]    '<target>'    <function>     [arguments] Options:   --version             show program's version number and exit [[email protected] ~]# salt --version salt 2015.5.5 (Lithium) --vers

saltstack内置state模块file之append

添加文件文本在文件尾部 salt.states.file.append(name, text=None, makedirs=False, source=None, source_hash=None, template='jinja', sources=None, source_hashes=None, defaults=None, context=None) name 被附加文件的路径 text 被添加字符串,一行或一列 makedirs 默认为False,如需要添加的文件父目录不存在则文件添加

saltstack内置state模块file之managed

managed管理一个模板文件,载入到各个节点并运行相应配置 salt.states.file.managed(name, source=None, source_hash='', user=None, group=None, mode=None, template=None, makedirs=False, dir_mode=None, context=None, replace=True, defaults=None, env=None, backup='', show_diff=True,