Очень похожая версия этого вопроса задается Вот , но это совершенно другое, поскольку у человека был верхний файл в неправильном каталоге.
У меня есть 3 проекта, которые я назову project1, project2 и project3. Моей целью было создать настройку master / minion, в которой мой каталог srv / salt выглядел так:
/srv/salt
|top.sls
|/project1
|__/postgresql
|__init.sls
|__config.sql
|__/iptables
|__init.sls
|__config.sh
|/project2
|__/tomcat
|__init.sls
|__config.sh
|__/java
|__init.sls
|__config.sh
|/project3
|__/serverconfig
|__init.sls
|__config.sql
|__/conky
|__init.sls
|__config.sh
Для этого я отредактировал / etc / salt / master, чтобы читать
#/etc/salt/master
file_roots:
base:
- /srv/salt
project1:
- /srv/salt/project1
project2:
- /srv/salt/project2
project3:
- /srv/salt/project3
Я также хотел настроить узлы, поскольку у меня есть статические серверы, которые будут задействованы в каждом проекте, и для меня это очень интуитивный способ их организации.
Я начал с редактирования / etc / salt / master, чтобы показать свои группы узлов
#/etc/salt/master
nodegroups:
project1: 'L@project1_server1,project1_server2,project1_server3'
project2: 'L@project2_server1,project2_server2,project2_server3'
project3: 'L@project3_server1,project3_server2,project3_server3'
При запуске, когда он был настроен, я попытался применить состояние project1 к его серверам, используя следующую команду:
salt -N project1 state.highstate
Это выполняется правильно для project1_server2, project1_server3, но не работает на project1_server1.
Ошибка для project1_server1: «Не найдено совпадений данных верхнего файла или внешних узлов».
Я открыт для предложений о том, как эту настройку можно было бы более легко реализовать, но я хотел бы знать причину, по которой это не работает. Спасибо за любую помощь.
РЕДАКТИРОВАТЬ1
добавление моего файла top.sls
#/srv/salt/top.sls
project1:
project1:
- match: nodegroup
- postgresql
- iptables
project2:
project2:
- match: nodegroup
- tomcat
- java
project3:
project3:
- match: nodegroup
- serverconfig
- conky
РЕДАКТИРОВАТЬ2
Вывод из salt -N project1 grains.item id
project1_server1:
----------
id:
project1_server1
project1_server2:
----------
id:
project1_server2:
project1_server3:
----------
id:
project1_server3:
РЕДАКТИРОВАТЬ3
Правильный ответ предоставил ChrisV.
Проблема заключалась в синтаксических ошибках для узла в / etc / salt / master. Мне нужно было это изменить, а затем перезапустить соль-мастер
pkill salt-master
salt-master -d
Определения группы узлов должны быть следующими:
project1: 'L@project1_server1,project1_server2,project1_server3'
Документация по соли: Группы узлов и Составные сопоставители
Также обратите внимание, что требуется перезапуск демона мастера соли.