在大规模的配置管理工作中,我们要编写大量的states.sls文件。top.sls是states系统的入口文件,它负责指定哪些设备调用哪些states.sls文件。statse的默认工作目录是在/srv/salt目录下:

[root@master salt]# vim /etc/salt/master

599 file_roots:
600 base:
601 - /srv/salt/

 接下来我们以一个简单的例子来了解一下states文件。

<1>创建nginx目录,并且区分生产环境目录和测试环境目录。

[root@master salt]# pwd
/srv/salt
[root@master salt]# tree
.
├── nginx
│   ├── produced                                              //生产环境目录
│   │   ├── nginx.conf                             
│   │   └── nginx.sls
│   └── testing                                                  //测试环境目录
│   ├── nginx.conf
│   └── one.sls
└── top.sls                                                       //入口文件

<2>编辑一下states入口文件

[root@master salt]# vim top.sls

base:
'minion-1':                                           //代表匹配minion-1
- nginx.produced.nginx                       //引用nginx/produced/nginx.sls文件
'minion-2':                                           //代表匹配minion-2
- nginx.testing.nginx                           //引用nginx/testing/nginx.sls文件

<3>编辑生产环境的sls文件

[root@master salt]# vim nginx/produced/nginx.sls

/usr/local/nginx/config/nginx.conf:                                            //远端的需要管理的文件及路径
file.managed:
- source: salt://nginx/produced/nginx.conf                               //本地的文件地址
- user: root                                                                               //文件属主
- group: root                                                                             //文件属组
- mode: 755                                                                             //权限

<4>编辑nginx.conf文件以区别和测试环境的差异,在此我们就修改第一行

[root@master salt]# vim nginx/produced/nginx.conf

1 user  nginx nginx;

<5>编辑测试环境的sls文件

[root@master salt]# vim nginx/testing/nginx.sls

/usr/local/nginx/config/nginx.conf:
file.managed:
- source: salt://nginx/testing/nginx.conf
- user: www
- group: www
- mode: 755

<6>编辑nginx.conf文件以区别和生产环境的差异,在此我们也修改第一行

[root@master salt]# vim nginx/testing/nginx.conf

1 user  www www;

<7>执行生产环境的sls文件

[root@master salt]# salt 'minion-1' state.highstate

<8>去minion-1主机上看一下nginx.conf文件内容

[root@minion-1 ~]# vim /usr/local/nginx/config/nginx.conf

1 user nginx nginx;

<9>再执行测试环境的sls文件

[root@master salt]# salt 'minion-2' state.highstate

<10>去测试环境服务器上看一下nginx.conf文件

[root@minion-2 ~]# vim /usr/local/nginx/config/nginx.conf

1 user  www www;

一个简单的例子了解states的更多相关文章

  1. 用一个简单的例子来理解python高阶函数

    ============================ 用一个简单的例子来理解python高阶函数 ============================ 最近在用mailx发送邮件, 写法大致如 ...

  2. Spring-Context之一:一个简单的例子

    很久之前就想系统的学习和掌握Spring框架,但是拖了很久都没有行动.现在趁着在外出差杂事不多,就花时间来由浅入深的研究下Spring框架.Spring框架这几年来已经发展成为一个巨无霸产品.从最初的 ...

  3. 关于apriori算法的一个简单的例子

    apriori算法是关联规则挖掘中很基础也很经典的一个算法,我认为很多教程出现大堆的公式不是很适合一个初学者理解.因此,本文列举一个简单的例子来演示下apriori算法的整个步骤. 下面这个表格是代表 ...

  4. 扩展Python模块系列(二)----一个简单的例子

    本节使用一个简单的例子引出Python C/C++ API的详细使用方法.针对的是CPython的解释器. 目标:创建一个Python内建模块test,提供一个功能函数distance, 计算空间中两 ...

  5. fitnesse - 一个简单的例子(slim)

    fitnesse - 一个简单的例子(slim) 2017-09-30 目录1 编写测试代码(Fixture code)2 编写wiki page并运行  2.1 新建wikiPage  2.2 运行 ...

  6. Struts2的配置和一个简单的例子

    Struts2的配置和一个简单的例子 笔记仓库:https://github.com/nnngu/LearningNotes 简介 这篇文章主要讲如何在 IntelliJ IDEA 中使用 Strut ...

  7. 一个简单的例子搞懂ES6之Promise

    ES5中实现异步的常见方式不外乎以下几种: 1. 回调函数 2. 事件驱动 2. 自定义事件(根本上原理同事件驱动相同) 而ES6中的Promise的出现就使得异步变得非常简单.promise中的异步 ...

  8. 跨站脚本功攻击,xss,一个简单的例子让你知道什么是xss攻击

    跨站脚本功攻击,xss,一个简单的例子让你知道什么是xss攻击 一.总结 一句话总结:比如用户留言功能,用户留言中写的是网页可执行代码,例如js代码,然后这段代码在可看到这段留言的不同一户的显示上就会 ...

  9. Linux内核中的信号机制--一个简单的例子【转】

    本文转载自:http://blog.csdn.net/ce123_zhouwei/article/details/8562958 Linux内核中的信号机制--一个简单的例子 Author:ce123 ...

随机推荐

  1. my goal

    I want to get a good command of a programming language at the university, and I have to pass the tes ...

  2. mui组件 输入表单 快捷键mf

    <form class="mui-input-group"> <div class="mui-input-row"> <label ...

  3. Window下,利用Anaconda2创建jupyter-notebook的python3环境方法

    随着深度学习的火热,越来越多的人去学习和了解这门技术.而做算法的同学为了能够更快,更高效的写出相关的深度学习算法出来,需要比较方便的开发环境.今天主要介绍一下在jupyter notebook中,新增 ...

  4. 小程序wx.chooseImage的坑

    选择图片后可能重新执行onshow()和onhide(),可以在页面中添加锁变量,选择图片前获取,选择完释放,onshow中利用锁来中断执行

  5. Web服务器软件 (Tomcat)

    1.什么是服务器? 安装了服务器的软件的计算机 服务器软件:接收用户的请求(request),处理请求,做出响应. Web服务器软件:接收用户的请求(request),处理请求,做出响应,再Web服务 ...

  6. Flutter不完全安裝指南(AndroidStudio集成)

    Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面.真心無力吐槽這些所谓的中文站以及社区的文档,整理一下安装流程吧. 本人是android开发,基于此基础上 ...

  7. 深入理解Python字符编码

    不论你是有着多年经验的 Python 老司机还是刚入门 Python 不久,你一定遇到过UnicodeEncodeError.UnicodeDecodeError 错误,每当遇到错误我们就拿着 enc ...

  8. matlab 曲线拟合小记

    在matlab中经常需要对数据进行曲线拟合,如最常见的多项式拟合,一般可以通过cftool调用曲线拟合工具(curve fit tool),通过图形界面可以很方便的进行曲线拟合,但是有些时候也会遇到不 ...

  9. 文档资源搜索小工具 - 支持PDF,DOC,PPT,XLS

    最近做了一个文档搜索小工具,当然不是网盘搜索工具,这个工具支持四种文件格式搜索(pdf,doc,ppt,xls),你只需要在搜索框中输入你想要搜索资源的关键词,点击搜索按钮即可获取相关资源,点击下载按 ...

  10. 20175120彭宇辰 《Java程序设计》第七周学习总结

    #教材内容总结 第八章 常用实用类 一.String类 String类用来处理字符序列,在java.lang包中,程序可以直接使用String类.需要注意的是Java把String类声明为final类 ...