- In 'roles/tmux/tasks/main.yml' wurde der Task zur Erstellung der
'user_home_dirs'-Liste durch eine robustere Methode ersetzt.
Diese verwendet Jinja2-Filter (, , ),
um Benutzer anhand ihrer Shell, des Benutzernamens ('root' ausschließen),
der Definition des Home-Verzeichnisses sowie des Ausschlusses von
leeren oder nur aus '/' bestehenden Home-Verzeichnissen zu filtern.
- Die redundanten 'when'-Bedingungen im 'Tmux config block' wurden entfernt,
da die Filterung nun zentral bei der Erstellung der Liste erfolgt.
Dies sollte das Problem beheben, dass gültige Benutzer übersprungen werden
und gleichzeitig die Robustheit gegen ungültige Home-Verzeichnisse erhöhen.
48 lines
1.4 KiB
YAML
48 lines
1.4 KiB
YAML
---
|
|
- name: Install tmux
|
|
package:
|
|
name: "{{ item }}"
|
|
state: present
|
|
loop:
|
|
- "tmux"
|
|
- "git"
|
|
|
|
- name: Get all users from /etc/passwd
|
|
ansible.builtin.getent:
|
|
database: passwd
|
|
register: all_users
|
|
|
|
- name: Create a list of home directories for bash, zsh and fish users
|
|
set_fact:
|
|
user_home_dirs: >-
|
|
{{ all_users.ansible_facts.getent_passwd.values()
|
|
| selectattr(5, 'in', ['/bin/bash', '/bin/zsh', '/usr/bin/bash', '/usr/bin/fish'])
|
|
| rejectattr(0, 'eq', 'root')
|
|
| selectattr(4, 'defined')
|
|
| rejectattr(4, 'eq', '')
|
|
| rejectattr(4, 'eq', '/')
|
|
| map(attribute=4)
|
|
| list }}
|
|
|
|
- name: Display the list of collected home directories
|
|
ansible.builtin.debug:
|
|
var: user_home_dirs
|
|
|
|
- name: Tmux config block
|
|
block:
|
|
- name: Tmux config Play
|
|
include_tasks: tmux_config.yml
|
|
loop: "{{ user_home_dirs }}"
|
|
|
|
# ========================================================================
|
|
# EXAMPLE: Here is how you can reuse the 'user_home_dirs' list
|
|
# This example task iterates through the list of home directories
|
|
# and creates a file named 'test.txt' in each directory.
|
|
# ========================================================================
|
|
# - name: Example - Create a file in each home directory
|
|
# ansible.builtin.file:
|
|
# path: "{{ item }}/test.txt"
|
|
# state: touch
|
|
# mode: '0644'
|
|
# loop: "{{ user_home_dirs }}"
|