#SPDX-License-Identifier: MIT-0 --- # tasks file for roles/init-vps - name: Checking whether administrative login used when: ansible_facts["user_id"] not in (admins | map(attribute="username") | list) ansible.builtin.fail: msg: Must use administrative user for subsequent tasks - name: Creating prerequisite directory tree ansible.builtin.file: path: "{{ ansible_facts['user_dir'] }}/.local/bin" recurse: true state: directory - name: Creating prerequisite directory tree ansible.builtin.file: path: "{{ ansible_facts['user_dir'] }}/downloads/archives/released" recurse: true state: directory - name: Installing Linux software when: ansible_facts["system"] == "Linux" block: - name: Installing software using Debian package manager when: ansible_facts["os_family"] == "Debian" become: true block: - name: Registering a package signing key when: item.key is defined and item.key_path is defined ansible.builtin.get_url: url: "{{ item.key }}" dest: "{{ item.key_path | default('/etc/apt/keyrings/') }}" owner: root group: root mode: "644" force: true backup: true loop: "{{ pkgs.mngr.core + pkgs.mngr.userspace | rejectattr('key', 'search', '\\.deb$') }}" - name: Installing a package signing key when: item.key is defined ansible.builtin.apt: deb: "{{ item.key }}" state: present loop: "{{ pkgs.mngr.core + pkgs.mngr.userspace | selectattr('key', 'search', '\\.deb$') }}" - name: Registering a package source when: item.src_entry is defined and item.src_path is defined ansible.builtin.copy: content: "{{ item.src_entry }}" dest: "{{ item.src_path }}" owner: root group: root mode: "644" force: true backup: true loop: "{{ pkgs.mngr.core + pkgs.mngr.userspace }}" - name: Installing a local package in managed node when: item.uri is defined ansible.builtin.apt: deb: "{{ item.uri }}" update_cache: true state: present notify: "{{ item.name }}" loop: "{{ pkgs.mngr.core + pkgs.mngr.userspace | selectattr('uri', 'search', '\\.deb$') }}" - name: Installing a package when: item.name is defined and item.uri is undefined ansible.builtin.package: name: "{{ item.name }}" update_cache: true state: latest notify: "{{ item.name }}" # @TODO create corresponding roles/init-vps handlers loop: "{{ pkgs.mngr.core + pkgs.mngr.userspace | rejectattr('uri', 'search', '\\.deb$') }}" tags: - get_mngr_pkgs - name: Installing software by executing installation shell scripts when: item.src is defined block: - name: Acquiring installation shell script ansible.builtin.get_url: url: "{{ item.src }}" dest: "{{ ansible_facts['user_dir'] }}/.local/bin/{{ item.name }}-install.sh" force: true backup: true mode: "744" loop: "{{ pkgs.script.core + pkgs.script.userspace }}" register: install_scripts - name: Executing a shell-scripted installation process become: true ansible.builtin.shell: cmd: "{{ item.dest }}" notify: "{{ (pkgs.script.core + pkgs.script.userspace)[idx].name }}" loop: "{{ install_scripts.results }}" loop_control: index_var: idx tags: - get_script_pkgs # @TODO complete below block task - name: Installing software by building it from source archives block: - name: Acquiring software source archive ansible.builtin.get_url: url: "{{ item.src }}" dest: "{{ ansible_facts['user_dir'] }}/downloads/archives/" force: true backup: true mode: "644" loop: "{{ pkgs.archive.core + pkgs.archive.userspace }}" register: archived_builds - name: Unarchiving software build archive ansible.builtin.unarchive: src: "{{ item.dest }}" remote_src: true dest: "{{ ansible_facts['user_dir'] }}/downloads/archives/released/{{ (pkgs.archive.core + pkgs.archive.userspace)[idx].name }}/" notify: "{{ (pkgs.archive.core + pkgs.archive.userspace)[idx].name }}" loop: "{{ archived_builds.results }}" loop_control: index_var: idx tags: - get_archive_pkgs - name: Installing software from source git repositories block: - name: Clone git bare repository ansible.builtin.git: repo: "{{ item.src }}" dest: "{{ ansible_facts['user_dir'] }}/repos/.foreign/{{ item.name }}" version: "{{ item.branch }}" clone: true single_branch: true notify: "{{ item.name }}" loop: "{{ pkgs.git_repos.core + pkgs.git_repos.userspace }}" register: installation_repos tags: - get_git_pkgs