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>
33 lines
1.1 KiB
YAML
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"
|