If you do "ansible hostname -m setup" in recent versions, you should see
that environment variables are provided, in which case you can pull $HOME
from there.

This of course would only work for the active user.

http://docs.ansible.com/faq.html#how-do-i-access-shell-environment-variables




On Fri, Mar 21, 2014 at 6:46 PM, Grant BlahaErath <[email protected]>wrote:

> Old thread, but it popped up in my goog when I was looking for answers.
> Since I worked out two different solutions, I wanted to share them.
>
> 1)
>
> I needed to get a user account home directory and share it with a role.
>  Just using register meant I would have to use "variable.stdout"
> everywhere.  Instead I used the pre_tasks section of the playbook to
> retrieve the value and then pulled the key/value out on the role's variable
> declaration.  Here's the code I used.  I hope this helps out others.
>
>   pre_tasks:
>     - name: Get ansible_user home directory
>       shell: 'getent passwd "{{ansible_ssh_user}}" | cut -d: -f6'
>       register: ansible_home_result
>   roles:
>     - { role: boxprep_debian, ansible_home:
> '{{ansible_home_result.stdout}}', when: ansible_os_family == 'Debian' }
>     - { role: boxprep_redhat, ansible_home:
> '{{ansible_home_result.stdout}}', when: ansible_os_family == 'RedHat' }
>
> 2)
>
> Another approach that is far more elaborate but can solve anything is to
> create a python application that uses jinja2, and then process all your
> .yml files as if they were jinja2 templates.  The python application can
> solve any kind of variable instantiation challenge while leaving the .yml
> reusable for other scenarios.  Because jinja2 will only process the
> template variables it is told to, it will leave other {{variables}} for
> ansible to define. I use this approach to query an elaborate AWS cluster,
> and then preprocess the ansible scripts.
>
>
>
> On Thursday, March 14, 2013 6:19:43 PM UTC-7, Will Thames wrote:
>>
>> Let's say that I want to use a variable if it's passed to
>> ansible-playbook (via -e) and derive it otherwise
>>
>> I can use register to get the results of the derivation, but the actual
>> information I need is then typically in the stdout property.
>>
>> Is there a better way to do the following ?
>>
>> ---
>> ...
>> tasks:
>> - name: derive latest 2.5 release
>>   local_action: shell ls /var/releases/v2.5-* | tail -1
>>   register: release
>>   when_unset: $version
>>
>> - name: register version into release
>>   local_action: command echo $version
>>   register: release
>>   when_set: $version
>>
>>
>> I would prefer the second task to be something like this (rather than
>> having to store the result of echoing the property!)
>>
>> - name: store release.stdout into version
>>   local_action: variable name=version value=${release.stdout}
>>   when_unset: $version
>>
>> And then just use $version after that.
>>
>> Hope that makes sense - basically I just want to be able to set arbitrary
>> variables during a playbook run rather than just before.
>> An alternative would be if register could be given an attribute that says
>> 'only store stdout' (or stderr or any other property)
>>
>> e.g.
>> register: property=stdout release
>> or
>> register: property=rc returncode
>>
>> Will
>>
>  --
> 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 [email protected].
> To post to this group, send email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/ansible-project/ac43d9a7-b385-4312-a2ea-790e654a39bd%40googlegroups.com<https://groups.google.com/d/msgid/ansible-project/ac43d9a7-b385-4312-a2ea-790e654a39bd%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
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 [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/CAEVJ8QODgHkQJPNPMVCii73ChsF8RGaHaHajkiZDwdEC4vPN6w%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to