Ansible 是否可以在任务中为角色定义变量?
我需要在我自己的角色中包含一个角色,它依赖于设置的变量。我可以将它们包含在任务中吗?它们是否会应用于包含的角色 大概是这样的:Ansible 是否可以在任务中为角色定义变量?,ansible,Ansible,我需要在我自己的角色中包含一个角色,它依赖于设置的变量。我可以将它们包含在任务中吗?它们是否会应用于包含的角色 大概是这样的: - name: Configure firewall ports include_role: name: ipr-cnrs.nftables vars: - nft_define: input tcp accepted: name: in_tcp_accept value: '{ 22, 2
- name: Configure firewall ports
include_role:
name: ipr-cnrs.nftables
vars:
- nft_define:
input tcp accepted:
name: in_tcp_accept
value: '{ 22, 23 }'
您可以使用
include_role
传递变量,如下所示,具体取决于:
因此,上面的示例可以将vars
与include\u角色一起使用
问:“我可以在任务中包含变量吗?它们会应用于包含的角色吗?”
A:是的。这是可能的。正确的语法是
-名称:配置防火墙端口
包括以下角色:
名称:ipr\U cnrs\U nftables
变量:
nft_定义:
输入tcp已接受:
名称:in_tcp_accept
值:“{22,23}”
例如,任务
shell>cat角色/ipr\u cnrs\u nftables/tasks/main.yml
-调试:
var:nft\u定义
给予
注:
- 引用
角色名称仅限于小写单词字符(即a-z、0-9)和“u”。不允许使用特殊字符,包括“.”、“-”和空格。导入期间,存储库名称或角色名称中包含的任何“.”和“-”字符将替换为“u”
- 属性值应为端口列表。示例中是一个字符串。改变它
值:[22,23]
- 在剧本中,当流控件到达
include
语句时,变量将可用。看
- name: Pass variables to role
include_role:
name: myrole
vars:
rolevar1: value from task
"nft_define": {
"input tcp accepted": null,
"name": "in_tcp_accept",
"value": "{ 22, 23 }"
}