Re: [ansible-project] Which of .bashrc, .profile, .bash_profile, .bash_login or .login is used?

2016-09-22 Thread Harald Kubota
Thanks Kai.

The explanation is very much appreciated as it sheds some light into this (for 
me) unexpected behavior.

Harald

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to ansible-project+unsubscr...@googlegroups.com.
To post to this group, send email to ansible-project@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/88b28924-d8ff-4776-959a-959d9e80bb4d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [ansible-project] Which of .bashrc, .profile, .bash_profile, .bash_login or .login is used?

2016-09-22 Thread Kai Stian Olstad

On 22.09.2016 11:38, Harald Kubota wrote:
Thanks Kai for the reply. Unfortunately it does not solve the problem. 
When

using /bin/sh which is a link to /bin/dash, or when using /bin/bash, it
seems that none of the user's profile files is used.


A shell do distinguish between a login mode and a interactive mode.

When you manual log in with ssh, you get a login shell, and a dash login 
shell do read /etc/profile and .profile.


When Ansible start a shell its not a login shell, but a interactive dash 
shell do not read /etc/profile and .profile.

It read the environment ENV if it exist.

You can read more about this in "man dash" and "man bash", search for 
"Invocation".




I cannot modify /etc/pam.d/* or /etc/ssh/sshd* because everything works
just fine when using ssh by itself as the same user I use for ansible.


I didn't suggest you change any of this files.
I tried to explain that some distribution do use files in /etc/pam.d to 
inject parameters in some situations.


And that in Kubuntu this is the file /etc/environment, and since it 
based on Debian it's probably the same file for you, but I can't confirm 
it since I do not have Debian 8.5.



If it's up to me, this is a bug as I find no reason why it should 
behave

like it does when I run ansible as a normal user.


It has nothing to do with Ansible, its just how the shells work.


--
Kai Stian Olstad

--
You received this message because you are subscribed to the Google Groups "Ansible 
Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to ansible-project+unsubscr...@googlegroups.com.
To post to this group, send email to ansible-project@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/442fc180bc2082c38c1a85fb62fc46bc%40olstad.com.
For more options, visit https://groups.google.com/d/optout.


Re: [ansible-project] Which of .bashrc, .profile, .bash_profile, .bash_login or .login is used?

2016-09-22 Thread Harald Kubota
Thanks Kai for the reply. Unfortunately it does not solve the problem. When 
using /bin/sh which is a link to /bin/dash, or when using /bin/bash, it 
seems that none of the user's profile files is used.
I cannot modify /etc/pam.d/* or /etc/ssh/sshd* because everything works 
just fine when using ssh by itself as the same user I use for ansible.

If it's up to me, this is a bug as I find no reason why it should behave 
like it does when I run ansible as a normal user.

Harald

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to ansible-project+unsubscr...@googlegroups.com.
To post to this group, send email to ansible-project@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/b5e325e1-a943-4714-ad6d-c286ce369bd5%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [ansible-project] Which of .bashrc, .profile, .bash_profile, .bash_login or .login is used?

2016-09-19 Thread Kai Stian Olstad

On 19. sep. 2016 09:37, Harald Kubota wrote:

Still learning Ansible, so if this is a stupid question, let me know.
I'd like to know which (if any) of the typical shell init files are used
when executing commands via the shell module. Specifically I'd like to run
node.
This works interactively just fine:

harald@giga:~/vagrantstuff/node/ansible$ ssh node3

 Debian GNU/Linux 8.5 (jessie)   built 2016-08-28

Last login: Mon Sep 19 07:11:18 2016 from giga.lan
harald@node3:~$ node --version
v6.6.0
harald@node3:~$ echo $PATH
/home/harald/node:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
harald@node3:~$ echo $SHELL
/bin/bash
harald@node3:~$ echo $LAST
bash_profile

PATH is set to include ~/node if it exists. I put this usually into
.bashrc, but that's not working when using Ansible.
And I spend half of today to find out why.

To find out what of those files are used at all I set LAST in all of
~/.profile, ~/.login, ~/.bash_profile, ~/.bash_login and ~/.bashrc to match
the profile file name it's in.
E.g. in .bashrc at the bottom:

LAST=bashrc
export LAST

The rather simple playbook:

- hosts: nodes
  gather_facts: false
  tasks:
- name: Testing to run node
  shell: echo "SHELL=$SHELL" ; echo "PATH=$PATH" ; echo "LAST=$LAST";
node --version

however does not seem to honor any of those files:

fatal: [node3]: FAILED! => {"changed": true, "cmd": "echo \"SHELL=$SHELL\"
; echo \"PATH=$PATH\"
; echo \"LAST=$LAST\"; node --version", "delta": "0:00:00.009935", "end":
"2016-09-19 07:24:49.
008019", "failed": true, "rc": 127, "start": "2016-09-19 07:24:48.998084",
"stderr": "/bin/bash:
node: command not found", "stdout":
"SHELL=/bin/bash\nPATH=/usr/local/bin:/usr/bin:/bin:/usr/ga
mes\nLAST=", "stdout_lines": ["SHELL=/bin/bash",
"PATH=/usr/local/bin:/usr/bin:/bin:/usr/games",
"LAST="], "warnings": []}

As you can see /bin/bash is used (my default shell). But LAST is not set
and PATH is not set either which makes the "node" command  fail.


Ansible shell module is using /bin/sh by default. In Debian /bin/sh is a 
symlink to dash. Dash do read /etc/profile and $HOME/.profile, but with 
Ansible shell those files is not read at all in my experience.




Note that I run ansible-playbook as myself, so there should be no changing
of accounts.
If it's relevant: I use Ansible 2.1.1.0

What am I missing?


/etc/pam.d/sshd is set to read the environment from /etc/environment and 
changes here will be available in Ansible.


I'm using Kubuntu so I can't confirm it's working in Debian.

--
Kai Stian Olstad

--
You received this message because you are subscribed to the Google Groups "Ansible 
Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to ansible-project+unsubscr...@googlegroups.com.
To post to this group, send email to ansible-project@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/7fe6ba60-6b5f-f798-09ce-ab9009c2dac9%40olstad.com.
For more options, visit https://groups.google.com/d/optout.