Development #23086
deviner le nom d'utilisateur
100%
Description
ce patch permet d'éviter de devoir préciser "-e user=`whoami`".
Fichiers
Historique
Mis à jour par Christophe Siraut il y a environ 6 ans
- Fichier 0001-guess-username.patch ajouté
- Patch proposed changé de Non à Oui
fonctionne désormais avec tous les playbooks
Mis à jour par Christophe Siraut il y a environ 6 ans
- Fichier 0003-bootstrap-install-ca-certificates-entrouvert-complet.patch ajouté
- Fichier 0002-clean.yaml-allow-execution-on-all-hosts.patch ajouté
Petits ajouts à #21756.
Mis à jour par Christophe Siraut il y a presque 6 ans
- Statut changé de Nouveau à Résolu (à déployer)
- % réalisé changé de 0 à 100
Appliqué par commit dab85a4c730fcd1f0cc6890e9f83030a10209392.
Mis à jour par Christophe Siraut il y a presque 6 ans
- Statut changé de Résolu (à déployer) à En cours
(une branche wip avait mis ce ticket à résolu)
Mis à jour par Christophe Siraut il y a presque 6 ans
- Fichier
0003-bootstrap-install-ca-certificates-entrouvert-complet.patchsupprimé
Mis à jour par Christophe Siraut il y a presque 6 ans
- Fichier
0002-clean.yaml-allow-execution-on-all-hosts.patchsupprimé
Mis à jour par Christophe Siraut il y a presque 6 ans
- Fichier 0001-guess-username-closes-23086.patch ajouté
Actuellement la documentation [1] recommande de spécifier "-e user=$(whoami)" pour la majorité des commandes, cette valeur peut être calculée simplement, voir ce patch.
1. https://dev.entrouvert.org/projects/publik-devinst/wiki/Installation_d'un_environnement_de_d%C3%A9veloppement_local
Mis à jour par Christophe Siraut il y a presque 6 ans
- Fichier
0001-guess-username-closes-23086.patchsupprimé
Mis à jour par Christophe Siraut il y a presque 6 ans
Mis à jour par Christophe Siraut il y a presque 6 ans
corrigé la condition when
Mis à jour par Christophe Siraut il y a presque 6 ans
ajouté une note dans le commentaire de l'action
Mis à jour par Emmanuel Cazenave il y a presque 6 ans
Marche dans le cas où l'utilisateur ne définit pas de user
dans son inventaire ou sur la CLI.
Dans le cas contraire erreur :
TASK [common : set user variable] *********************************************************************** fatal: [localhost]: FAILED! => {"msg": "The task includes an option with an undefined variable. The error was: 'dict object' has no attribute 'stdout'\n\nThe error appears to have been in '/home/cazino/src/publi k-devinst/roles/common/tasks/main.yml': line 7, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n- name: set user variable\n ^ here\n\ nexception type: <class 'ansible.errors.AnsibleUndefinedVariable'>\nexception: 'dict object' has no attribute 'stdout'"}
Tenté de supprimé le premier when
dans le patch, l'utilisateur de l'inventaire est quand même surchargé.
Mis à jour par Christophe Siraut il y a presque 6 ans
Manu, j'ai oublié pourquoi on ne prend pas simplement "ansible_user"? (surchargeable un peu partout, https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html)
Mis à jour par Emmanuel Cazenave il y a presque 6 ans
Déjà essayé mais ça ne marchait pas, en particulier dans les roles qui sont appelés par un import_role:
si ma mémoire est bonne.
Mais import_role
est une fonctionnalité très récente, ça vaut peut-être le coup de re-essayer avec la dernière version d'ansible de pypi, ça a peut-être été corrigé.
Mis à jour par Christophe Siraut il y a presque 6 ans
Pour la question "ansible_user", nous n'utilisons pas cette variable parce que la procédure actuelle utilise "sudo" et que "ansible_user" donne alors "root". Dans ce cas il y a bien la varibale SUDO_USER qui est intéressante mais qui n'existe pas dans une utilisation simple.
chris@pad:~$ sudo ansible -m setup localhost | grep ansible_user [WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all' "ansible_user_dir": "/root", "ansible_user_gecos": "root", "ansible_user_gid": 0, "ansible_user_id": "root", "ansible_user_shell": "/bin/bash", "ansible_user_uid": 0, "ansible_userspace_architecture": "x86_64", "ansible_userspace_bits": "64", chris@pad:~$ sudo ansible -m setup localhost | grep chris [WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all' "PWD": "/home/chris", "SUDO_USER": "chris", "device": "/home/chris/.Private", "mount": "/home/chris",
Mis à jour par Christophe Siraut il y a presque 6 ans
Pour faire marcher mon patch initial il faudrait déplacer "user" depuis group_vars vers roles/common/defaults. Ceci afin que tu puisse la surcharger avec ton propre inventory:
https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#variable-precedence-where-should-i-put-a-variable
Je regardais un talk de la dernière debconf à Hamburg sur Ansible, et le gars disais qu'il faut privilégier roles/defaults/mail.yaml pour cette raison, voir 7:20 dans https://saimei.ftp.acc.umu.se/pub/debian-meetings/2018/miniconf-hamburg/2018-05-20/ansible_bcp.webm
Mis à jour par Emmanuel Cazenave il y a presque 6 ans
Christophe Siraut a écrit :
Pour la question "ansible_user", nous n'utilisons pas cette variable parce que la procédure actuelle utilise "sudo" et que "ansible_user" donne alors "root". Dans ce cas il y a bien la varibale SUDO_USER qui est intéressante mais qui n'existe pas dans une utilisation simple.
Je n'utilise jamais sudo
, je fais ansible-playbook -K
.
Pour faire marcher mon patch initial il faudrait déplacer "user" depuis group_vars vers roles/common/defaults. Ceci afin que tu puisse la surcharger avec ton propre inventory:
Hmmm actuellement le user
est dans group_vars/all qui a une priorité plus flaible que inventory host_vars/*
J'ai plutôt l'impression que le problème est que le set_facts que tu utilise dans le patch a une priorité plus haute que inventory host_vars/*
Bref je peux me tromper, je te laisse le soin de proposer et tester un patch :)
Mis à jour par Christophe Siraut il y a plus de 5 ans
- Statut changé de En cours à Résolu (à déployer)
Appliqué par commit fc067c73f44825a89168e22e09d4b1402cf14a6b.
Mis à jour par Frédéric Péters il y a plus de 5 ans
- Statut changé de Résolu (à déployer) à En cours
Ça a juste été poussé dans une branche; il ne faut pas utiliser (closes: #...).
Mis à jour par Christophe Siraut il y a plus de 5 ans
- Fichier 0001-guess-username-23086.patch 0001-guess-username-23086.patch ajouté
- Statut changé de En cours à Solution proposée
Emmanuel Cazenave a écrit :
Marche dans le cas où l'utilisateur ne définit pas de
user
dans son inventaire ou sur la CLI.
Dans le cas contraire erreur : [...]
Corrigé dans le patch attaché.
Mis à jour par Anonyme il y a plus de 5 ans
- Statut changé de Solution proposée à Solution validée
ça marche
Mis à jour par Christophe Siraut il y a plus de 5 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit c7a55a57a8674015dbc3cb23a91d29a41e8336a2 (HEAD -> master, origin/master, origin/HEAD) Author: Christophe Siraut <csiraut@entrouvert.com> Date: Wed Apr 11 09:39:22 2018 +0200 guess username (#23086)
Mis à jour par Emmanuel Cazenave il y a plus de 5 ans
Cool cool et j'ai du coup pu simplifier la doc.
Mis à jour par Emmanuel Cazenave il y a plus de 5 ans
- Statut changé de Résolu (à déployer) à Solution déployée
guess username (closes: #23086)