如何将盐状态应用于一个环境

how to apply salt states to just one environment

我正尝试在 /srv/salt/non-prod 将盐状态应用到我的非产品环境 我得到这个结果:

[root@salt non-prod]# salt '*' state.apply
salt.localdomain:
----------
          ID: states
    Function: no.None
      Result: False
     Comment: No Top file or external nodes data matches found.
     Changes:

Summary for salt.localdomain
------------
Succeeded: 0
Failed:    1

我在我的主配置中定义了这个位置

   non-prod:
     - /srv/non-prod
     - /srv/salt/non-prod/services
     - /srv/salt/non-prod/states

我有一个顶级文件位于此处:

[root@salt ~]# cat /srv/salt/non-prod/top.sls
base:
  '*':
    - apache
    - python
    - ssh
    - users

这些是非产品目录的内容

  [root@salt ~]# ls -lh /srv/salt/non-prod/
total 16K
drwxr-xr-x. 2 root root 4.0K Oct  3 21:02 apache
drwxr-xr-x. 2 root root   45 Oct  3 20:57 python
drwxr-xr-x. 2 salt salt    6 Oct  3 14:10 services
drwxr-xr-x. 2 root root   54 Oct  3 18:23 ssh
drwxr-xr-x. 2 salt salt    6 Oct  3 14:10 states
-rw-r--r--. 1 root root   80 Oct  3 15:29 state.template
-rw-r--r--. 1 root root  174 Oct  3 15:30 test.sls
-rw-r--r--. 1 root root   61 Oct  3 21:14 top.sls
drwxr-xr-x. 2 root root   22 Oct  3 21:03 users
drwxr-xr-x. 2 salt salt   99 Oct  3 18:28 webserver

它包含一些盐模块

如何将盐状态应用到非产品环境?

如果您使用一些 yaml 验证工具检查语法,那么我们可以进入下一步。

仔细阅读 saltstack top 文档,您会注意到设置不同的环境,您首先在 /etc/salt/master 上明确定义替代环境 name,并在 top.sls[= 下指定它18=]

即,您 file_roots 指定 non-prod 环境

file_roots:
  #non-prod environment
  non-prod:
    - /srv/non-prod
    - /srv/salt/non-prod/services
    - /srv/salt/non-prod/states

因此您的 top.sls 应该使用环境名称 non-prod ,而不是 base

non-prod:
  '*':
    - apache
    - python
    - ssh
    - users

因为 saltstack 默认总是使用 "base" 环境,你应该明确地应用状态。

salt '*' state.highstate saltenv=non-prod