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

Соляной стог для firewalld

Я пытаюсь настроить состояние, чтобы добавить связанные порты, открытые в firewalld.

Пробовал каждый пример, который мог найти, и все терпел неудачу.

Вот мой ток:

firewalld:
  service.running:
    - enable: True
  default_zone:
    - public
  services:
    snmpd:
      - short:
        - snmp
      - ports:
        - udp:
          - 161
        - tcp:
          - 161
    ssh:
      - short:
        - ssh
      - ports:
        - tcp:
          - 22
  zones:
    public:
      - short:
        - Public
      - services:
        - ssh
        - snmpd

И это приводит к ошибке на миньоне:

Состояние firewalld в SLS firewalld.firewalld не формируется в виде списка

Я проверил это через три разных валидатора YAML, и все сказали, что он чистый, поэтому я запутался.

Я предполагаю, что вы используете firewalld-formula из официальный репозиторий?

Обратите внимание, что «Формула SaltStack» - это «готовое к использованию состояние, которое вы настраиваете с помощью столбов». Итак, ваша декларация YAML должна НЕ быть государственной декларацией, но вместо этого декларация столба.

Позвольте мне проиллюстрировать:

Я предполагаю, что у вас есть файлы состояния в /srv/salt и ваши файлы столба в /srv/pillar.

Чтобы использовать firewalld-formula, вам необходимо создать "столбчатый" файл. Используйте предоставленные pillar.example файл и сохраните его как /srv/pillar/firewalld/<target-host>.sls, и обратитесь к нему из /srv/pillar/top.sls. Например:

# /srv/pillar/top.sls
base:
  # ... other references we skip ...
  'target-host':
    - firewalld.<target-host>

Примечание. Называя файл столба <target-host>.sls, мы легко можем сделать разные столбы для разных хостов.

Затем мы «активируем» формулу, ссылаясь на firewalld-formula из /srv/salt/top.sls (или другие файлы состояния в /srv/salt/ используя include: директива).

Я предполагаю, что вы клонировали firewalld-formula репо таким образом:

cd /srv/salt
git clone https://github.com/saltstack-formulas/firewalld-formula.git
ln -s firewalld-formula/firewalld firewalld

Примечание: символическая ссылка позволяет нам называть состояние как firewalld вместо того firewalld-formula.firewalld.

Теперь отредактируйте /srv/salt/top.sls файл, чтобы вызвать firewalld штат:

# /srv/salt/top.sls
base:
  # ... other references ...
  'target-host':
    - firewalld

Ааа, все готово.

В качестве альтернативы вы можете использовать общее состояние и позволить рендереру Jinja и системе Pillar позаботиться о деталях «таргетинга». Скажем ваш top.sls файл имеет следующее:

# /srv/salt/top.sls
base:
  '*':
    # ...other states...
    - hardening
    # ...more states...

Отредактируйте hardening файл состояния как таковой:

# /srv/salt/hardening/init.sls

# ...various states we skip

include:
  # ... possible other includes ...
{% if pillar.get('firewalld', false) -%}
  # The following will be included *only* if pillar for the minion has the 'firewalld' key defined
  - firewalld
{% endif -%}