首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当使用SaltStack时,什么是“状态”?

当使用SaltStack时,什么是“状态”?
EN

Stack Overflow用户
提问于 2015-11-18 12:02:50
回答 4查看 6.8K关注 0票数 4

在使用木偶一段时间之后,我正在尝试使用SaltStack,但是我无法理解他们使用“状态”这个词。

我的理解是,例如,一个电灯开关有两种可能的状态--开或关。当我编写我的SLS配置时,我描述的是服务器应该处于什么状态?。当我要求SaltStack提供服务器时,我发出命令salt '*' state.highstate。我知道服务器可以在highstate中(如我的配置中所描述的),也可以不在。目前为止一切都很好。

但是本页描述其他状态。。它将lowstatehighstateoverstate (以及其他)描述为层。这是否意味着一台服务器要经过几个州才能到达一个高级状态?还是所有的状态都作为层同时维护?或者我可以在我的SLS中配置多个可能的状态,并在它们之间进行SaltStack切换?或者它们只是SaltStack的层,它们的名字中有“状态”,而我很困惑?

我可能遗漏了一些显而易见的东西,如果有人能推动我朝着正确的方向前进,我认为很多文档都会对我来说很清楚!

EN

回答 4

Stack Overflow用户

发布于 2016-02-24 09:53:33

在这里,top.sls包含,

代码语言:javascript
复制
# cat top.sls
base:
 '*':
  - httpd_require

和,

代码语言:javascript
复制
# cat httpd_require.sls
install_httpd:
 pkg.installed:
   - name: httpd
 service.running:
   - name: httpd
   - enable: True
   - require:
     - file: install_httpd
 file.managed:
   - name: /var/www/html/index.html
   - source: salt://index1.html
   - user: root
   - group: root
   - mode: 644
   - require:
   - pkg: install_httpd

高状态:

我们可以看到高状态系统的所有方面,在处理状态文件( .sls)时,有三个特定的组件。

  • 高数据:
  • SLS文件:
  • 高状态
代码语言:javascript
复制
- Each individual State represents a piece of high data(pkg.installed:'s block), Salt will compile all relevant SLS inside the top.sls, When these files are tied together using includes, and further glued together for use inside an environment using a top.sls file, they form a High State.

salt 'remote_minion‘state.show_highstate -out yaml remote_minion: install_httpd:__env__:base __sls__:httpd_require文件:- name: /var/www/html/index.html -来源: salt://index1.html -用户:根-组:根-模式: 644 -要求:- pkg: install_httpd -托管-顺序:10002 pkg:- name: httpd - installed order: 10000 service:- name: httpd - enable: true - require:- install_httpd - running - order: 10001

首先,宣布一项命令,所有被定为第一的国家都将相应地调整其命令。然后,Salt将向最后定义的数字添加10000 (默认情况下为0),并添加任何未显式排序的状态。Salt还将添加它内部使用的一些变量,以了解要在哪个环境(__env__)中执行状态,以及状态声明来自哪个still (__sls__),请记住,该命令仍然只是一个起点;实际的高级状态将首先根据需求执行,然后根据顺序执行。

换句话说,“高”数据通常指用户所看到的数据。

低国家:

“低”数据一般指盐摄入和使用的数据。

一旦生成了最后的高级状态,它将被发送到状态编译器。这将将国家数据重新格式化为Salt内部用于评估每个声明的格式,并将数据输入每个州模块(必要时,后者将调用执行模块)。与高数据一样,低数据也可以分解为单个组件:

  • 低状态
  • 低块
  • 状态模块
  • 执行模块“remote_minion”state.show_lowstate --out yaml remote_minion:- __env__:base __id__:install_httpd __sls__:httpd_require __id__:installed name: httpd order: 10000 state: pkg - __env__:base __id__:install_httpd __sls__:httpd_require enable: true __id__:fun__id__:httpd order: 10001要求:- install_httpd状态:__env__:base __id__:install_httpd __sls__:httpd_require __sls__:托管组:根模式: /var/www/html/index.html顺序: 10002需要:- pkg: install_httpd源:install_httpd://index1.html状态:文件用户: root

所有这一切都包括一个低国家。每个单独的项目都是一个较低的块。这个列表中的第一个低块如下所示:

代码语言:javascript
复制
    - __env__: base
      __id__: install_httpd
      __sls__: httpd_require
      fun: installed
      name: http
      order: 10000
      state: pkg

每个低块映射到一个状态模块(在本例中是pkg),并映射到该状态模块内的一个函数(在本例中,已安装)。在此级别(__id__)还提供了一个ID。Salt将使用State和__id__的组合来映射国家之间的关系(即必要条件)。如果用户尚未声明名称,则Salt将自动使用__id__作为name.Once --状态模块中的一个函数已被调用,它通常将映射到一个或多个实际执行该工作的执行模块。

票数 8
EN

Stack Overflow用户

发布于 2015-12-21 19:59:24

salt '\*' state.highstate

  1. “*”是指与主人相连的所有奴才。
  2. “state.highstate”用于运行主服务器中定义的top.sls中提到的所有模块/脚本
  3. 若要对所有仆从调用特定的模块/脚本,请使用以下salt命令,其中在下面的示例中在state.sls for apache中定义状态信息。

salt '\*' state.sls apache

若要仅对特定的仆从调用上述salt调用,请使用以下命令。

salt 'minion-name' state.sls apache

票数 1
EN

Stack Overflow用户

发布于 2015-11-19 03:26:34

我不知道每个州的情况,但是当你跑的时候:

代码语言:javascript
复制
salt '*' state.highstate

应用您在/srv/salt/top.sls.中提供的状态

如果你在里面什么也不写,你就不能申请一个高级州。

您可以使用以下命令应用其他状态:

代码语言:javascript
复制
salt '*' state.sls state.example
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33779564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档