saltstack的sls文件树与sls文件编写

在使用salt配置一些主机的时候会经常的用到SLS文件树,这个目录我们可以在master上的/etc/salt/master文件中进行修改,默认的路径如下

file_roots:
   base:
     - /srv/salt/

通常是在/srv/salt之下,然后也有应用与Pillar系统的文件树,大体的结构相同.

之前提到过saltstack的脚本是使用YAML格式来渲染的,YAML是python中指代字典类型数据结构的结构序列化格式,基本上的结构就是键值对的形式,需要注意的是SLS文件中每个小节的key称为ID,这个ID必须全局唯一不然会出现错误。

首先无论是在state或者是pillar的系统中,都会有一个名字叫做top.sls的文件,这个文件指定了环境和给Minion端提供的SLS文件
例如这个配置openstack的top.sls文件

base:
  - open.pkginstall.pkg
  - open.chrony.chrony
  - open.mysql.mysql
  - open.rabbitMQ.rabbitMQ
  - open.memcached.memcached
  - open.keystone.startup
  - open.glance.glance
  - open.nova.nova
  - open.neutron.neutron

这个目录的结构大体如下

.
├── chrony
│   └── chrony.sls
├── files
│   ├── admin-openrc
│   ├── daxingsb.sql
│   ├── demo-openrc
│   ├── glance-api.conf
│   ├── keystone
│   │   ├── httpd.conf
│   │   ├── keystone.conf
│   │   └── wsgi-keystone.conf
│   ├── memcached
│   ├── neutron.conf
│   ├── nova_compute.conf
│   ├── nova.conf
│   └── openstack.cnf
├── glance
│   └── glance.sls
├── keystone
│   ├── auth.sls
│   ├── keystone.sls
│   ├── keyuser.sls
│   └── startup.sls
├── memcached
│   └── memcached.sls
├── mysql
│   └── mysql.sls
├── neutron
│   ├── neutron_compute.sls
│   ├── neutron_controller.sls
│   └── neutron.sls
├── nova
│   ├── nova-compute.sls
│   └── nova.sls
├── pkginstall
│   └── pkg.sls
├── rabbitMQ
│   └── rabbitMQ.sls
└── startup.sls

base之下指明了所有需要执行的SLS文件。

STATE模式下的配置管理

include块的使用
通常需要引用其他的SLS文件可以使用这个模块
例如

include:
  - pip
  - django-install

然后需要注意的是include是一个顶级的声明在一个脚本中只能出现一次,而且所下属的模块必须存在。

requisite的使用
通过requisite的使用我们可以改变执行时的顺序。
require
最简单的就是require,表示一种依赖性,需要什么作为这个模块执行的先决条件
比如说

apache_service:
  service.running:
    - name: httpd
    - require:
      - pkg: httpd

以上表明要开启httpd服务需要先安装httpd,在平时的使用中state会保证配置过程的正确。
watch
这个模块的作用是发现watch之下的项目有什么变动之后,执行一个指定动作,比如说修改apache的配置文件之后重新启动

service:
  - running
  - watch:
    - file: apache2

use
use是类似requisite一样的调用,但是use的state不会将调用项目的requisite继承过来,比如说

apache_conf:
  file:
    - managed
    - name: /etc/httpd/httpd.conf
    - user: root
    - group: root
    - mode: 755
    - watch:
      - service: httpd

mysql_conf:
  file:
    - managed
      - name: /etc/mysql/my.cnf
      - use:
        -file: apache_conf
      - watch:
        - service: mysql

这个mysql_conf模块可以安全的将apache的配置文件继承过来,同时不会触发httpd服务的重启。
prereq
当一个state在使用prereq的时候,salt会对指定关联的项目运行test模式来预计是否会进行变更,如果有变更则这个模块才会执行。

conffile:
  file:
    - httpd.conf

shutdown:
  service:
    - dead
    - name: httpd
    - prereq: 
      - file: conffile

以上的脚本就是当httpd的配置文文件如果被修改触发prerq,然后将服务关闭

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值