states tutorial, part 2 - more complex states, requisites

本教程建立在第1部分涵盖的主题上。建议您从此处开始。
在Salt States教程的最后一部分,我们简单的介绍了基本的安装一个软件包,我们现在将修改我们的webserver.sls文件以满足要求,并使用更多的Salt States

call multiple states(调用多状态)

You can specify multiple State declaration under an ID declaration. For example, a quick modification to our webserver.sls to also start Apache if it is not running:

你可以在ID声明下指定多个State声明。 例如,对我们的webserver.sls进行快速修改,以便在未运行时启动Apache:

apache:
pkg.installed: []
service.running:
- require:
- pkg: apache

Try stopping Apache before running state.apply once again and observe the output.

尝试先关闭正在运行的apache服务 然后运行state.highstate仔细看看的输出.

require other states

We now have a working installation of Apache so let's add an HTML file to customize our website. It isn't exactly useful to have a website without a webserver so we don't want Salt to install our HTML file until Apache is installed and running. Include the following at the bottom of your webserver/init.sls file:

我们现在只是进行一个apache应用的安装工作,所以接下来我们将添加一个html 文件来定制我们的web服务器。没有web服务器的网站并不是很有用,所以我们不希望Salt在Apache安装并运行之前安装我们的HTML文件。我们可以在webserver/init.sls的底部添加下面的内容:

 apache:
pkg.installed: []
service.running:
- require:
- pkg: apache /var/www/index.html: # ID declaration
file: # state declaration
- managed # function
- source: salt://webserver/index.html # function arg
- require: # requisite declaration
- pkg: apache # requisite reference

line 7 is the ID declaration. In this example it is the location we want to install our custom HTML file. (Note: the default location that Apache serves may differ from the above on your OS or distro. /srv/www could also be a likely place to look.)

第7行是ID声明。在这个例子中,它是我们想要安装我们的自定义HTML文件的位置。(注意:Apache服务的默认位置可能与您的操作系统或发行版上述不同。/ srv / www也可能是一个可能的地方。)

Line 8 the State declaration. This example uses the Salt file state.

第8行是State声明。这个例子使用salt的file状态模块文件。

Line 9 is the Function declaration.  The managed function will download a file from the master and install it in the location specified.

第9行是函数声明。managed功能将从主站下载文件并将其安装在指定的位置。

Line 10 is a Function arg declaration which, in this example, passes the source argument to the managed function.

第10行是一个Function arg声明,在这个例子中,将源参数传递给managed函数。

Line 11 is a Requisite declaration.

第11行是一个必要的声明。

Line 12 is a Requisite reference which refers to a state and an ID. In this example, it is referring to the ID declaration from our example in part 1. This declaration tells Salt not to install the HTML file until Apache is installed.

第12行是一个必要的参考,它指的是一个状态和一个ID。 在本例中,它指的是第1部分中示例中的ID声明。该声明告诉Salt不要在安装Apache之前安装HTML文件。

Next, create the index.html file and save it in the webserver directory:

下一步,创建index.html文件和把它保存在webserver目录:

<!DOCTYPE html>
<html>
<head><title>Salt rocks</title></head>
<body>
<h1>This file brought to you by Salt</h1>
</body>
</html>

Last, call state.apply again and the minion will fetch and execute the highstate as well as our HTML file from the master using Salt's File Server:

最后,我们再次运行 state.apply,minion将使用Salt的文件服务器从主文件中获取并执行highstate和我们的HTML文件:

salt '*' state.apply

Verify that Apache is now serving your custom HTML.

验证Apache是否正在为您的自定义HTML提供服务。

require vs. watch

There are two Requisite declaration, “require”, and “watch”. Not every state supports “watch”. The service state does support “watch” and will restart a service based on the watch condition.

有两个Requisite声明,“require”和“watch”。 并非每个state都支持“watch”。 服务状态确实支持“watch”,并将根据监视条件重新启动服务。

For example, if you use Salt to install an Apache virtual host configuration file and want to restart Apache whenever that file is changed you could modify our Apache example from earlier as follows:

例如,如果您使用Salt来安装Apache虚拟主机配置文件并希望在文件更改时重新启动Apache,则可以按照以下方式修改我们的Apache示例:

 /etc/httpd/extra/httpd-vhosts.conf:
file.managed:
- source: salt://webserver/httpd-vhosts.conf apache:
pkg.installed: []
service.running:
- watch:
- file: /etc/httpd/extra/httpd-vhosts.conf
- require:
- pkg: apache

If the pkg and service names differ on your OS or distro of choice you can specify each one separately using a Name declaration which explained in Part 3.

如果您的操作系统或发行版中的pkg和服务名称不同,则可以使用第3部分中介绍的名称声明分别指定每个名称和服务名称。

引申:

match : 配模某个模块,比如 match: grain match: nodegroup
require: 依赖某个state,在运行此state前,先运行依赖的state,依赖可以有多个
watch : 在某个state变化时运行此模块,watch除具备require功能外,还增了关注状态的功能。
order : 优先级比require和watch低,有order指定的state比没有order指定的优先级高,假如一个state模块内安装多个服务,或者其他依赖关系,可以使用

【SaltStack官方版】—— states教程, part 2 - 更复杂的states和必要的事物的更多相关文章

  1. 【SaltStack官方版】—— states教程, part 4 - states 说明

    STATES TUTORIAL, PART 4 本教程建立在第1部分.第2部分.第3部分涵盖的主题上.建议您从此开始.这章教程我们将讨论更多 sls 文件的扩展模板和配置技巧. This part o ...

  2. 【SaltStack官方版】—— states教程, part 3 - 定义,包括,延伸

    STATES TUTORIAL, PART 3 - TEMPLATING, INCLUDES, EXTENDS 本教程建立在第1部分和第2部分涵盖的主题上.建议您从此开始.这章教程我们将讨论更多  s ...

  3. 【SaltStack官方版】—— job management

    JOB MANAGEMENT New in version 0.9.7. Since Salt executes jobs running on many systems, Salt needs to ...

  4. 【SaltStack官方版】—— MANAGING THE JOB CACHE

    MANAGING THE JOB CACHE The Salt Master maintains a job cache of all job executions which can be quer ...

  5. 【SaltStack官方版】—— returners——返回器

    ETURNERS 返回器 By default the return values of the commands sent to the Salt minions are returned to t ...

  6. 【SaltStack官方版】—— STORING JOB RESULTS IN AN EXTERNAL SYSTEM

    STORING JOB RESULTS IN AN EXTERNAL SYSTEM After a job executes, job results are returned to the Salt ...

  7. 【SaltStack官方版】—— Events&Reactor系统—BEACONS

    Events&Reactor系统—BEACONS Beacons let you use the Salt event system to monitor non-Salt processes ...

  8. 【SaltStack官方版】—— Events&Reactor系统—EVENT SYSTEM

    Events&Reactor系统 EVENT SYSTEM The Salt Event System is used to fire off events enabling third pa ...

  9. 【SaltStack官方版】—— EVENTS & REACTOR指南

    EVENTS & REACTOR Event System Event Bus Event types Salt Master Events Authentication events Sta ...

随机推荐

  1. hashMap与 hashTable , ArrayList与linkedList 的区别(详细)

    ArrayList 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,所以最大的缺点就是插入删除时非常麻烦LinkedList 采用的将对象存放在独立的空间中,而且在每个空间中还保存下一个 ...

  2. 【漏洞复现】永恒之蓝 ms17-010 漏洞利用 攻击手法

    日期:2018-07-21 21:09:16 介绍:永恒之蓝利用的 ms17-010 漏洞,拿 Shell.查看文件.获取密码. 0x01.实验环境 攻击机 系统:macOS Sierra 10.12 ...

  3. idea 使用过程中的一些设置记录

    1.XML sql底色 在mapper文件中,SQL出现黄色的底色. ** settings ** > ** inspections ** 去掉 ** SQL ** 中的 ** No data ...

  4. 正则表达式——Unicode 属性

      每一个 Unicode 字符,除了有 Code Point 与之对应外,还具体其他属性,在正则表达式中常用到三种 Unicode 属性: Unicode Property.Unicode Scri ...

  5. pycharm运行测试用例遇到错误:ZeroDivisionError: float division by zero的原因

    运行测试用例报错:ZeroDivisionError: float division by zero 一般是因为测试用例模块命名没有以test开头,导致unittest找不到用例,用例总数为0,导致除 ...

  6. 【MM系列】SAP 各种冲销凭证

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP 各种冲销凭证   前言部分 ...

  7. R-CNN, Fast R-CNN, Faster R-CNN, Mask R-CNN

    最近在看 Mask R-CNN, 这个分割算法是基于 Faster R-CNN 的,决定看一下这个 R-CNN 系列论文,好好理一下 R-CNN 2014 1. 论文 Rich feature hie ...

  8. 【Python】利用豆瓣短评数据生成词云

    在之前的文章中,我们获得了豆瓣爬取的短评内容,汇总到了一个文件中,但是,没有被利用起来的数据是没有意义的. 前文提到,有一篇微信推文的关于词云制作的一个实践记录,准备照此试验一下. 思路分析 读文件 ...

  9. 【转】mysqldump原理探究

    作者:胡儿胡儿 来源:CSDN 原文:https://blog.csdn.net/cug_jiang126com/article/details/49824471 —————————————————— ...

  10. 剑指Offer编程题(Java实现)——链表中倒数第k个结点

    题目描述 输入一个链表,输出该链表中倒数第k个结点. 注意: 该题目不可以用先反转链表再输出第k个结点的方式,因为反转链表会改变该结点的next指向 思路一 使用栈Stack倒序存储,顺序pop第k个 ...