我是新手,使用ansible。
我正在尝试执行一个自定义剧本,该剧本执行从iso挂载的角色,为此,我具有以下结构。
- /iso/
- /AnsibleFiles/
- /roles/
- ....
- ....
- myPlaybook.yml
- /myInventory/
- group_vars/
- myInventoryFile
我正在尝试像这样执行:
ansible-playbook myPlaybook.yml -i myInventory/group_vars/myInventoryFile
但是它不起作用.. ansible不要读我的变量,返回此消息:
The conditional check '{{ my_Var }}' failed. The error was: error while evaluating conditional ({{ my_Var }}): 'my_Var ' is undefined\n\nThe error appears to have been in '/home/user/myPlaybook.yml
myInventoryFile
具有如下定义的变量:my_Var: true
myPlaybook.yml
需要评估此变量才能知道要执行哪些角色。
when: "{{my_Var}}"
答案 0 :(得分:0)
库存文件:ansible-playbook myPlaybook.yml -i /etc/ansible/inventory/myInventory.yml
组vars文件夹/文件:/etc/ansible/inventory/group_vars/myInventory.yml
/ /etc/ansible/inventory/group_vars/myInventory/something.yml
答案 1 :(得分:0)
我有以下工作要做。
我创建了以下目录结构:
.
+ AnsibleFiles
| + roles
| + testmyvar
| + tasks
| + main.yml
+ myInventory
| + localhost
+ myPlaybook.yml
AnsibleFiles / roles / testmyvar / tasks / main.yml的内容:
---
- name: Checking value of my_Var
debug: var=my_Var
...
myInventory / localhost的内容:
localhost my_Var=yuck
myPlaybook.yml的内容
---
- hosts: localhost
roles:
- AnsibleFiles/roles/testmyvar
...
当我运行以下命令时,我得到以下信息:
me$ ansible-playbook -i ./myInventory/localhost ./myPlaybook.yml
PLAY [localhost] ***************************************************************
TASK [Gathering Facts] *********************************************************
ok: [localhost]
TASK [AnsibleFiles/roles/testmyvar : Checking value of my_Var] *****************
ok: [localhost] => {
"my_Var": "yuck"
}
PLAY RECAP *********************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0
我认为您不能拥有group_vars目录,并在命令行上使用-i进行指定。根据我的阅读,您必须有一个清单文件。这意味着所有内容都必须在该清单文件中,包括vars定义。
希望这为如何更新Ansible代码提供了一些指导。