Как мне передать зерна одного миньона другому? - PullRequest
0 голосов
/ 27 декабря 2018

Я использую Salt для настройки нескольких серверов.Два из них назначены на роль DNS-сервера и настроены с помощью dnsmasq-formula.Другие имеют различные роли, такие как gitlab-server, которые определены в столбе.

Вот как это настроено:

/srv/salt/top.sls
---
base:
  'roles:dns-server':
    - match: pillar
    - dnsmasq
  'roles:gitlab-server'
    - gitlab

/srv/pillar/top.sls
---
{% import_yaml "roles.yaml" as r %}
base:
{% if 'dns-server' in r[grains['id']] %}
    - dns.dnsserv
{% endif %}

/srv/pillar/dns/dnsserv.sls
---
dnsmasq:
  ...
  hosts:
    domain.name:
      git: <GIT_SERVER_IP>
  ...

/srv/pillar/roles.yaml
---
'minion1-id':
  - role1
  - role2
'minion2-id':
  - role3
  - role4
# and so on

Прямо сейчас <GIT_SERVER_IP> жестко закодировано.Я бы предпочел опрашивать миньонов, найти того, кто имеет правильную роль, и программно извлечь его IP-адрес.

Когда обрабатывается /srv/pillar/dns/dnsserv.sls, он обрабатывается с информацией, доступной миньону с ролью "DNS-сервер».Загружая roles.yaml внутри dnsserv.sls, я могу получить идентификатор миньона gitlab-сервера (с некоторым очень уродливым кодом).Но как я могу получить его IP-адрес из этого файла?

Я видел упоминания о соляной шахте, но на самом деле не нашел полного примера использования этой функции.

Этот вопрос вполне может бытьбыть примером проблемы XY.Если это так, пример «правильного пути» был бы очень признателен.

1 Ответ

0 голосов
/ 14 января 2019

Чтобы передать зерна или колонны от одного миньона к другому, вам нужно использовать «соляную шахту» (https://docs.saltstack.com/en/latest/topics/mine/). Тема не простая, но краткая:

  • определяет новую функцию mine_доступны вашим миньонам, например
mine_functions:
  grains:
    grains.items: []

Я рекомендую вам сначала попробовать мой.gget в командной строке, чтобы увидеть, если вы можете получить ваши данные, прежде чем начать писать состояние.

...