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?
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 !
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.
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
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".
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