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/

Répondre à