saltstack state模块-状态管理

简介:

一、说明

      本文基于前两篇的salstack的安装部署和使用的基础上,又一个常用的功能,

State模块是saltstack核心的功能,状态管理包括:Package,File,Network,                     Service, User等常用功能,其他功能参考官方文档:

https://docs.saltstack.com/en/latest/ref/states/all/index.html

本次的实验环境依然和前面的一致两台。

任务:通过grins,pillar,state向指定minion安装apache软件包,并启动。

开启state的文件目录

#cat  -n /etc/salt/master

1
2
3
file_roots:
    base:
      /srv/salt

二、pillar结合grains的文件编写

主要通过pillar,grains给state提供特定安装条件

1、pillar中的变量生成配置

#cat /srv/pillar/top.sls

1
2
3
base:
    "*" :
       - apacheData

#cat /srv/pillar/apacheData.sls

1
2
3
4
5
6
pkg:
     {%  if  grains[ "os_family" ] ==  "RedHat"  %}
        apache: httpd
     {%  else  %}
        apache: apache2
     {% endif %}

说明:通过 pillar,结合grains的os_family值,让apache的变量在minion端动态生成保存在pillar.data中;

2、同步更新到minion

#salt "*" saltutil.refresh_pillar

此时可通过salt "*" pillar.data pkg  如图:


wKioL1nOC7PRLpqGAAIhD3unVaE196.png



三、state文件编写

1、states配置文件

cat /srv/salt/top.sls

1
2
3
base:
    "*" :
       - apache

cat /srv/salt/apache.sls

1
2
3
4
5
6
7
8
apache:
    pkg:
       - installed
       - name: {{ pillar[ "pkg" ][ "apache" ] }}
    service.running:
       - name: {{ pillar[ "pkg" ][ "apache" ] }} 
       - require:
          - pkg: {{ pillar[ "pkg" ][ "apache" ] }}

2、同步到minion

测试是否有错误:

# salt  "*" state.highstate test=True

如果没有问题

#salt  "*" state.highstate

执行成功出现类似下面的提示

wKiom1nODL7hY1_OAATQUPfbwUw949.png

验证:

[root@web02_135 pillar]# salt -C "minion_local" cmd.run "service httpd status"
minion_local:
    httpd (pid  12909) is running...


到此一个通过过pillar 结合grains 和state让客户端操持状态和任务下发完成。本文只是抛砖引玉,入门使用。欢迎交流指正。










本文转自 dyc2005 51CTO博客,原文链接:http://blog.51cto.com/dyc2005/1969773,如需转载请自行联系原作者
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
网络协议 关系型数据库 MySQL
|
关系型数据库 MySQL Shell
|
测试技术 Shell 应用服务中间件