diff --git a/ansible/base_install.yml b/ansible/base_install.yml index 31ef5b0..74c0de7 100644 --- a/ansible/base_install.yml +++ b/ansible/base_install.yml @@ -64,39 +64,50 @@ register: result changed_when: result.rc == 0 - - name: Create temporary AUR builder user - ansible.builtin.user: - name: "{{ aur_builder }}" - create_home: true - shell: /bin/bash + - name: Check which AUR packages are already installed + ansible.builtin.command: > + pacman -Q {{ aur_packages | join(' ') }} + register: aur_check + changed_when: false + failed_when: false - - name: Allow temporary builder to use pacman without password - ansible.builtin.copy: - dest: "/etc/sudoers.d/{{ aur_builder }}-pacman" - content: "{{ aur_builder }} ALL=(ALL) NOPASSWD: /usr/bin/pacman\n" - owner: root - group: root - mode: "0440" - validate: "visudo -cf %s" + - name: Determine if AUR install is needed + ansible.builtin.set_fact: + aur_install_needed: "{{ aur_check.rc != 0 }}" - - name: Install AUR packages - become: true - become_user: "{{ aur_builder }}" - kewlfft.aur.aur: - name: "{{ aur_packages }}" - state: present - update_cache: true + - block: + - name: Create temporary AUR builder user + ansible.builtin.user: + name: "{{ aur_builder }}" + create_home: true + shell: /bin/bash - - name: Remove sudoers entry for temporary builder - ansible.builtin.file: - path: "/etc/sudoers.d/{{ aur_builder }}-pacman" - state: absent + - name: Allow temporary builder to use pacman without password + ansible.builtin.copy: + dest: "/etc/sudoers.d/{{ aur_builder }}-pacman" + content: "{{ aur_builder }} ALL=(root) NOPASSWD: /usr/bin/pacman\n" + mode: "0440" + validate: "visudo -cf %s" - - name: Remove temporary AUR builder user and home directory - ansible.builtin.user: - name: "{{ aur_builder }}" - state: absent - remove: true + - name: Install AUR packages + become: true + become_user: "{{ aur_builder }}" + kewlfft.aur.aur: + name: "{{ aur_packages }}" + state: present + + always: + - name: Cleanup sudoers + ansible.builtin.file: + path: "/etc/sudoers.d/{{ aur_builder }}-pacman" + state: absent + + - name: Cleanup builder user + ansible.builtin.user: + name: "{{ aur_builder }}" + state: absent + remove: true + when: aur_install_needed ## Post install config - name: Ensure groups exist