防火牆鹽棧
我正在嘗試設置狀態,以便我可以添加在 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
這會導致以下人員的錯誤:
SLS ‘firewalld.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
from (或使用指令/srv/salt/top.sls
下的其他狀態文件)來“啟動”公式。/srv/salt/``include:
我假設您
firewalld-formula
以這種方式複製了 repo: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
Aaand,你完成了。
或者,您可以改用通用狀態,讓 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 -%}