#salt-stack
#соль-стек
Вопрос:
Я пытаюсь применить состояние соли к моей непроизводственной среде в / 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
Это содержимое каталога non-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
он содержит несколько модулей соли
Как я могу применить состояния соли только к непроизводственной среде?
Ответ №1:
Если вы проверите синтаксис с помощью некоторых инструментов проверки yaml, мы можем перейти к следующему шагу.
Внимательно прочитайте документацию saltstack top, вы заметите, что, устанавливая другую среду, вы сначала явно определяете альтернативную среду name
в /etc/salt/master, а также указываете ее в top.sls
т.Е. Вы 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 всегда использует «базовую» среду по умолчанию, вы должны применить состояние явно.
salt '*' state.highstate saltenv=non-prod
Комментарии:
1. Это работает. Но я решил проблему, установив переменную environment: non-prod в конфигурации /etc/salt/minion . Перезапуск службы minion заставил это работать. Я также протестировал ваш метод, и он тоже работает таким образом. Спасибо!