2017-09-15 5 views
1

Verwendung von Ansible im Versuch 1. sudo in eine Benutzer-ID - huser 2. Legen Sie einige Env-Variablen 3. Quelle der Datei.Ändern des Benutzers und Festlegen der Umgebungsvariable

Später drucke ich die env Variablen aber nicht sehen die env Variablen für den Benutzer hduser

- name: change to hduser 
    shell: sudo su - hduser 

- name: Setting 
    lineinfile: 
    dest: /home/hduser/.bashrc 
    line: 'export HADOOP_HOME=/usr/local/hadoop' 
    insertafter: 'EOF' 
    regexp: 'export HADOOP_HOME=/usr/local/hadoop' 
    state: present 

- name: Adding the path in the bashrc files 
    lineinfile: 
    dest: /home/hduser/.bashrc 
    line: 'export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64' 
    insertafter: 'EOF' 
    regexp: 'export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64' 
    state: present 

- name: Adding the path in the bashrc files 
    lineinfile: 
    dest: /home/hduser/.bashrc 
    line: 'export PATH=$PATH:$HADOOP_HOME/bin' 
    insertafter: 'EOF' 
    regexp: 'export PATH=\$PATH:$HADOOP_HOME/bin' 
    state: present 

- name: Source the bashrc file 
    shell: source /home/hduser/.bashrc 
    register: sourcevar 
    args: 
    executable: /bin/bash 

- debug: 
    var: sourcevar 
- name: print env variables 
    shell: sudo su hduser && env 
    register: envvar 
    args: 
    executable: /bin/bash 

- debug: 
    var: envvar 

Das sind meine env Variablen gesetzt ist es nicht die, die auflistet I bezogen.

ok: [default] => { 
    "envvar": { 
     "changed": true, 
     "cmd": "sudo su hduser && env", 
     "delta": "0:00:00.013310", 
     "end": "2017-09-15 17:37:01.913357", 
     "rc": 0, 
     "start": "2017-09-15 17:37:01.900047", 
     "stderr": "", 
     "stderr_lines": [], 
     "stdout": "TERM=xterm-256color\nSHELL=/bin/bash\nUSER=root\nSUDO_USER=vagrant\nSUDO_UID=1000\nUSERNAME=root\nMAIL=/var/mail/root\nPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\nPWD=/home/vagrant\nLANG=en_US.UTF-8\nSHLVL=1\nHOME=/root\nSUDO_COMMAND=/bin/sh -c echo BECOME-SUCCESS-nzuyqifbpqxknsapqpiflhxbmsrzdaqo; /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1505497021.78-205792997462616/command.py; rm -rf \"/home/vagrant/.ansible/tmp/ansible-tmp-1505497021.78-205792997462616/\" > /dev/null 2>&1\nLOGNAME=root\nSUDO_GID=1000\n_=/usr/bin/env", 
     "stdout_lines": [ 
      "TERM=xterm-256color", 
      "SHELL=/bin/bash", 
      "USER=root", 
      "SUDO_USER=vagrant", 
      "SUDO_UID=1000", 
      "USERNAME=root", 
      "MAIL=/var/mail/root", 
      "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", 
      "PWD=/home/vagrant", 
      "LANG=en_US.UTF-8", 
      "SHLVL=1", 
      "HOME=/root", 
      "SUDO_COMMAND=/bin/sh -c echo BECOME-SUCCESS-nzuyqifbpqxknsapqpiflhxbmsrzdaqo; /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1505497021.78-205792997462616/command.py; rm -rf \"/home/vagrant/.ansible/tmp/ansible-tmp-1505497021.78-205792997462616/\" > /dev/null 2>&1", 
      "LOGNAME=root", 
      "SUDO_GID=1000", 
      "_=/usr/bin/env" 
     ], 
     "warnings": [ 
      "Consider using 'become', 'become_method', and 'become_user' rather than running sudo" 
     ] 
    } 
} 

Antwort

0

Jede Aufgabe in Ansible wird separat behandelt.

Auf diese Weise sind diese zwei unabhängige Aufgaben:

- name: Source the bashrc file 
    shell: source /home/hduser/.bashrc 
    register: sourcevar 
    args: 
    executable: /bin/bash 

- name: print env variables 
    shell: sudo su hduser && env 
    register: envvar 

Und die zweite Aufgabe weiß nichts über die erste.

Sie sollten source und Befehl in einem einzigen Durchlauf ausführen:

- shell: source /home/hduser/.bashrc; env 
    args: 
    executable: /bin/bash 
+0

Die env Variablen sind Stiill gedruckt werden. – user1050619

Verwandte Themen