--- # Bootstrap самого eget: скачать релиз с GitHub, распаковать, поставить бинарник. # Идемпотентность — по версии уже установленного eget; чужой eget нельзя обновить # им самим (chicken-and-egg), поэтому качаем архив релиза напрямую. - name: "Check installed eget version" ansible.builtin.command: cmd: "{{ eget_install_path }} --version" register: eget_version_check changed_when: false failed_when: false check_mode: false # read-only проба: нужна и в --check, чтобы gate ниже был честным - name: "Install eget from GitHub release" when: >- eget_version_check.rc != 0 or eget_version not in eget_version_check.stdout block: - name: "Download eget release archive" ansible.builtin.get_url: url: "{{ eget_download_url }}" dest: "{{ eget_download_dest }}" checksum: "{{ eget_download_checksum or omit }}" mode: "0600" - name: "Extract eget release archive" ansible.builtin.unarchive: src: "{{ eget_download_dest }}" dest: "/tmp" remote_src: true - name: "Install eget binary" ansible.builtin.copy: src: '{{ (eget_unarchive_dest, "eget") | path_join }}' dest: "{{ eget_install_path }}" mode: "0755" remote_src: true always: - name: "Remove eget bootstrap artifacts" ansible.builtin.file: path: "{{ item }}" state: absent loop: - "{{ eget_download_dest }}" - "{{ eget_unarchive_dest }}"