Назад | Перейти на главную страницу

Как я могу перебрать всех миньонов в верхнем файле столба?

Я хотел бы добавить некоторые общие данные столбов миньонам на основе ролей, но также предложить способ настройки каждой машины на основе имени хоста (идентификатора миньона).

В моем файле pillar / top.sls у меня есть

base:
  '*':
    - pkgs/common-ubuntu-pkg
    - fail2ban/config
  'runit:True':
    - runit/package
  'is_virtual:True':
    - users/vmuser
  'role:database':
    - match: grain
    - mysql/defaults

А потом я хочу добавить что-то вроде этого:

{% for host in pillar %}
  '{{host}}':
    include:
     - {{host}}/passwords
{% endfor %}

Что работает, но выводит только «мастер». Я использую соль-ssh без мастера, поэтому я считаю, что миньоны в реестре еще не находятся в столпе. Я хотел бы по-другому перебирать определенные миньоны, но, похоже, я не могу легко понять, что находится в словаре соли.

{% for key in salt %}
  '{{key}}':
     include:
       - foobar
{% endfor %}

Попытка отладить что-то подобное приведенному выше приводит к ошибке KeyError

Решение основывалось не на использовании jinja в файле pillar.top, а на использовании внешнего модуля pillar.

Плагин внешней опоры file_tree ищет в root_dir каталоги hosts и nodegroups. Сопоставляя minion_ids как каталоги в root_dir / hosts /, он добавит все файлы .sls в качестве данных столба к этому хосту / миньону.

#in /etc/salt/master
ext_pillar:
  - file_tree:
      root_dir: /srv/salt/my-pillars/
      follow_dir_links: False
      raw_data: False

#on disk
/srv/salt/my-pillars/hosts/mydbserver/passwords.sls

https://docs.saltstack.com/en/latest/ref/pillar/all/salt.pillar.file_tree.html#module-salt.pillar.file_tree