# Ansible On Read-Only Systems

**URL:** <https://forum.ansible.com/t/ansible-on-read-only-systems/24614>\
**Category:** Ansible Project\
**Tags:** rhel\
**Created:** [May 31, 2017, 6:03pm UTC](https://forum.ansible.com/t/ansible-on-read-only-systems/24614 "2017-05-31T18:03:55Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Ryan1](https://avatars.discourse-cdn.com/v4/letter/r/3da27b/32.png) [@Ryan1](https://forum.ansible.com/u/Ryan1)\
**Post date:** [May 31, 2017, 6:03pm UTC](https://forum.ansible.com/t/ansible-on-read-only-systems/24614/1 "2017-05-31T18:03:55Z")

</div>

The host that I am executing the Ansible commands from is a standard RHEL 7.2 install. The remote nodes however are booting a read-only root file system (RHEL 7.3), with a layer of writable directories that I can specify, and are copied into tmpfs. I added /root/.ansible to the writable directories, which has allowed me to execute ad-hoc Ansible commands, and some playbooks, but some playbooks are failing, such as when I try to use async with poll value other than 0. For example:

---

<div class="post-metadata">

**Author:** ![Brian\_Coca](https://avatars.discourse-cdn.com/v4/letter/b/6de8d8/32.png) [@Brian\_Coca](https://forum.ansible.com/u/Brian_Coca)\
**Post date:** [May 31, 2017, 10:55pm UTC](https://forum.ansible.com/t/ansible-on-read-only-systems/24614/2 "2017-05-31T22:55:32Z")

</div>

try enabling pipelining, which avoids most writes.

---

<div class="post-metadata">

**Author:** ![Ryan1](https://avatars.discourse-cdn.com/v4/letter/r/3da27b/32.png) [@Ryan1](https://forum.ansible.com/u/Ryan1)\
**Post date:** [June 1, 2017, 12:54am UTC](https://forum.ansible.com/t/ansible-on-read-only-systems/24614/3 "2017-06-01T00:54:10Z")

</div>

I found that if i enabled read-write to ~/.ansible\_async, I was able to execute a playbook with async and a non-zero value for poll. It would be very helpful to know if there are any additional directories that need write access.

I can also look into enabling pipelining, but if it avoids most writes, then I will still need to know which directories will need to be writable in that case as well.

---

<div class="post-metadata">

**Author:** ![Brian\_Coca](https://avatars.discourse-cdn.com/v4/letter/b/6de8d8/32.png) [@Brian\_Coca](https://forum.ansible.com/u/Brian_Coca)\
**Post date:** [June 1, 2017, 2:53am UTC](https://forum.ansible.com/t/ansible-on-read-only-systems/24614/4 "2017-06-01T02:53:54Z")

</div>

Ansible uses tmp directories, different ones depending on  
circumstance, ~/.ansible\_async is for when tasks are async, normally  
it is an ~/.ansible/tmp (you can change in config) in the user's dir,  
but in some cases it falls back to /tmp or /var/tmp.

Pipelining eliminates the file copies or need for tmp dir for the  
modules themselves, but if doing actions like copy, assemble or  
template, a dir is still needed to transfer the files to the target,  
but uses same temps as modules themselves normally do.
