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/