web-dev-qa-db-fra.com

Où stocker le fichier Ansible Host sur Mac OS X

J'essaie de démarrer avec Ansible pour approvisionner ma Vagrantbox, mais je ne vois pas comment traiter les fichiers Host.

Selon la documentation, cela devrait être stocké dans /etc/ansible/hosts, mais je ne le trouve pas sur mon système (Mac OS X). J'ai aussi vu des exemples où le fichier Host.ini est situé dans la racine du document, à côté du fichier vagrant.

Ma question est donc la suivante: où stockeriez-vous votre fichier hôte pour configurer une seule boîte vagabonde?

60
StenW

Alors que Ansible essayera /etc/ansible/hosts par défaut, il existe plusieurs façons de dire à Ansible où rechercher un fichier d'inventaire alternatif:

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

À présent, vous ne précisez pas si vous souhaitez utiliser le possibilité provisoire disponible dans vagrant , ou si vous souhaitez provisionner votre hôte vagabond manuellement.

Passons d'abord à la condition provisoire de Vagrant:

Créez un répertoire (par exemple, test) et créez un fichier Vagrant dans:

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

Désormais, lorsque vous exécuterez vagrant up (ou vagrant provision), le responsable de la recherche de Vangrant recherchera un nom de fichier hosts dans le même répertoire que Vagrantfile et tentera d'appliquer le livre de lecture provision.yml.

Vous pouvez aussi le lancer manuellement, sans recourir à la solution provisoire de Vagrant:

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

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

{shameless_plug} Vous pouvez trouver un exemple plus complet mélangeant vagabond et ansible ici {{/ shameless_plug}

Bonne chance !

69
leucos

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 souhaiterez peut-être simplement modifier la valeur par défaut.

38
counterbeing

J'aime utiliser les 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 contenant plusieurs fichiers.

Vous pouvez également utiliser l'écrire dans votre fichier ~/.bash_profile pour qu'il soit persistant Plusieurs autres variables peuvent être configurées de cette façon au lieu de conserver un fichier de configuration pour plus d'informations.

7
DomaNitro

Si vous utilisez le fournisseur de ansible de Vagrant, Vagrant générera automatiquement un fichier hôtes Ansible (appelé vagrant_ansible_inventory_default) et configurera ansible-playbook pour utiliser ce fichier. Cela ressemble à ceci:

# Generated by Vagrant

default ansible_ssh_Host=127.0.0.1 ansible_ssh_port=2222

Il appelle l’hôte vagabond «par défaut». Par conséquent, vos jeux doivent faire référence à «par défaut» ou à «tous».

3
Lorin Hochstein

Voici une description de ce qu'il faut faire après avoir installé Ansible sur Mac, cela a fonctionné pour moi: ansible-tips-and-tricks.readthedocs.io

J'ai téléchargé le fichier ansible.cfg sur 

/Users/"yourUser"/.ansible

et ensuite vous pouvez éditer le fichier ansible.cfg en décommentant le 

inventory      = /Users/"yourUser"/.ansible 

ligne et en 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 essayer localement, vous pouvez mettre 

localhost              ansible_connection=local

dans le fichier hosts et essayez-le avec 

ansible -m ping all
0