Où stocker le fichier hôte Ansible sur Mac OS X

J'essaie de commencer avec Ansible pour provisionner mon Vagrantbox, mais je n'arrive pas à comprendre comment gérer les fichiers hôtes.

Selon la documentation, Le devrait être stocké dans /etc/ansible/hosts, mais je ne peux pas le trouver sur mon système (Mac OS X). J'ai également vu des exemples où le fichier host.ini situé dans la racine du document adjacent au fichier vagrant.

Donc, ma question Est où stockeriez-vous votre hostfile pour configurer une seule boîte vagabonde?

57
demandé sur techraf 2014-02-22 22:42:25

5 réponses

Alors Qu'Ansible va essayer /etc/ansible/hosts par défaut, il existe plusieurs façons de dire à ansible où chercher un autre fichier d'inventaire:

  • utilisez le commutateur de ligne de commande -i et transmettez votre chemin d'accès au fichier d'inventaire
  • ajouter hostfile = path_to_hostfile dans le [defaults] section de votre ~/.ansible.cfg fichier de configuration
  • utilisez {[7] } comme suggéré par DomaNitro dans sa réponse

Maintenant, vous ne mentionnez pas si vous voulez utiliser le Ansible provisionner disponible dans vagrant , ou si vous voulez provisionner votre hôte vagrant manuellement.

Allons d'abord pour le Vagrant Ansible provisionner:

Créez un répertoire (par exemple test), et créez un fichier Vagabond à l'intérieur:

Vagrantfile:

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

  config.vm.box = "precise64-v1.2"
  config.vm.box_url = "http://files.vagrantup.com/precise64.box"

  config.vm.define :webapp do |webapp|
    webapp.vm.hostname = "webapp.local"
    webapp.vm.network :private_network, ip: "192.168.123.2"
    webapp.vm.provider "virtualbox" do |v|
      v.customize ["modifyvm", :id, "--memory", 200, "--name", "vagrant-docs", "--natdnshostresolver1", "on"]
    end
  end

  # 
  # Provisionning
  #
  config.vm.provision :ansible do |ansible|
    ansible.playbook = "provision.yml"
    ansible.inventory_path = "hosts"
    ansible.sudo = true
    #
    # Use anible.tags if you want to restrict what `vagrant provision`
    # Here is a list of possible tags
    # ansible.tags = "foo bar"
    #
    # Use ansible.verbose to see detailled output for ansible runs
    # ansible.verbose = 'vvv'
    #
    # Customize your stuff here
    ansible.extra_vars = { 
      some_var: 42,
      foo: "bar",
    }
  end
end

Maintenant, lorsque vous exécutez vagrant up (ou vagrant provision), le fournisseur ansible de Vangrant recherchera un nom de fichier hosts dans le même répertoire que Vagrantfile, et essaiera d'appliquer le playbook provision.yml.

, Vous pouvez également l'exécuter manuellement, sans recourir pour Vagrant's Ansible provisionner:

ansible-playbook -i hosts provision.yml --ask-pass --sudo

Notez que Vagrant+Virtualbox + Ansible trio ne s'entend pas toujours bien. Certaines combinaisons de versions sont problématiques. Essayez de mettre à niveau vers les dernières versions si vous rencontrez des problèmes (en particulier en ce qui concerne le réseau).

{shameless_plug} vous pouvez trouver un exemple plus complet de mélange vagrant et ansible ici {/shameless_plug}

Bonne chance !

64
répondu leucos 2014-10-14 22:40:43

Si vous avez utilisé Brew pour installer Ansible, vous trouverez probablement le fichier hosts par défaut à /usr/local/etc/ansible/hosts. Mais, comme d'autres l'ont souligné, vous pouvez modifier la valeur par défaut.

38
répondu counterbeing 2014-08-13 22:16:30

J'aime utiliser des variables d'environnement bash car mon projet de base est partagé avec d'autres utilisateurs. vous pouvez simplement export ANSIBLE_HOSTS=/pathTo/inventory/ cela peut être un fichier hôte ou un répertoire avec plusieurs fichiers.

Vous pouvez également utiliser l'écrire dans votre ~/.bash_profile donc son persistant Un tas d'autres variables peuvent définir de cette façon au lieu de maintenir un fichier conf pour plus d'informations vérifiez la source dans ansible/lib/ansible/constants.py

6
répondu DomaNitro 2014-02-26 15:36:28

Si vous utilisez le provisionneur Ansible de Vagrant, Vagrant générera automatiquement un fichier hosts Ansible (appelé vagrant_ansible_inventory_default) et configurera Ansible-playbook pour utiliser ce fichier. Il ressemble à ceci:

# Generated by Vagrant

default ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222

Il appelle L'hôte Vagabond "default", donc vos pièces doivent se référer à "default" ou "all".

3
répondu Lorin Hochstein 2014-02-23 02:20:55

Voici une description que faire après l'installation d'Ansible sur Mac, il a travaillé pour moi: ansible-conseils-et-astuces.readthedocs.io

J'ai téléchargé l'ansible.fichier cfg à

/Users/"yourUser"/.ansible

Et ensuite, vous pouvez éditer l'ansible.cfg en décommentant le

inventory      = /Users/"yourUser"/.ansible 

Ligne et spécifiant le chemin d'accès au dossier ansible comme indiqué ci-dessus. Vous pouvez également créer le fichier hosts dans ce dossier. Pour l'essayer localement, vous pouvez mettre

localhost              ansible_connection=local

Dans le fichier hosts et essayer avec

ansible -m ping all
0
répondu Jan Clemens Stoffregen 2018-01-05 09:21:50