我有以下游戏:
- 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"
}
当“source”的值来自“IP_ADDRESS.stdout”的值时,会发生错误。 IP_ADDRESS.stdout的结果在ip地址的末尾添加了一个空格,导致失败。当我“硬编码”它的IP地址时它起作用。
任何人都可以指导我如何纠正标准输出?
由于
答案 0 :(得分:0)
您可以应用trim过滤器:
source: "{{ IP_ADDRESS.stdout | trim }}"
答案 1 :(得分:0)
使用主机名-I可能会导致另一个问题,因为它返回服务器上的每个IP。另一个选择是使用仅返回一个IP的事实ansible_default_ipv4.address
。