Meilleure pratique Ansible pour transmettre des variables à des playbooks imbriqués ?

StackOverflow https://stackoverflow.com//questions/22077272

  •  23-12-2019
  •  | 
  •  

Question

J'essaie donc de comprendre Ansible et de créer une simple pile LEMP.J'ai décidé de travailler avec un playbook imbriqué parce que je veux compartimenter le plus possible, tout en apprenant.Je rencontre ce problème où je dois transmettre certaines variables telles que le mot de passe root de MySQL.Maintenant, je me demande s'il existe une bonne pratique pour transmettre les variables du playbook principal aux jeux individuels ou les variables devraient-elles être définies dans les sous-playbooks individuels ?j'utilise ce dépôt comme base pour mon propre projet.Je me demande également comment fonctionne la substitution avec les variables, si une valeur par défaut est définie dans le sous-playbook, les variables définies dans le playbook principal remplacent-elles cette valeur ?

Était-ce utile?

La solution

J'imagine que les meilleures pratiques sont, si possible, de réutiliser le code existant.Si vous n'avez pas déjà entendu parler de cela, Ansible a Galaxy site à https:// galaxie.ansible.com/ où les gens partagent divers rôles prêts à l'emploi.Un de ces rôles est MySQL (son repo github pertinent est à https://github.com/bennojoy/mysql .)

Vous pouvez non seulement utiliser ce rôle dans votre jeu de jeu, mais cette page présente également des exemples indiquant comment passer des paramètres / variables à vos rôles:

4) Un serveur MySQL entièrement installé / configuré avec une réplication principale et esclave.

- hosts: master
  roles:
   - {role: mysql, mysql_db: [{name: benz}, {name: benz2}],
                   mysql_users: [{name: ben3, pass: foobar, priv: "*.*:ALL"},
                                 {name: ben2, pass: foo}],
                   mysql_db_id: 8 }

- hosts: slave
  roles:
   - {role: mysql, mysql_db: none, mysql_users: none,
            mysql_repl_role: slave, mysql_repl_master: vm2,
            mysql_db_id: 9, mysql_repl_user: [{name: repl, pass: foobar}] }

Autres conseils

Une bonne solution consiste à disposer d'un fichier vars.yml.dist avec des exemples de variables pouvant être définies.Cela existe dans votre référentiel et les développeurs feraient simplement une copie locale de vars.yml sur cette base.Ensuite, ajoutez simplement ce qui suit à votre playbook : include: vars.yml Cela vous permet de transmettre des variables à vos rôles, imbriquées ou non.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top