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
-
Install ansible di salah satu server
-
Buat 1 folder baru
mkdir ~/ansible
. Lalu buat file hostsvim 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
- 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
- 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 sebelumdocker service update
)

Berhasil euy