【问题标题】:Ansible-Playbook run custom group_varsAnsible-Playbook 运行自定义 group_vars
【发布时间】:2018-11-16 11:41:16
【问题描述】:

我是使用 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

我的库存文件

像这样定义变量:my_Var: true

myPlaybook.yml

评估此变量以了解要执行的角色。

when: "{{my_Var}}"

【问题讨论】:

    标签: ansible ansible-inventory


    【解决方案1】:

    我得到了以下工作。

    我创建了以下目录结构:

    .
    + 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 代码提供一些指导。

    【讨论】:

    • 泰!我的库存文件“localhost”my_var=value 中没有它的作品
    【解决方案2】:

    库存文件:ansible-playbook myPlaybook.yml -i /etc/ansible/inventory/myInventory.yml

    组变量文件夹/文件:/etc/ansible/inventory/group_vars/myInventory.yml / /etc/ansible/inventory/group_vars/myInventory/something.yml

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-19
      相关资源
      最近更新 更多