在角色中运行调试语句时,我似乎无法在循环中获得Ansible调试语句来显示各个项目的值。为了进行比较,给定这本名为./test.yaml的剧本:
- hosts: localhost
tasks:
- name: test
debug:
var: item
loop:
- 1
- 2
此命令:
ansible-playbook test.yaml
产生此结果:
PLAY [localhost] *****...
TASK [test] ****...
ok: [localhost] => (item=1) => {
"item": 1
}
ok: [localhost] => (item=2) => {
"item": 2
}
但是给定此文件:./roles/TestRole/tasks/main.yaml:
- name: test
debug:
var: item
loop:
- 1
- 2
此命令:
ansible localhost -m include_role -a name=TestRole
产生此结果:
localhost | SUCCESS => {
"changed": false,
"include_variables": {
"name": "FooRole"
}
}
localhost | SUCCESS => {
"msg" "All items completed"
}
因此-角色中的debug语句仅显示“所有项目已完成”,而不是显示项目值。看起来角色中的循环调试语句的行为与剧本中的循环调试语句的行为不同。难道我做错了什么?在python 2.7.5上运行Ansible 2.7.9。
答案 0 :(得分:1)
这实际上是您从adhoc命令获得的信息(我完全不知道为什么)。同时,这是使用它的一个相当极端的情况。您宁愿在剧本中加入角色。下面的两个剧本示例都可以为您带来预期的结果:
---
- name: test1 for role
hosts: localhost
gather_facts: false
roles:
- role: TestRole
---
- name: test2 for roles
hosts: localhost
gather_facts: false
tasks:
- name: include role
include_role:
name: TestRole