/opt/db/data/postgres/data
delta: ‘0:00:00.009346’
end: ‘2021-10-27 11:54:25.210944’
msg: non-zero return code
rc: 1
start: ‘2021-10-27 11:54:25.201598’
stderr: |-
initdb: error: cannot be run as root
Please log in (using, e.g., “su”) as the (unprivileged) user that will
own the server process.
stderr_lines:
stdout: ‘’
stdout_lines:
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
the TASK however has a particular become_user: postgres specified. Furthermore Selinux is set to @permissive in an erlier TASK.
Manually running /opt/db/postgres/postgresql/bin/initdb -D /opt/db/data/postgres/data/ on the target as user postgres works, so I can not make much sense of this. It’s kind of obvious the become process does not work, but I can’t figure out why. Plaid a bit with indentation, but did not find any solution that works
We can’t access the playbook here - https://pastebin.com/edit/9Uvjdupe at least I can’t. pastebin redirects me to the login page. I can however access default_postgres.yml file
I’m going to assume you are using sudo as become_method. I am also going to assume selinux is not part of the issue here, nor standard unix permissions or posix acls.
When you run the task manually: /opt/db/postgres/postgresql/bin/initdb -D /opt/db/data/postgres/data/ on the target as user postgres … say you login as root to the machine then you run su - postgres, right? At this point you are running commands as postgres.
I’m wondering if you can mimic that very same behaviour adding become_flags to the equation:
I figured out that apparently using ansible_become_user: root in the defaults.yml is meesing things up
Changing
ansible_become_user: root
to
ansible_root_user: root
in the defaults file and the playbok makes this issue going away. Apparently the term ansible_become_user is more then just a string and overwrites all other become_user occurences.
If I remember correctly it may be even workable to skip the become_user: xyz (and just say become: yes) in the playbook if I do not want to become anyone else then root and likewise share me this sort of trouble
I figured out that apparently using ansible_become_user: root in the defaults.yml is meesing things up
Changing
ansible_become_user: root
to
ansible_root_user: root
in the defaults file and the playbok makes this issue going away. Apparently the term ansible_become_user is more then just a string and overwrites all other become_user occurences.
I think there is actually no need to set these variables at all as "root" is the default.