[英]How to set default service port/protocol with firewalld module using Ansible?
我正在寻找一种在我的 Ansible 任务中设置默认端口/协议的方法。
# Add port in firewalld
- name: Open port in firewalld
firewalld:
port: "{{ foo_setted_port_var | default (8080/tcp) }}"
state: enabled
permanent: yes
immediate: yes
zone: "{{ setted_firewalldzone_var | default (public) }}"
当我打开线路port: [...] default (8080/tcp) [...]
output 是: The error was: 'tcp' is undefined
当我把线路port: [...] default (8080) [...]
output 是: improper port format (missing protocol?)
当我在我的foo_setted_port_var
8080/tcp
中精确时,它可以工作。 但是,我真的想在我的 var 文件之前在我的任务代码中默认设置我的端口。
如何解决?
根据提供默认值和firewalld
模块 – 使用 firewalld 管理任意端口/服务,语法应该是
# Add port in firewalld
- name: Open port in firewalld
firewalld:
port: "{{ foo_setted_port_var | default('8080/tcp') }}"
state: enabled
permanent: yes
immediate: yes
zone: "{{ setted_firewalldzone_var | default('public') }}"
如果没有引号 ( '
),术语tcp
或public
将被解释为变量名并尝试查找内容。
您可以从错误消息中看到这一点
'tcp' is undefined
并通过以下测试观察行为。
---
- hosts: localhost
become: false
gather_facts: false
vars:
PUBLIC: "public"
tasks:
- name: Show values
debug:
msg:
- "{{ TXT | default(PUBLIC) }}"
- "{{ TXT | default('PUBLIC') }}"
导致 output 的
TASK [Show values] ******
ok: [localhost] =>
msg:
- public
- PUBLIC
另一个错误信息
improper port format
与Parameter: port相关,它需要是string
而不是int
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.