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?
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.cfg
fichier 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 !
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.
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.
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».
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