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 }"
    }