Files
ansible-role-unix-users/tasks/create_shell_rc_file.yaml
T
volker.raschekandCopilot 279ee1929a fix(tasks): create the bashrc before sourcing a drop-in from it
The lineinfile task appends the source line to `~/.bashrc` but never declared `create`, so it aborted with "Destination
does not exist" whenever that file was missing. This hits every user configured with `create_home: false`, and it hit
every btrfs user as well, because their home is an empty subvolume and useradd therefore skips the skel rollout.

`mode` is added along with it, otherwise a newly created bashrc would inherit whatever the umask happens to be. The
existing `owner` and `group` were dead settings until now, since the file was never created by this task.

Co-authored-by: Copilot <copilot@github.com>
2026-09-09 21:39:42 +02:00

33 lines
1.1 KiB
YAML

---
- name: "Determine shell rc directory"
ansible.builtin.set_fact:
# path_join examples: https://docs.ansible.com/ansible/latest/collections/ansible/builtin/path_join_filter.html#examples
_shell_rc_file: "{{ (_unix_users_home, '.bashrc.d', shell_rc_file.file) | path_join }}"
- name: "Create shell rc directory: {{ _shell_rc_file | dirname }}"
ansible.builtin.file:
path: "{{ _shell_rc_file | dirname }}"
owner: "{{ unix_user.key }}"
group: "{{ unix_user.value.group | default('users') }}"
mode: "0755"
state: "directory"
- name: "Create shell rc file: {{ _shell_rc_file }}"
ansible.builtin.template:
src: shell_rc_file.j2
dest: "{{ _shell_rc_file }}"
owner: "{{ unix_user.key }}"
group: "{{ unix_user.value.group | default('users') }}"
mode: "0644"
- name: "Source shell rc file: {{ _shell_rc_file }}"
ansible.builtin.lineinfile:
path: "{{ _unix_users_home }}/.bashrc"
line: "source \"{{ _shell_rc_file }}\""
create: true
owner: "{{ unix_user.key }}"
group: "{{ unix_user.value.group | default('users') }}"
mode: "0644"
state: "present"