J'utilise Ansible et j'ai cette configuration dans mon inventaire / tout:
[master]
192.168.1.10 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant
[slave]
192.168.1.11 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant
192.168.1.12 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant
[app]
192.168.1.13 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant
[all:children]
master
slave
Je ne veux pas répéter tous les paramètres pour chaque nouvelle instance. Comment puis-je les configurer à un seul endroit? Y at-il un fichier avec ces paramètres?
~/.ssh/config
Réponses:
Vous pouvez ajouter la section suivante à votre fichier d'inventaire:
Note: Avant Ansible 2.0
ansible_user
étaitansible_ssh_user
.la source
[all:vars] ansible_connection=ssh ansible_port=22 ansible_user=admin
ansible_port
. Vous n'avez donc pas besoin de le spécifier explicitement, sauf s'il est différent. Si quelqu'un sait comment appliquer des variables à plus d'un groupe à la fois (mais pas «tous»), la séparation par virgule ne semble pas fonctionner.Variables de groupe
Vous pouvez définir des variables qui s'appliquent à tous les hôtes en utilisant la disposition du livre de lecture spécifiée dans le document Meilleures pratiques d' Ansible et en créant un
group_vars/all
fichier dans lequel vous les définissez .[modifier] Je suis toutefois confus quant à ce que vous essayez de faire. Vous n'avez pas besoin de spécifier l'utilisateur ou le mot de passe Ansible dans l'inventaire. Si vous utilisez Vagrant, ce n'est absolument pas le cas, et si vous appelez Ansible à partir de la ligne de commande, vous pouvez spécifier l'utilisateur avec
--user=vagrant
et lui demander le mot de passe--ask-pass
.la source
group_vars/all/main.yml
ou simplementgroup_vars/all
?sshpass
-"you must install the sshpass program"
group_vars/all
.Je pense qu'il est préférable d'utiliser l'installation de la clé ssh sur tous les serveurs de l'extraction. Vous ne devez exécuter ssh-copy-id que par nœud et installer votre clé ssh partout pour permettre à ansible de se connecter à l'aide de votre clé ssh. Il sera plus sûr de ne pas enregistrer les mots de passe dans le classeur / inventaire.
Pour ce faire, vous devez générer votre paire de clés ssh puis exécuter ssh-copy-id pour tous les serveurs.
la source
Ajouter ci-dessous aux hôtes de l'inventaire.
Pour Ansible <2.0:
Pour Ansible> = 2.0 :
la source
ansible_ssh_pass
pasansible_pass
.Disclaimer: Je n'ai testé cela que sur OSX. Sur la base des divers documents, je pense que cela fonctionnera sur d’autres plateformes.
"répertoire du projet" fait référence au répertoire de base du projet Vagrant - le répertoire qui contient
Vagrantfile
.Fichier d'inventaire généré automatiquement par Vagrant:
Vagrant crée un fichier d'inventaire avec les vars de connexion Ansible par défaut. Cherchez-le dans
<project directory>/.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory
.Ce fichier sera régénéré par Vagrant au besoin, ainsi les modifications manuelles seront écrasées. Toutefois, conformément à la documentation Vagrant, vous pouvez spécifier plusieurs ordinateurs, groupes de vars, etc.,
Vagrantfile
et ils seront ajoutés à ce fichier d'inventaire.Configurez Ansible pour utiliser par défaut ce fichier d'inventaire:
Pour que ce fichier devienne le fichier par défaut utilisé par la
ansible
commande lorsque vous vous trouvez dans le répertoire du projet (sur l'hôte), ajoutez unansible.cfg
fichier dans votre répertoire de projet avec le contenu suivant, en modifiant le chemin d'accès selon vos besoins:Pour confirmer que ce fichier d'inventaire est utilisé, recherchez-le comme fichier par défaut signalé par ansible:
(depuis le répertoire du projet)
$ ansible | grep inventory ERROR! Missing target hosts -i INVENTORY, --inventory-file=INVENTORY specify inventory host path (default=./.vagrant/provis ioners/ansible/inventory/vagrant_ansible_inventory) or
Pour confirmer vos hôtes:
$ ansible all --list-hosts hosts (2): master slave
Utiliser Ansible avec ces hôtes:
À partir du répertoire du projet, vous devriez alors pouvoir utiliser
ansible
normalement avec les hôtes que vous avez définisVagrantfile
.Par exemple:
la source