--- # tasks file for eget - name: "Validate eget_packages entries" ansible.builtin.assert: that: - item.repo is defined and item.repo is string and item.repo | length > 0 - item.tag is defined and item.tag is string and item.tag | length > 0 - item.to is not defined or item.to is string - item.file is not defined or item.file is string - item.asset is not defined or item.asset is string - item.assets is not defined or (item.assets is sequence and item.assets is not string) fail_msg: >- Некорректный элемент eget_packages (repo/tag — непустые строки; asset/file/to — строки; assets — список строк): {{ item }} quiet: true loop: "{{ eget_packages }}" loop_control: label: "{{ item.repo | default('?') }}" - name: "Ensure eget is installed" ansible.builtin.import_tasks: install_eget.yml - name: "Install pinned binaries with eget" ansible.builtin.command: argv: "{{ _eget_argv }}" vars: _eget_to: "{{ item.to | default(eget_packages_to) }}" _eget_assets: >- {{ item.assets | default([item.asset] if item.asset is defined else []) }} _eget_argv: >- {{ [eget_install_path, item.repo, '--upgrade-only', '--to=' ~ _eget_to, '--tag=' ~ item.tag] + (['--file=' ~ item.file] if item.file is defined else []) + (['--asset'] | product(_eget_assets) | map('join', '=') | list) }} register: eget_install changed_when: eget_no_upgrade_marker not in eget_install.stderr loop: "{{ eget_packages }}" loop_control: label: "{{ item.repo }} {{ item.tag }}"