72 lines
2.2 KiB
YAML
72 lines
2.2 KiB
YAML
---
|
|
- name: Check whether Docker is available
|
|
ansible.builtin.command:
|
|
argv:
|
|
- docker
|
|
- info
|
|
register: portainer_docker_info
|
|
changed_when: false
|
|
failed_when: false
|
|
|
|
- name: Find and update Portainer
|
|
when: portainer_docker_info.rc == 0
|
|
block:
|
|
- name: List all container IDs
|
|
ansible.builtin.command:
|
|
argv:
|
|
- docker
|
|
- container
|
|
- ls
|
|
- --all
|
|
- --quiet
|
|
register: portainer_all_containers
|
|
changed_when: false
|
|
|
|
- name: Inspect all container images
|
|
ansible.builtin.command:
|
|
argv: >-
|
|
{{ ['docker', 'container', 'inspect']
|
|
+ portainer_all_containers.stdout_lines }}
|
|
register: portainer_container_inspection
|
|
changed_when: false
|
|
when: portainer_all_containers.stdout_lines | length > 0
|
|
|
|
- name: Select installed Portainer editions
|
|
ansible.builtin.set_fact:
|
|
portainer_installed_images: >-
|
|
{{ (portainer_container_inspection.stdout | default('[]') | from_json)
|
|
| map(attribute='Config.Image')
|
|
| select('match',
|
|
'^(?:[^/]+/)?portainer/(?:portainer|portainer-(?:ce|ee))(?::|@|$)')
|
|
| unique
|
|
| list }}
|
|
|
|
- name: Update Portainer to the newest release
|
|
ansible.builtin.command:
|
|
argv:
|
|
- docker
|
|
- run
|
|
- --rm
|
|
- --pull
|
|
- always
|
|
- --volume
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
- "{{ portainer_updater_image }}"
|
|
- >-
|
|
--image={{ 'portainer/portainer-ee:' ~ portainer_target_tag
|
|
if 'portainer-ee' in item
|
|
else 'portainer/portainer-ce:' ~ portainer_target_tag }}
|
|
loop: "{{ portainer_installed_images }}"
|
|
loop_control:
|
|
label: "{{ item }}"
|
|
register: portainer_update
|
|
changed_when: true
|
|
when:
|
|
- portainer_installed_images | length > 0
|
|
- not ansible_check_mode
|
|
|
|
- name: Report when no Portainer server is installed
|
|
ansible.builtin.debug:
|
|
msg: No Portainer CE or Business Edition server container found; skipping.
|
|
when: portainer_installed_images | length == 0
|