Ansible在角色中包含文件

Ansible在角色中包含文件,ansible,Ansible,我有以下文件 ../roles/requests/tasks/main.yml ../roles/requests/tasks/1.yml ../roles/requests/tasks/2.yml ../roles/requests/tasks/3.yml 在main.yml中,我正在尝试调用其他剧本 --- - name: Include tasks for requests import_tasks: "{{task_to_run}}.yml" - name: Include

我有以下文件

../roles/requests/tasks/main.yml
../roles/requests/tasks/1.yml
../roles/requests/tasks/2.yml
../roles/requests/tasks/3.yml
在main.yml中,我正在尝试调用其他剧本

---

- name: Include tasks for requests
  import_tasks: "{{task_to_run}}.yml"


- name: Include tasks for adding 2
  import_tasks: 2.yml
  when: task_to_run == "2"
  tags: 2

- name: Include tasks for adding 3
  import_tasks: 3.yml
  when: task_to_run == "3"
  tags: 3
我在塔楼测量中给了任务运行,我得到的错误是

使用静态导入时,请确保名称中使用的所有变量都在vars/vars_文件中定义 或从命令行传入的额外变量。静态导入不能使用事实或清单中的变量 源,如组或主机变量

所以我通过额外的var传递了它,这个部分可以工作,但是标记也不能工作,它只检查when条件

知道出了什么问题吗?或者有其他选择吗?

TLDR; 整数标记应作为单个值或列表强制转换为
字符串

tags: "3"

# or

tags:
  - "3"

# or even

tags: "{{ 3 | string }}"

# ...
问题 深入研究代码需要准确理解为什么会发生这种情况,但是。。。根据我的即时测试(ansible 2.9.4),
标记
int
值的关系不好

样本测试文件:

---
- hosts: localhost
  gather_facts: false
  tags: # <see defs below for results>
  tasks: [{debug: msg=test}]
结果 所有playbook调用都会失败,原因是:

错误!标记必须指定为列表

标记为
列表中的
int
定义 结果 上面的错误消失了,但不可能以标记为目标。注意,
--tags 3
--tags“3”

标记为
字符串
定义 结果 一切正常

tags: 3
tags:
  - 3
$ ansible-playbook /tmp/play.yml --tags 3

PLAY [localhost] **************************************************************************************************************************************************************************************************

PLAY RECAP ********************************************************************************************************************************************************************************************************
tags: "3"
# or
tags:
  - "3"