Ansible-Playbook运行自定义group_vars

时间:2018-11-16 11:41:17

标签: ansible ansible-inventory

我是新手,使用ansible。

我正在尝试执行一个自定义剧本,该剧本执行从iso挂载的角色,为此,我具有以下结构。

- /iso/
 - /AnsibleFiles/
     - /roles/
       - ....
       - ....

- myPlaybook.yml
- /myInventory/
  - group_vars/
    - myInventoryFile
  • myPlaybook.yml :它具有我的角色以及必须执行的角色。
  • 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}}"

2 个答案:

答案 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代码提供了一些指导。

相关问题