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"