Ceci est un fragment d’un playbook que j’utilise ( server.yml ): – name: Determine Remote User hosts: web gather_facts: false roles: – { role: remote-user, tags: [remote-user, always] } Mon fichier hosts a différents groupes de serveurs, par exemple [web] xxxx [droplets] xxxx Maintenant, je veux exécuter ansible-playbook -i hosts/ server.yml et remplacer les hosts: […]
Je dois vérifier si un fichier existe dans /etc/ . Si le fichier existe, je dois ignorer la tâche. Voici le code que j’utilise: – name: checking the file exists command: touch file.txt when: $(! -s /etc/file.txt) Si le file.txt existe, alors je dois ignorer la tâche.
En réponse à un changement, j’ai plusieurs tâches connexes à exécuter. Comment puis-je écrire un gestionnaire Ansible avec plusieurs tâches? Par exemple, j’aimerais un gestionnaire qui redémarre un service uniquement s’il a déjà démarré: – name: Restart conditionally shell: check_is_started.sh register: result – name: Restart conditionally step 2 service: name=service state=restarted when: result
J’utilise Ansible 1.5.3 et Git avec le transfert d’agent ssh ( https://help.github.com/articles/using-ssh-agent-forwarding ). Je peux me connecter au serveur que je gère avec Ansible et vérifier que ma connexion à git est correctement configurée: ubuntu@test:~$ ssh -T [email protected] Hi gituser! You’ve successfully authenticated, but GitHub does not provide shell access. Je peux aussi cloner et […]
Je personnalise la création des users Linux dans mon rôle. Je dois laisser les utilisateurs de mon rôle personnaliser le home_directory , group_name , name , password . Je me demandais s’il y avait un moyen plus flexible de faire face aux valeurs par défaut. Je sais que le code ci-dessous est possible: – name: […]
Je peux le faire avec shell en utilisant une combinaison de getent et awk comme ceci: getent passwd $user | awk -F: ‘{ print $6 }’ Pour la référence, dans Puppet, je peux utiliser un fait personnalisé, comme ceci: require ‘etc’ Etc.passwd { |user| Facter.add(“home_#{user.name}”) do setcode do user.dir end end } ce qui rend […]
J’ai une variable nommée “network” enregistrée dans Ansible: { “addresses”: { “private_ext”: [ { “type”: “fixed”, “addr”: “172.16.2.100” } ], “private_man”: [ { “type”: “fixed”, “addr”: “172.16.1.100” }, { “type”: “floating”, “addr”: “10.90.80.10” } ] } } Est-il possible d’obtenir l’adresse IP (“addr”) avec type = “floating” en faisant quelque chose comme ça? – debug: […]
Mon cas d’utilisation est le suivant: J’ai un fichier de modèle et j’aimerais créer 2 fichiers différents à partir de ce modèle, les variables étant remplies par un ensemble de variables différent pour chaque fichier. Par exemple, disons que je veux modéliser le fichier contenant la ligne: mkdir -p {{myTemplateVariable}} Je voudrais trouver un moyen […]
en ce moment, j’utilise un script shell dans Ansible qui serait beaucoup plus lisible s’il était sur plusieurs lignes – name: iterate user groups shell: groupmod -o -g {{ item[‘guid’] }} {{ item[‘username’] }} ….more stuff to do with_items: “{{ users }}” Je ne sais pas comment autoriser le script multiligne dans le module shell […]
Je conçois une sorte de librairie avec des tâches individuelles donc dans les rôles habituels repo, j’ai quelque chose comme: roles ├── common │ └── tasks │ ├── A.yml │ ├── B.yml │ ├── C.yml │ ├── D.yml │ ├── login.yml │ ├── logout.yml │ └── save.yml ├── custom_stuff_workflow │ └── tasks │ └── main.yml […]