state树结构

[root@saltmaster salt]# tree .

.

├── app_env   #应用环境

├── grains       #动态变量

├── int_env     #初始化环境

├── modules   #模块

├── pillar         #静态变量

├── template   #模板

└── top.sls   #top.sls是配置管理的入口文件

这里介绍一下sls文件

sls文件是state系统的核心。sls描述了系统的目标状态。

使用子目录来做组织是个很好的选择,每一个子目录描述一个资源。每个子目录可以由一个点来表示。selinux.init代表的就是子目录selinux/init.sls

init.sls在一个子目录里面表示引导文件,也就表示子目录本身。所以selinux.init.sls代表的就是子目录selinux

定义一个selinux的环境

mkdir -p app_env/selinux
[root@saltmaster salt]# cat app_env/selinux/init.sls 
/etc/sysconfig/selinux:
  file.managed:
    - source: salt://template/app_env/selinux/selinux
    - user: root
    - group: root
    - mode: 600
    - template: jinja

定义模板文件

mkdir -p templat/app_env/selinux
[root@saltmaster salt]# cat template/app_env/selinux/selinux 
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

测试

[root@saltmaster salt]# salt node1 state.sls app_env.selinux.init test=True
node1:
    ----------
    file_|-/etc/sysconfig/selinux_|-/etc/sysconfig/selinux_|-managed:
        ----------
        __run_num__:
            0
        changes:
            ----------
            mode:
                0600
        comment:
            The file /etc/sysconfig/selinux is set to be changed
        duration:
            34.653
        name:
            /etc/sysconfig/selinux
        result:
            None
        start_time:
            12:17:07.454892

这里由于我两个主机的selinux文件是一样的,所以没有看出什么改变,我这里只是一个范例,欢迎来吐槽

如果测试没有问题就可以去掉test=True这个选项,执行就可以