Merci Michel, c'est comme ça qu'il faut faire en effet, je suis partis sur le mauvais chemin !
Pour l'utf8, c'est que dans le fichier vars je voulais mettre le nom complet : - accounts: - Jérémy Dupont - Joël Martin ... et transformer ces variables dans le playbook. Un filtre jinja ou un module me semble obligatoire ... Greg Le 6 janvier 2014 15:06, Michel Blanc <mblanc.netwo...@gmail.com> a écrit : > On 06/01/2014 13:29, Greg wrote: > > > et je suis confronté à vouloir faire une utilisation détournée. Je > > cherche une bonne pratique ou un retour d'XP si vous avez. > > Je suis en train de créer un playbook de création de compte d'employé > > qui se résume à : > > - sur serveurA, créer un compte mail via postfixadmin (donc du SQL) > > - sur serveurA, créer un compte jabber > > - sur serveurB, créer un compte Redmine > > - sur serveurB, créer un compte gitolite > > - sur serveurC, abonner l'adresse mail à 4 mailing-list mailman > > - sur serveurD, attribuer un numéro de téléphone sur le serveur VoIP > > > > Chacune de ces étapes serait un role au sens Ansible, pour qu'un user > > puisse par exemple avoir tous les roles sauf un numéro de téléphone. > > > Sauf que Ansible a été créé pour configurer une grappe de serveur, ce > > qui me fait me poser des questions c'est d'avoir une tâche par > > serveur... > > Greg, > > Un moyen serait d'avoir une liste de users (disons "accounts") dans > group_vars/all (ou dans un endroit plus approprié) et d'exécuter tes roles > : > > - name: Jabber & Postifx > hosts: serveurA > roles: > - postfixaccounts > - jabberaccounts > > - name: Redmine & Gitolite provisionning > hosts: serveurB > roles: > - postfix > - jabber > ... > > puis de looper dans tes rôles sur la liste de comptes > (roles/postfix/tasks/accounts.yml) : > > - name: Account provisionning > shell : postfixadmin ... {{ item.nom }}{{ item.prenom }} > with_items: accounts > > C'est robuste, idempotent (tu peux provisionner tous tes serveurs et > leurs comptes d'un coup de baguette magique), mais potentiellement super > long si tu as beaucoup d'utilisateurs. > > Pour palier à ce dernier problème, tu peux écraser accounts quand tu > invoques ton playbook : > > --extra-vars '{ "accounts": { "nom": "gargamel", "prenom":"lucien" }}' > > et acccounts ne contiendra (pour l'invocation) que ce user. > > > et comment calculer les variables à partir du prénom et du > > nom (en utf-8). > > Je ne comprends pas bien le besoin derrière cette question mais je tente > quand même. > Si on repart sur le playbook dédié pour créer {un,tous les} utilisateur, > tu peux ensuite les concatener dans une tâche comme ça : > > {{item.nom}}{{item.prenom}} > {{item.nom}}.{{item.prenom}} > {{item.nom}}_oulala_{{item.prenom}} > ... > > voire les tripoter avec un filtre jinja, extraire un range à grand coup > de python (pas sûr de moi la dessus) ou faire mouliner un script en > local_action avec un register à la clef (ok, c'est un hack), ou mieux, > écrire ton propre filtre Jinja > (http://docs.ansible.com/developing_plugins.html#filter-plugins). > > J'espère avoir compris ton besoin et donné quelques pistes. > > A+ > > M > -- > Michel Blanc > { :github => "@leucos", :twitter => "@b9m", :gpg => "0X24B35C22" } > _______________________________________________ > Liste de diffusion du FRsAG > http://www.frsag.org/ >
_______________________________________________ Liste de diffusion du FRsAG http://www.frsag.org/