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

Salt stack 如何将盐状态仅应用于一个环境,salt-stack,Salt Stack,我正在尝试在/srv/salt/non-prod将salt状态应用于我的非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 foun

我正在尝试在/srv/salt/non-prod将salt状态应用于我的非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
这些是非prod目录的内容

  [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
它包含几个salt模块


如何将salt状态仅应用于非prod环境?

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

仔细阅读文档,您会注意到设置了不同的环境,首先在/etc/salt/master上明确定义备用环境
name
,并在top.sls下指定它

i、 例如,您可以指定
非prod
环境

file_roots:
  #non-prod environment
  non-prod:
    - /srv/non-prod
    - /srv/salt/non-prod/services
    - /srv/salt/non-prod/states
因此,top.sls应该使用环境名称
非prod
,而不是
base

non-prod:
  '*':
    - apache
    - python
    - ssh
    - users
由于默认情况下saltstack始终使用“基本”环境,因此应该显式应用该状态

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

这很有效。但我解决问题的方法是在/etc/salt/minion配置中设置environment:non-prod变量。重新启动仆从服务使其正常工作。我还测试了你的方法,我也用这种方法工作。谢谢