[英]configuring firewalld using ansible with system facts
我玩以下游戲:
- command: "hostname -I"
register: IP_ADRESSS
changed_when: False
- firewalld:
interface: eth0
state: enabled
permanent: yes
zone: public
source: {{ IP_ADDRESS.stdout }}
notify: "RESTART FIREWALL"
播放結果如下:
fatal: [test-server]: FAILED! => {
"changed": false,
"invocation": {
"module_args": {
"immediate": false,
"interface": "eth0",
"masquerade": null,
"offline": null,
"permanent": true,
"port": null,
"rich_rule": null,
"service": null,
"source": "10.0.0.5 "
"state": "enabled"
"timeout": 0,
"zone": "public"
}
},
"msg": "ERROR: Exception caught: org.fedoraproject.FirewallD1.Exception: INVALID_ADDR: 10.0.0.5 Permanent operation"
}
當“源”的值來自“ IP_ADDRESS.stdout”的值時,將發生錯誤。 IP_ADDRESS.stdout的結果在ip地址的末尾增加了一個空格,這會導致失敗。 當我對IP地址進行“硬編碼”時,它將起作用。
誰能指導我如何糾正標准輸出?
謝謝
您可以應用修剪過濾器:
source: "{{ IP_ADDRESS.stdout | trim }}"
使用主機名-I可能會導致另一個問題,因為它返回服務器上的每個IP。 另一種選擇是使用事實ansible_default_ipv4.address
,它將僅返回一個IP。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.