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