Untuk memudahkan update atau upgrade paket (package) software yang ada Linux, kita bisa menggunakan ansible-playbook. Untuk kebutuhan sekarang akan kita gunakan ansible untuk update cache paket software dan mengupdate software-software yang terinstall ke versi terbaru di repository

Tanpa ansible, kita bisa menjalankan command

# Debian
sudo apt update && sudo apt upgrade -y
# RedHat
sudo yum upgrade -y

Agar cara ini bisa berjalan, pastikan user yang anda gunakan memiliki akses ke server tersebut, dan bisa menjalankan sudo, caranya bisa dilihat disini

Distro Linux yang digunakan bisa berbagai macam seperti Ubuntu, RHEL, Fedora, Debian, Alma linux, Rocky Linux, Oracle Linux, dan berbagai varian lainnya. Disini akan kita contoh untuk menggunakan Debian (Ubuntu, Mint)dan RedHat (Fedora, Alma Linux, Rocky Linux)

Buat file baru dengan nama update-os.yaml yang berisi

- hosts: all
  become: yes
  gather_facts: yes
  tasks:
    - name: Update apt repo and cache debian based
      apt:
        update_cache: yes
        autoclean: yes
        cache_valid_time: 36000
      when:
        - ansible_facts['os_family'] == "Debian"
    - name: Update YUM repository and caches
      ansible.builtin.dnf:
        update_cache: yes
      when:
        - ansible_facts['os_family'] == "RedHat"
    - name: Upgrade all packages on servers debian based
      apt:
        upgrade: dist
        install_recommends: no
      when:
        - ansible_facts['os_family'] == "Debian"
    - name: Upgrade all packages on RedHat based
      ansible.builtin.dnf:
        name: "*"
        state: latest
      when:
        - ansible_facts['os_family'] == "RedHat"

Tergantung dari kebutuhan anda untuk kasus saya ini cukup menggunakan ansible_facts['os_family'] (turunan distro), bila anda menargetkan spesifik ke distro, gunakan ansible_facts['distribution'], informasi ini diambil bila gather_facts: yes, bila menggunakan gather_facts: no, maka informasi ini akan null.

Buat file baru daftar server yang anda kelola, sebagai contoh server-linux

[cloud]
oracle.sg.prod.jaranguda.com
alma.sg.prod.jaranguda.com
rocky.sg.prod.jaranguda.com
debian.uk.prod.jaranguda.com
ubuntu.id.prod.jaranguda.com
 
[labs]
mints.id.labs.jaranguda.com
mints.sg.labs.jaranguda.com

Jalankan ansible-playbook dengan

ansible-playbook -i server-linux update-os.yaml

full output dari perintah diatas

PLAY [all] ********************************************************************************************************************************************************************************************************
 
TASK [Gathering Facts] ********************************************************************************************************************************************************************************************
ok: [oracle.sg.prod.jaranguda.com]
ok: [alma.sg.prod.jaranguda.com]
ok: [rocky.sg.prod.jaranguda.com]
ok: [debian.uk.prod.jaranguda.com]
ok: [ubuntu.id.prod.jaranguda.com]
ok: [mints.id.labs.jaranguda.com]
ok: [mints.sg.labs.jaranguda.com]
 
TASK [Update apt repo and cache debian based] *********************************************************************************************************************************************************************
skipping: [oracle.sg.prod.jaranguda.com]
skipping: [alma.sg.prod.jaranguda.com]
skipping: [rocky.sg.prod.jaranguda.com]
ok: [debian.uk.prod.jaranguda.com]
ok: [ubuntu.id.prod.jaranguda.com]
ok: [mints.id.labs.jaranguda.com]
ok: [mints.sg.labs.jaranguda.com]
 
TASK [Update YUM repository and caches] ***************************************************************************************************************************************************************************
skipping: [debian.uk.prod.jaranguda.com]
skipping: [ubuntu.id.prod.jaranguda.com]
skipping: [mints.id.labs.jaranguda.com]
skipping: [mints.sg.labs.jaranguda.com]
ok: [oracle.sg.prod.jaranguda.com]
ok: [alma.sg.prod.jaranguda.com]
ok: [rocky.sg.prod.jaranguda.com]
 
TASK [Upgrade all packages on servers debian based] ***************************************************************************************************************************************************************
skipping: [oracle.sg.prod.jaranguda.com]
skipping: [alma.sg.prod.jaranguda.com]
skipping: [rocky.sg.prod.jaranguda.com]
ok: [debian.uk.prod.jaranguda.com]
ok: [ubuntu.id.prod.jaranguda.com]
ok: [mints.id.labs.jaranguda.com]
ok: [mints.sg.labs.jaranguda.com]
 
TASK [Upgrade all packages on RedHat based] ***********************************************************************************************************************************************************************
skipping: [debian.uk.prod.jaranguda.com]
skipping: [ubuntu.id.prod.jaranguda.com]
skipping: [mints.id.labs.jaranguda.com]
skipping: [mints.sg.labs.jaranguda.com]
ok: [oracle.sg.prod.jaranguda.com]
ok: [alma.sg.prod.jaranguda.com]
ok: [rocky.sg.prod.jaranguda.com]
 
PLAY RECAP ********************************************************************************************************************************************************************************************************
oracle.sg.prod.jaranguda.com    : ok=3    changed=0    unreachable=0    failed=0    skipped=2    rescued=0    ignored=0
alma.sg.prod.jaranguda.com      : ok=3    changed=0    unreachable=0    failed=0    skipped=2    rescued=0    ignored=0
rocky.sg.prod.jaranguda.com     : ok=3    changed=0    unreachable=0    failed=0    skipped=2    rescued=0    ignored=0
debian.uk.prod.jaranguda.com    : ok=3    changed=0    unreachable=0    failed=0    skipped=2    rescued=0    ignored=0
ubuntu.id.prod.jaranguda.com    : ok=3    changed=0    unreachable=0    failed=0    skipped=2    rescued=0    ignored=0
mints.id.labs.jaranguda.com     : ok=3    changed=0    unreachable=0    failed=0    skipped=2    rescued=0    ignored=0
mints.sg.labs.jaranguda.com     : ok=3    changed=0    unreachable=0    failed=0    skipped=2    rescued=0    ignored=0

Leave a comment

Your email address will not be published. Required fields are marked *