簡體   English   中英

使用Ansible和系統事實來配置Firewalld

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM