Ini cara yang saya gunakan untuk pull image dari http://registry.gitlab.com biar semua worker swarm saya bisa dapat update image sebelum meng-update service. Sebelumnya pastikan semua server sudah mempunyai akses ke http://registry.gitlab.com

  1. Install ansible di salah satu server

  2. Buat 1 folder baru mkdir ~/ansible. Lalu buat file hosts vim hosts isi dengan

[swarm:vars]
ansible_user='admin'
ansible_python_interpreter='/usr/bin/env python3'
[swarm]
192.168.1.3
192.168.1.4
192.168.1.5
  1. Buat file lagi vim pull-image.yml isi dengan
---
- hosts: swarm
  tasks:
          - name: Pull uang-kas newest image
            shell: docker pull registry.gitlab.com/yourusername/uang-kas:master
            tags:
                - uang-kas

          - name: Pull other-app newest image
            shell: docker pull registry.gitlab.com/yourusername/other-app:master
            tags:
                - other-app

          - name: Get hostname
            shell:
              cmd: hostname
            register: server_hostname

          - name: send a message to chat in playbook
            community.general.telegram:
              token: ''
              api_args:
                chat_id: ""
                parse_mode: "markdown"  
                text: "New image registry.gitlab.com/yourusername/other-app:master pushed to {{ server_hostname.stdout }} server"
                disable_web_page_preview: true

Untuk apa tag? tag digunakan agar kita bisa menjalankan task spesifik

  1. tinggal tambahkan 1 command di pipeline ansible-playbook pull-image.yml -i hosts --tags 'uang-kas' maka semua server akan punya image yang sama (pastinya jalankan sebelum docker service update)
Berhasil euy

Berhasil euy