Apply ansible-lint

This commit is contained in:
2025-10-02 11:10:27 +02:00
parent 1bff7ad4fe
commit d44ed4165e
2 changed files with 179 additions and 178 deletions

View File

@@ -1,27 +1,28 @@
---
- name: configure system - name: configure system
hosts: localhost hosts: localhost
connection: local connection: local
become: false become: false
tasks: tasks:
- name: read machine-specific variables - name: Read machine-specific variables
include_vars: ansible.builtin.include_vars:
file: _machines/{{ ansible_hostname }}.yml file: _machines/{{ ansible_hostname }}.yml
name: machine name: machine
tags: tags:
- always - always
- set_fact: - ansible.builtin.set_fact:
distro: "{{ ansible_distribution|lower }}" distro: "{{ ansible_distribution | lower }}"
tags: tags:
- always - always
- name: check for valid distro - name: Check for valid distro
assert: ansible.builtin.assert:
that: distro in ('archlinux') that: distro in ('archlinux')
- block: - block:
- name: install ansible requirements - name: Install ansible requirements
package: ansible.builtin.package:
name: "{{ packages[distro] }}" name: "{{ packages[distro] }}"
state: present state: present
become: true become: true
@@ -30,12 +31,12 @@
archlinux: archlinux:
- python-jmespath - python-jmespath
- name: pacman - name: Pacman
tags: tags:
- pacman - pacman
block: block:
- name: enable multilib repository - name: Enable multilib repository
blockinfile: ansible.builtin.blockinfile:
path: /etc/pacman.conf path: /etc/pacman.conf
block: | block: |
[multilib] [multilib]
@@ -43,28 +44,28 @@
marker: "# {mark} ANSIBLE MANAGED multilib" marker: "# {mark} ANSIBLE MANAGED multilib"
become: true become: true
- name: enable parallel download - name: Enable parallel download
blockinfile: ansible.builtin.blockinfile:
path: /etc/pacman.conf path: /etc/pacman.conf
insertafter: '\[options\]' insertafter: "\\[options\\]"
block: | block: |
ParallelDownloads = 5 ParallelDownloads = 5
marker: "# {mark} ANSIBLE MANAGED parallel_download" marker: "# {mark} ANSIBLE MANAGED parallel_download"
become: true become: true
- name: install pacman-contrib for paccache - name: Install pacman-contrib for paccache
package: ansible.builtin.package:
name: pacman-contrib name: pacman-contrib
state: present state: present
become: true become: true
- block: - block:
- name: install pacman cache clean service - name: Install pacman cache clean service
copy: ansible.builtin.copy:
dest: /etc/systemd/system/pacman-cache-cleanup.service dest: /etc/systemd/system/pacman-cache-cleanup.service
owner: root owner: root
group: root group: root
mode: '0644' mode: "0644"
content: | content: |
[Service] [Service]
Type=oneshot Type=oneshot
@@ -72,12 +73,12 @@
RemainAfterExit=true RemainAfterExit=true
become: true become: true
- name: install pacman cache clean timer - name: Install pacman cache clean timer
copy: ansible.builtin.copy:
dest: /etc/systemd/system/pacman-cache-cleanup.timer dest: /etc/systemd/system/pacman-cache-cleanup.timer
owner: root owner: root
group: root group: root
mode: '0644' mode: "0644"
content: | content: |
[Timer] [Timer]
OnCalendar=daily OnCalendar=daily
@@ -86,14 +87,15 @@
WantedBy=multi-user.target WantedBy=multi-user.target
become: true become: true
- name: enable pacman cache clean timer - ansible.builtin.systemd:
systemd:
name: pacman-cache-cleanup.timer name: pacman-cache-cleanup.timer
enabled: true enabled: true
state: started state: started
daemon_reload: true daemon_reload: true
become: true become: true
name: Enable pacman cache clean timer
- name: dotfiles directory - name: dotfiles directory
tags: tags:
- dotfiles-directory - dotfiles-directory
@@ -122,7 +124,7 @@
path: /var/lib/dotfiles path: /var/lib/dotfiles
owner: dotfiles owner: dotfiles
group: dotfiles group: dotfiles
mode: '0775' # group needs write access! mode: "0775" # group needs write access!
become: true become: true
become_user: root become_user: root
@@ -307,7 +309,7 @@
file: file:
path: "/var/lib/makepkg/{{ item.name }}/" path: "/var/lib/makepkg/{{ item.name }}/"
state: directory state: directory
mode: '0700' mode: "0700"
owner: makepkg owner: makepkg
group: makepkg group: makepkg
become_user: makepkg become_user: makepkg
@@ -320,7 +322,7 @@
file: file:
path: "/var/lib/makepkg/{{ item.name }}/gnupg" path: "/var/lib/makepkg/{{ item.name }}/gnupg"
state: directory state: directory
mode: '0700' mode: "0700"
owner: makepkg owner: makepkg
group: makepkg group: makepkg
become_user: makepkg become_user: makepkg
@@ -491,8 +493,7 @@
become: true become: true
with_nested: with_nested:
- "{{ aur_packages }}" - "{{ aur_packages }}"
- - - build
- build
- src - src
loop_control: loop_control:
label: "{{ item[0].name }}/{{ item[1] }}" label: "{{ item[0].name }}/{{ item[1] }}"
@@ -518,7 +519,7 @@
- name: use vz4 for mkinitcpio compression - name: use vz4 for mkinitcpio compression
lineinfile: lineinfile:
path: /etc/mkinitcpio.conf path: /etc/mkinitcpio.conf
regexp: '^#?COMPRESSION=.*$' regexp: "^#?COMPRESSION=.*$"
line: 'COMPRESSION="lz4"' line: 'COMPRESSION="lz4"'
become: true become: true
notify: notify:
@@ -632,22 +633,22 @@
- name: handle lid switch - name: handle lid switch
lineinfile: lineinfile:
path: /etc/systemd/logind.conf path: /etc/systemd/logind.conf
regexp: '^HandleLidSwitch=' regexp: "^HandleLidSwitch="
line: 'HandleLidSwitch=ignore' line: "HandleLidSwitch=ignore"
become: true become: true
- name: handle power key - name: handle power key
lineinfile: lineinfile:
path: /etc/systemd/logind.conf path: /etc/systemd/logind.conf
regexp: '^HandlePowerKey=' regexp: "^HandlePowerKey="
line: 'HandlePowerKey=suspend' line: "HandlePowerKey=suspend"
become: true become: true
- name: limit journald size - name: limit journald size
lineinfile: lineinfile:
path: /etc/systemd/journald.conf path: /etc/systemd/journald.conf
regexp: '^#?SystemMaxUse=.*$' regexp: "^#?SystemMaxUse=.*$"
line: 'SystemMaxUse=50M' line: "SystemMaxUse=50M"
become: true become: true
notify: notify:
- restart journald - restart journald
@@ -758,7 +759,7 @@
- name: configure pacman to skip installing nextcloud dbus file - name: configure pacman to skip installing nextcloud dbus file
blockinfile: blockinfile:
path: /etc/pacman.conf path: /etc/pacman.conf
insertafter: '^#NoExtract' insertafter: "^#NoExtract"
block: | block: |
NoExtract = usr/share/dbus-1/services/com.nextcloudgmbh.Nextcloud.service NoExtract = usr/share/dbus-1/services/com.nextcloudgmbh.Nextcloud.service
marker: "# {mark} ANSIBLE MANAGED noextract nextcloud" marker: "# {mark} ANSIBLE MANAGED noextract nextcloud"
@@ -775,7 +776,7 @@
- name: configure pacman to skip installing gpg user units - name: configure pacman to skip installing gpg user units
blockinfile: blockinfile:
path: /etc/pacman.conf path: /etc/pacman.conf
insertafter: '^#NoExtract' insertafter: "^#NoExtract"
block: | block: |
NoExtract = usr/lib/systemd/user/gpg-agent* NoExtract = usr/lib/systemd/user/gpg-agent*
marker: "# {mark} ANSIBLE MANAGED noextract gpg-agent" marker: "# {mark} ANSIBLE MANAGED noextract gpg-agent"
@@ -791,7 +792,7 @@
dest: /etc/udev/rules.d/backlight.rules dest: /etc/udev/rules.d/backlight.rules
owner: root owner: root
group: root group: root
mode: '0644' mode: "0644"
content: | content: |
ACTION=="add", SUBSYSTEM=="backlight", RUN+="/bin/chgrp video $sys$devpath/brightness", RUN+="/bin/chmod g+w $sys$devpath/brightness" ACTION=="add", SUBSYSTEM=="backlight", RUN+="/bin/chgrp video $sys$devpath/brightness", RUN+="/bin/chmod g+w $sys$devpath/brightness"
become: true become: true
@@ -804,7 +805,7 @@
tags: tags:
- user - user
with_items: "{{ users }}" with_items: "{{ users }}"
no_log: True # less spam no_log: true # less spam
loop_control: loop_control:
loop_var: user loop_var: user
tags: tags:

178
user.yml
View File

@@ -1,7 +1,8 @@
- name: base user configuration ---
- name: Base user configuration
tags: [user:base] tags: [user:base]
block: block:
- set_fact: - ansible.builtin.set_fact:
user_groups: user_groups:
- libvirt - libvirt
- wheel - wheel
@@ -13,15 +14,15 @@
- kvm - kvm
- video - video
- name: create user group - name: Create user group
group: ansible.builtin.group:
name: "{{ user.name }}" name: "{{ user.name }}"
state: present state: present
become: true become: true
become_user: root become_user: root
- name: create user - name: Create user
user: ansible.builtin.user:
name: "{{ user.name }}" name: "{{ user.name }}"
state: present state: present
home: "/home/{{ user.name }}" home: "/home/{{ user.name }}"
@@ -32,8 +33,8 @@
become: true become: true
become_user: root become_user: root
- name: create systemd directory - name: Create systemd directory
file: ansible.builtin.file:
state: directory state: directory
path: "{{ item }}" path: "{{ item }}"
owner: "{{ user.name }}" owner: "{{ user.name }}"
@@ -43,22 +44,22 @@
- "/home/{{ user.name }}/.config/systemd/" - "/home/{{ user.name }}/.config/systemd/"
- "/home/{{ user.name }}/.config/systemd/user/" - "/home/{{ user.name }}/.config/systemd/user/"
- name: create directory for getty autologin - name: Create directory for getty autologin
file: ansible.builtin.file:
state: directory state: directory
path: /etc/systemd/system/getty@tty{{ user.vt }}.service.d path: /etc/systemd/system/getty@tty{{ user.vt }}.service.d
owner: root owner: root
group: root group: root
mode: '0755' mode: "0755"
become: true become: true
become_user: root become_user: root
- name: enable getty autologin - name: Enable getty autologin
copy: ansible.builtin.copy:
dest: /etc/systemd/system/getty@tty{{ user.vt }}.service.d/override.conf dest: /etc/systemd/system/getty@tty{{ user.vt }}.service.d/override.conf
owner: root owner: root
group: root group: root
mode: '0644' mode: "0644"
content: | content: |
[Service] [Service]
ExecStart= ExecStart=
@@ -66,16 +67,16 @@
become: true become: true
become_user: root become_user: root
- name: configure dotfiles - name: Configure dotfiles
tags: tags:
- user:dotfiles - user:dotfiles
block: block:
- name: load dotfile list - name: Load dotfile list
include_vars: ansible.builtin.include_vars:
file: dotfiles.yml file: dotfiles.yml
- name: get state of empty directories - name: Get state of empty directories
stat: ansible.builtin.stat:
path: ~/{{ item.name }} path: ~/{{ item.name }}
register: empty_dir_stat register: empty_dir_stat
with_items: "{{ empty_directories }}" with_items: "{{ empty_directories }}"
@@ -83,8 +84,8 @@
loop_control: loop_control:
label: "{{ item.name }}" label: "{{ item.name }}"
- name: remove symlinks - name: Remove symlinks
file: ansible.builtin.file:
path: "{{ item.stat.path }}" path: "{{ item.stat.path }}"
state: absent state: absent
when: item.stat.exists and item.stat.islnk when: item.stat.exists and item.stat.islnk
@@ -92,8 +93,8 @@
loop_control: loop_control:
label: "{{ item.item.name }}" label: "{{ item.item.name }}"
- name: create empty directories for dotfiles - name: Create empty directories for dotfiles
file: ansible.builtin.file:
state: directory state: directory
path: ~/{{ item.name }} path: ~/{{ item.name }}
mode: "{{ item.mode | default('0755') }}" mode: "{{ item.mode | default('0755') }}"
@@ -101,8 +102,8 @@
loop_control: loop_control:
label: "{{ item.name }}" label: "{{ item.name }}"
- name: link this folder to ~/.dotfiles - name: Link this folder to ~/.dotfiles
file: ansible.builtin.file:
state: link state: link
force: true force: true
follow: false follow: false
@@ -113,8 +114,8 @@
become: true become: true
become_user: root become_user: root
- name: get state of copy targets - name: Get state of copy targets
stat: ansible.builtin.stat:
path: ~/{{ item.to }} path: ~/{{ item.to }}
register: copy_stat register: copy_stat
when: not item.template|default(false) when: not item.template|default(false)
@@ -123,8 +124,8 @@
loop_control: loop_control:
label: "{{ item.to }}" label: "{{ item.to }}"
- name: remove invalid copy target (symlinks) - name: Remove invalid copy target (symlinks)
file: ansible.builtin.file:
path: "{{ item.stat.path }}" path: "{{ item.stat.path }}"
state: absent state: absent
when: when:
@@ -135,10 +136,10 @@
loop_control: loop_control:
label: "{{ item.item.from }}" label: "{{ item.item.from }}"
- name: make sure target directories exist - name: Make sure target directories exist
file: ansible.builtin.file:
state: directory state: directory
path: "{{ (['/home', user.name, item.to]|join('/')) | dirname }}" path: "{{ (['/home', user.name, item.to] | join('/')) | dirname }}"
owner: "{{ user.name }}" owner: "{{ user.name }}"
group: "{{ user.name }}" group: "{{ user.name }}"
with_items: "{{ dotfiles }}" with_items: "{{ dotfiles }}"
@@ -147,8 +148,8 @@
loop_control: loop_control:
label: "{{ item.to }}" label: "{{ item.to }}"
- name: copy dotfiles - name: Copy dotfiles
copy: ansible.builtin.copy:
dest: "/home/{{ user.name }}/{{ item.to }}" dest: "/home/{{ user.name }}/{{ item.to }}"
src: /var/lib/dotfiles/{{ item.from }} src: /var/lib/dotfiles/{{ item.from }}
owner: "{{ user.name }}" owner: "{{ user.name }}"
@@ -160,8 +161,8 @@
loop_control: loop_control:
label: "{{ item.to }}" label: "{{ item.to }}"
- name: copy directories - name: Copy directories
synchronize: ansible.posix.synchronize:
dest: "/home/{{ user.name }}/{{ item.to }}/" dest: "/home/{{ user.name }}/{{ item.to }}/"
src: /var/lib/dotfiles/{{ item.from }}/ src: /var/lib/dotfiles/{{ item.from }}/
archive: false archive: false
@@ -180,8 +181,8 @@
loop_control: loop_control:
label: "{{ item.to }}" label: "{{ item.to }}"
- name: apply directory permissions - name: Apply directory permissions
file: ansible.builtin.file:
dest: "/home/{{ user.name }}/{{ item.to }}/" dest: "/home/{{ user.name }}/{{ item.to }}/"
owner: "{{ user.name }}" owner: "{{ user.name }}"
group: "{{ user.name }}" group: "{{ user.name }}"
@@ -193,8 +194,8 @@
loop_control: loop_control:
label: "{{ item.to }}" label: "{{ item.to }}"
- name: get state of template targets - name: Get state of template targets
stat: ansible.builtin.stat:
path: ~/{{ item.to }} path: ~/{{ item.to }}
register: template_stat register: template_stat
when: item.template|default(false) when: item.template|default(false)
@@ -203,8 +204,8 @@
loop_control: loop_control:
label: "{{ item.to }}" label: "{{ item.to }}"
- name: remove invalid template target (directory or symlink) - name: Remove invalid template target (directory or symlink)
file: ansible.builtin.file:
path: "{{ item.stat.path }}" path: "{{ item.stat.path }}"
state: absent state: absent
when: when:
@@ -215,8 +216,8 @@
loop_control: loop_control:
label: "{{ item.item.to }}" label: "{{ item.item.to }}"
- name: deploy dotfiles templates - name: Deploy dotfiles templates
template: ansible.builtin.template:
src: /var/lib/dotfiles/{{ item.from }}.j2 src: /var/lib/dotfiles/{{ item.from }}.j2
dest: "/home/{{ user.name }}/{{ item.to }}" dest: "/home/{{ user.name }}/{{ item.to }}"
owner: "{{ user.name }}" owner: "{{ user.name }}"
@@ -229,35 +230,35 @@
loop_control: loop_control:
label: "{{ item.to }}" label: "{{ item.to }}"
- name: remove dotfiles - name: Remove dotfiles
file: ansible.builtin.file:
state: absent state: absent
path: "/home/{{ user.name }}/{{ item }}" path: "/home/{{ user.name }}/{{ item }}"
loop: "{{ dotfiles_remove }}" loop: "{{ dotfiles_remove }}"
- name: create directories - name: Create directories
file: ansible.builtin.file:
state: directory state: directory
path: "{{ item }}" path: "{{ item }}"
with_items: with_items:
- ~/tmp - ~/tmp
- name: stat ~/bin - name: Stat ~/bin
stat: ansible.builtin.stat:
path: "/home/{{ user.name }}/bin" path: "/home/{{ user.name }}/bin"
register: bin_stat register: bin_stat
check_mode: false check_mode: false
- name: remove ~/bin if not a link - name: Remove ~/bin if not a link
file: ansible.builtin.file:
state: absent state: absent
path: "/home/{{ user.name }}/bin" path: "/home/{{ user.name }}/bin"
when: when:
- bin_stat.stat.exists - bin_stat.stat.exists
- not bin_stat.stat.islnk - not bin_stat.stat.islnk
- name: link bin directory - name: Link bin directory
file: ansible.builtin.file:
state: link state: link
force: true force: true
follow: false follow: false
@@ -266,32 +267,32 @@
owner: "{{ user.name }}" owner: "{{ user.name }}"
group: "{{ user.name }}" group: "{{ user.name }}"
- name: vim - name: Vim
tags: tags:
- user:vim - user:vim
block: block:
- name: install vim plugins - name: Install vim plugins
command: nvim --headless +PlugInstall +qall ansible.builtin.command: nvim --headless +PlugInstall +qall
register: vim_plugin_install register: vim_plugin_install
changed_when: vim_plugin_install.stderr != "" changed_when: vim_plugin_install.stderr != ""
- name: update vim plugins - name: Update vim plugins
command: nvim --headless +PlugUpdate +qall ansible.builtin.command: nvim --headless +PlugUpdate +qall
register: vim_plugin_update register: vim_plugin_update
changed_when: vim_plugin_update.stderr != "" changed_when: vim_plugin_update.stderr != ""
- name: firefox - name: Firefox
tags: tags:
- user:firefox - user:firefox
block: block:
- name: create firefox directories - name: Create firefox directories
firefox_profile: firefox_profile:
name: "{{ item.key }}" name: "{{ item.key }}"
loop: "{{ user.firefox_profiles | dict2items }}" loop: "{{ user.firefox_profiles | dict2items }}"
check_mode: false check_mode: false
register: firefox_profile_names register: firefox_profile_names
- set_fact: - ansible.builtin.set_fact:
firefox_preferences: firefox_preferences:
browser.aboutConfig.showWarning: false browser.aboutConfig.showWarning: false
extensions.pocket.enabled: false extensions.pocket.enabled: false
@@ -341,25 +342,25 @@
# remove ad tracking garbage # remove ad tracking garbage
dom.private-attribution.submission.enabled: false dom.private-attribution.submission.enabled: false
- include_role: - ansible.builtin.include_role:
name: firefox name: firefox
vars: vars:
firefox_profiles: "{{ {item.key: item.value} | combine({item.key: {'preferences': firefox_preferences}}, recursive=True) }}" firefox_profiles: "{{ {item.key: item.value} | combine({item.key: {'preferences': firefox_preferences}}, recursive=True) }}"
loop: "{{ user.firefox_profiles | dict2items }}" loop: "{{ user.firefox_profiles | dict2items }}"
when: not ansible_check_mode when: not ansible_check_mode
- name: firefox - create chrome directory - name: Firefox - create chrome directory
file: ansible.builtin.file:
path: "{{ item.profile_path }}/chrome/" path: "{{ item.profile_path }}/chrome/"
state: directory state: directory
mode: '0755' mode: "0755"
with_items: "{{ firefox_profile_names.results }}" with_items: "{{ firefox_profile_names.results }}"
when: not ansible_check_mode when: not ansible_check_mode
loop_control: loop_control:
label: "{{ item.profile_path }}" label: "{{ item.profile_path }}"
- name: firefox - configure firefox custom css - name: Firefox - configure firefox custom css
copy: ansible.builtin.copy:
dest: "{{ item.profile_path }}/chrome/userChrome.css" dest: "{{ item.profile_path }}/chrome/userChrome.css"
content: | content: |
#TabsToolbar { #TabsToolbar {
@@ -378,12 +379,12 @@
loop_control: loop_control:
label: "{{ item.profile_path }}" label: "{{ item.profile_path }}"
- name: handle user units - name: Handle user units
tags: tags:
- user:units - user:units
block: block:
- name: link user service files - name: Link user service files
file: ansible.builtin.file:
state: link state: link
force: true force: true
follow: false follow: false
@@ -393,12 +394,12 @@
group: "{{ user.name }}" group: "{{ user.name }}"
with_fileglob: /var/lib/dotfiles/services/* with_fileglob: /var/lib/dotfiles/services/*
- name: handle autostart units - name: Handle autostart units
tags: tags:
- user:autostart - user:autostart
block: block:
- name: create systemd user directory - name: Create systemd user directory
file: ansible.builtin.file:
state: directory state: directory
path: ~/{{ item }} path: ~/{{ item }}
loop: loop:
@@ -406,8 +407,8 @@
- .config/systemd/ - .config/systemd/
- .config/systemd/user/ - .config/systemd/user/
- name: link autostart service files - name: Link autostart service files
file: ansible.builtin.file:
state: link state: link
force: true force: true
follow: false follow: false
@@ -417,21 +418,21 @@
group: "{{ user.name }}" group: "{{ user.name }}"
with_fileglob: /var/lib/dotfiles/autostart/services/* with_fileglob: /var/lib/dotfiles/autostart/services/*
- name: get state of autostart.target - name: Get state of autostart.target
stat: ansible.builtin.stat:
path: "/home/{{ user.name }}/.config/systemd/user/autostart.target" path: "/home/{{ user.name }}/.config/systemd/user/autostart.target"
register: autostart_target_stat register: autostart_target_stat
- name: remove invalid autostart.target - name: Remove invalid autostart.target
file: ansible.builtin.file:
path: "/home/{{ user.name }}/.config/systemd/user/autostart.target" path: "/home/{{ user.name }}/.config/systemd/user/autostart.target"
state: absent state: absent
when: when:
- autostart_target_stat.stat.exists - autostart_target_stat.stat.exists
- not autostart_target_stat.stat.isreg - not autostart_target_stat.stat.isreg
- name: deploy autostart.target - name: Deploy autostart.target
template: ansible.builtin.template:
src: ./autostart/autostart.target.j2 src: ./autostart/autostart.target.j2
dest: "/home/{{ user.name }}/.config/systemd/user/autostart.target" dest: "/home/{{ user.name }}/.config/systemd/user/autostart.target"
owner: "{{ user.name }}" owner: "{{ user.name }}"
@@ -439,20 +440,19 @@
force: true force: true
follow: false follow: false
- name: gpg - name: Gpg
tags: tags:
- user:gpg - user:gpg
when: user.gpg_key is defined
block: block:
- name: import gpg key - name: Import gpg key
command: gpg --import ./gpgkeys/{{ user.gpg_key.email }}.gpg.asc ansible.builtin.command: gpg --import ./gpgkeys/{{ user.gpg_key.email }}.gpg.asc
register: gpg_import_output register: gpg_import_output
changed_when: not ("unchanged" in gpg_import_output.stderr) changed_when: not ("unchanged" in gpg_import_output.stderr)
- name: trust gpg key - name: Trust gpg key
shell: "gpg --import-ownertrust <<< {{ user.gpg_key.fingerprint }}:6" ansible.builtin.shell: "gpg --import-ownertrust <<< {{ user.gpg_key.fingerprint }}:6"
args: args:
executable: /bin/bash # required for <<< executable: /bin/bash # required for <<<
register: gpg_trust_output register: gpg_trust_output
changed_when: gpg_trust_output.stderr_lines|length > 0 changed_when: gpg_trust_output.stderr_lines|length > 0
when: user.gpg_key is defined