2017-04-01 1 views
2

J'ai la structure de dossier ci-dessous, qui semble la faire construire et charger les rôles, mais les vars de groupe et d'hôte ne sont pas chargés. Comment venir?host_vars et group_vars ne sont pas chargés

/etc/ansible/

- hosts 
- requirements.yml 
- group_vars/ 
    - app/ 
     - postgres.yml 
- host_vars/ 
    - app1/ 
     - postgres.yml 
- roles 

/documents/ansible/

- playbook.yml 
- vagrant 

fichier hôte

# Application servers 
[app] 
192.168.60.6 

# Group multi 
[multi:children] 
app 


#variables applied to all servers 
[multi:vars] 
ansible_ssh_user=vagrant 
ansible_ssh_private_key_file=~/.vagrant.d/insecure_private_key 

** errante **

# -*- mode: ruby -*- 
# vi: set ft=ruby : 


Vagrant.configure("2") do |config| 

    # Genral Vagrant VM Configuration. 
    config.vm.box = "geerlingguy/centos7" 
    config.ssh.insert_key = false 
    config.vm.synced_folder ".", "/vagrant", disabled: true 
    config.vm.provider :virtualbox do |v| 
    v.memory = 256 
    v.linked_clone = true 
    end 

    config.vm.provision "ansible" do |ansible| 
    ansible.playbook = "playbook.yml" 
    end 

# Application server 1 
config.vm.define "app1" do |app| 
    app.vm.hostname = "orc-app1.dev" 
    app.vm.network :private_network, ip: "192.168.60.6" 
end 

end 

Répondre

1

Vagrant par défaut utilise son propre, le fichier d'inventaire généré automatiquement en .vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory.

Il y a une option ansible.inventory_path en Vagrant pour pointer vers le fichier d'inventaire/répertoire autre que l'auto-généré, mais vous ne l'utilisez pas pour pointer vers le /etc/ansible/hosts dans Vagrantfile, si Vagrant est tout à fait ignorer. De même, il ne cherche pas host_vars et group_vars dans le /etc/ansible.


D'autre part, le chemin des rôles n'est pas remplacée par le fichier d'inventaire, de sorte que le fait que Vagrant utilise son propre une influence ne pas le chemin des rôles.

Ils sont chargés par défaut à partir de /etc/ansible/roles (ou de tout autre répertoire utilisé par défaut par Ansible, par exemple /usr/local/etc/ansible/roles sur macOS).

+0

J'ai donc besoin de copier les dossiers 'host_vars' et' group_vars' dans playbook.yml? et comment pointer vers '/ etc/ansible/hosts' dans le fichier vagabond? –

+0

Je ne sais pas ce dont vous avez besoin, parce que je ne sais pas ce que vous voulez. À première vue, cela n'a aucun sens d'utiliser un fichier d'inventaire global pour un projet Vagrant, mais peut-être avez-vous vos propres raisons. Je ne suis pas sûr de la deuxième question non plus, j'ai donné le nom de l'arrangement dans la réponse - quel est le problème avec juste l'employant? – techraf

+0

Et même si vous copiez 'group_vars' tel quel, Vagrant n'aura aucune idée de ce qu'est' app'. Il va chercher le 'app1' de' host_vars', parce que vous définissez 'app1' dans le' Vagrantfile' et il sera reflété dans l'inventaire généré automatiquement, mais pas 'app'. – techraf