2017-03-31 8 views
3

Ich habe ein Problem, eine funktionierende Lösung zu finden, um mein Inventar zu durchlaufen. ich mein Textbuch beginnen mit einer intentory Datei verknüpfen:Schleife durch Hosts mit ansible

ansible-Textbuch -i Inventar/dev.yml playbook.yml

Mein Textbuch sieht wie folgt aus:

--- 
- hosts: localhost 
    tasks: 
    - name: Create VM if enviro == true 
     include_role: 
     name: local_vm_creator 
     when: enviro == 'dev' 

So Beim Laden des Playbooks wird die Variable enviro von host_vars gelesen und die when-Bedingung auf dev gesetzt. Die Inventardatei dev.yml sieht wie folgt aus:

[local_vm] 
192.168.99.100 
192.168.99.101 
192.168.99.102 

[local_vm_manager_1] 
192.168.99.103 

[local_vm_manager_2] 
192.168.99.104 

[local-all:children] 
local_vm 
local_vm_manager_1 
local_vm_manager_2 

Mein main.yml in meiner Rolle local_vm_creator wie folgt aussieht:

--- 
- name: Create test host 
    local_action: shell docker-machine create -d virtualbox {{ item }} 
    with_items: 
    - node-1 
    - node-2 
    - node-3 
    - node-4 
    - node-5 

- debug: msg="host is {{item}}" 
    with_items: groups['local_vm'] 

Und das Problem ist, dass ich nicht die aufgeführten Server erhalten können aus die dev.yml-Inventardatei.

es gibt nur:

ok: [localhost] => (item = Gruppen [ 'local_vm']) => { "item": "Gruppen [ 'local_vm']", " msg ": "Host-Gruppen [ 'local_vm']"}

Antwort

8

Wenn das einzige Problem with_items Schleife ist, ersetzen Sie ihn durch:

with_items: "{{ groups['local_vm'] }}" 

und Sie sind gut zu gehen. Bare-Variablen werden in with_ nicht mehr unterstützt.

+0

Hey vielen Dank. Wie sollte man all diese Zitate wissen ... Jesus ;-P – Jurudocs

Verwandte Themen