1 votes

Ansible ne charge pas les variables d'environnement à partir de .bashrc

Je veux précharger des variables à partir du fichier .bashrc avec un playbook Ansible.

J'ai essayé ces méthodes :

- hosts: my_host
  tasks: 
    - name: Afficher les variables d'environnement
      shell: |
        . ./.env_file_name && env

    - name: Faire une autre action
      shell: |
        . ./.env_file_name && do_something_else

Une autre façon :

- hosts: "{{ host }}" 
  tasks:
    - name: Sourcer le fichier bashrc
      shell: . /home/user/.bashrc && env
      register: env_file_result

    - name: Afficher
      debug:
        msg: "{{ env_file_result.stdout_lines }}"

Les deux renvoient ceci :

TÂCHE [source bashrc file] ************************************************************************************************************************************************************************************
chemin de la tâche : /home/srvadm/playbooks/hello.yml:3
L'utilisation du fichier de module /usr/lib/python3.6/site-packages/ansible/modules/commands/command.py
Le pipelinage est activé.
 ÉTABLISSEMENT DE LA CONNEXION SSH POUR L'UTILISATEUR : utilisateur
 SSH : EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="user"' -o ConnectTimeout=10 -o ControlPath=/home/srvadm/.ansible/cp/d9553c19b6 XX.XX.XX.XX '/bin/sh -c '"'"'/usr/bin/python && sleep 0'"'"''
 (0, b'\n{"changed": true, "end": "2021-03-12 11:56:15.596390", "stdout": "MAIL=/var/mail/user\\nSSH_CLIENT=XX.XX.XX.XX 41318 22\\nUSER=user\\nSHLVL=1\\nHOME=/home/user\\nLC_CTYPE=C.UTF-8\\nLOGNAME=user\\n_=/bin/sh\\nXDG_SESSION_ID=35493\\nPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games\\nXDG_RUNTIME_DIR=/run/user/1000\\nLANG=en_US.UTF-8\\nSHELL=/bin/bash\\nPWD=/home/user\\nSSH_CONNECTION=XX.XX.XX.XX 41318 XX.XX.XX.XX 22", "cmd": ". /home/user/.bashrc && env", "rc": 0, "start": "2021-03-12 11:56:15.593574", "stderr": "", "delta": "0:00:00.002816", "invocation": {"module_args": {"creates": null, "executable": null, "_uses_shell": true, "strip_empty_ends": true, "_raw_params": ". /home/user/.bashrc && env", "removes": null, "argv": null, "warn": true, "chdir": null, "stdin_add_newline": true, "stdin": null}}}\n', b'')
changé : [XX.XX.XX.XX] => {
    "changed": true,
    "cmd": ". /home/user/.bashrc && env",
    "delta": "0:00:00.002816",
    "end": "2021-03-12 11:56:15.596390",
    "invocation": {
        "module_args": {
            "_raw_params": ". /home/user/.bashrc && env",
            "_uses_shell": true,
            "argv": null,
            "chdir": null,
            "creates": null,
            "executable": null,
            "removes": null,
            "stdin": null,
            "stdin_add_newline": true,
            "strip_empty_ends": true,
            "warn": true
        }
    },
    "rc": 0,
    "start": "2021-03-12 11:56:15.593574",
    "stderr": "",
    "stderr_lines": [],
    "stdout": "MAIL=/var/mail/user\nSSH_CLIENT=XX.XX.XX.XX 41318 22\nUSER=user\nSHLVL=1\nHOME=/home/user\nLC_CTYPE=C.UTF-8\nLOGNAME=user\n_=/bin/sh\nXDG_SESSION_ID=35493\nPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games\nXDG_RUNTIME_DIR=/run/user/1000\nLANG=en_US.UTF-8\nSHELL=/bin/bash\nPWD=/home/user\nSSH_CONNECTION=XX.XX.XX.XX 41318 XX.XX.XX.XX 22",
    "stdout_lines": [
        "MAIL=/var/mail/user",
        "SSH_CLIENT=XX.XX.XX.XX 41318 22",
        "USER=user",
        "SHLVL=1",
        "HOME=/home/user",
        "LC_CTYPE=C.UTF-8",
        "LOGNAME=user",
        "_=/bin/sh",
        "XDG_SESSION_ID=35493",
        "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games",
        "XDG_RUNTIME_DIR=/run/user/1000",
        "LANG=en_US.UTF-8",
        "SHELL=/bin/bash",
        "PWD=/home/user",
        "SSH_CONNECTION=XX.XX.XX.XX 41318 XX.XX.XX.XX 22"
    ]
}

TÂCHE [Afficher] **************************************************************************************************************************************************************************************************
chemin de la tâche : /home/srvadm/playbooks/hello.yml:7
ok : [XX.XX.XX.XX] => {
    "msg": [
        "MAIL=/var/mail/user",
        "SSH_CLIENT=XX.XX.XX.XX YYYY 22",
        "USER=user",
        "SHLVL=1",
        "HOME=/home/user",
        "LC_CTYPE=C.UTF-8",
        "LOGNAME=user",
        "_=/bin/sh",
        "XDG_SESSION_ID=35493",
        "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games",
        "XDG_RUNTIME_DIR=/run/user/1000",
        "LANG=en_US.UTF-8",
        "SHELL=/bin/bash",
        "PWD=/home/user",
        "SSH_CONNECTION=XX.XX.XX.XX YYYY XX.XX.XX.XX 22"
    ]
}
META : a exécuté les gestionnaires
META : a exécuté les gestionnaires

J'ai obtenu cette "solution" ici : https://stackoverflow.com/questions/60209185/ansible-environment-variables-from-env-file mais cela ne fonctionne pas comme je m'y attendais. Comment puis-je précharger ces variables shell à partir du fichier .bashrc?

1 votes

Le résultat du débogage semble montrer que cela a fonctionné correctement. Quel est exactement le problème ?

0voto

asdfasdf Points 1

Oui - utilisez un become_flag: "--login"

0 votes

Doit être become_flags: "--login" avec un s

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X