GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara memperbarui/meningkatkan Debian/Ubuntu Linux menggunakan Ansible

Demikian pula, jika ada pembaruan kernel yang memerlukan boot ulang OS, sebaiknya gunakan modul yang memungkinkan untuk mem-boot ulang untuk mem-boot ulang mesin, tunggu hingga turun, bangkit kembali dan untuk menanggapi perintah

Dalam panduan ini, kami akan membuat skrip untuk memperbarui cache sistem berbasis Debian dan meningkatkan paket yang diinstal. Kami juga akan menyertakan tugas untuk me-restart server jika ada pembaruan kernel yang memerlukan reboot.

Cek juga:

  • SSH – Membuat dan Bekerja dengan kunci ssh

Daftar Isi

  1. Menggunakan modul apt yang memungkinkan untuk memperbarui semua paket
  2. Reboot sistem jika ada Kernel Upgrade
  3. Membuat file host
  4. Seluruh buku pedoman
  5. Menjalankan buku pedoman

1. Menggunakan modul apt yang memungkinkan untuk memperbarui semua paket

Sebelum melakukan upgrade paket di sistem berbasis Debian, selalu disarankan untuk melakukan refresh cache yang tepat. Ini dapat dicapai dengan menggunakan perintah ini:

sudo apt-get update

Kita dapat mencapai hal yang sama menggunakan Ansible dengan tugas ini:

- name: Update apt repo and cache on all Debian/Ubuntu boxes
  apt:
    update_cache: yes
    force_apt_get: yes
    cache_valid_time: 3600

Dimana,

  1. update_cache:ya – Jalankan yang setara dengan apt-get update perintah di semua server
  2. force_apt_get:ya – Jangan gunakan perintah aptitude, alih-alih gunakan perintah apt-get pada kotak Debian/Ubuntu
  3. cache_valid_time:3600 – Perbarui cache apt jika lebih lama dari cache_valid_time . Opsi ini diatur dalam hitungan detik. Dalam contoh ini, disetel ke 3600 detik.

Selanjutnya kita melakukan upgrade. Kami biasanya menjalankan perintah apt-get ini untuk mencapai fungsi:

sudo apt-get upgrade -y

Ini adalah tugas yang mungkin untuk mencapai peningkatan:

- name: Upgrade all packages on servers
  apt:
    upgrade: dist
    force_apt_get: yes

Dimana,

  1. peningkatan versi:dist – Jalankan yang setara dengan apt-get upgrade perintah di semua server Ubuntu atau Debian Linux. Dengan kata lain, tingkatkan semua paket ke versi terbaru.
  2. force_apt_get:ya – Gunakan apt-get sebagai ganti aptitude.

2. Reboot sistem jika ada Upgrade Kernel

Jika ada upgrade Kernel, kita perlu me-reboot sistem untuk menerapkan perubahan tersebut. Jika diperlukan reboot, file dengan jalur ini /var/run/reboot-required akan dibuat.

Yang ingin kami lakukan adalah memeriksa apakah file itu ada, lalu reboot sistem. Kita dapat mendaftarkan variabel baru jika file /var/run/reboot-required ada di sistem menggunakan status yang memungkinkan:

- name: Check if a reboot is needed on all servers
  register: reboot_required_file
  stat:
    path: /var/run/reboot-required
    get_md5: no

Dimana:

  1. daftar:reboot_required_file register kata kunci memutuskan variabel apa untuk menyimpan hasil dan kami akan menggunakannya sebagai berikut untuk me-reboot kotak.
  2. stat:jalur:/var/run/reboot-required – Tentukan apakah ada jalur (/var/run/reboot-required)
  3. get_md5:tidak – Algoritma untuk menentukan checksum file. Dalam contoh ini, saya menggunakan md5, tetapi Anda dapat menggunakan sha1, sha224, sha256, sha384, dan sha512.

Sekarang kita tahu apakah server akan di-boot ulang atau tidak, mari kita tambahkan tugas untuk mem-boot ulang server jika file tersebut ada:

- name: Reboot the server if kernel updated
  reboot:
    msg: "Reboot initiated by Ansible for kernel updates"
    connect_timeout: 5
    reboot_timeout: 300
    pre_reboot_delay: 0
    post_reboot_delay: 30
    test_command: uptime
  when: reboot_required_file.stat.exists

Dimana,

  1. test_command:waktu aktif – Jalankan perintah uptime pada server yang di-boot ulang dan harapkan keberhasilan untuk menentukan mesin siap untuk tugas lebih lanjut.
  2. kapan:reboot_required_file.stat.exists – Pertama, periksa apakah file bernama /var/run/reboot-required ada menggunakan variabel bernama reboot_required_file. Modul reboot hanya akan berfungsi jika file itu ada dan diterapkan menggunakan kondisi yang memungkinkan 'when:reboot_required_file.stat.exists'.

3. Membuat file host

Sekarang setelah kita memiliki logikanya, mari kita buat file hosts.yaml. Simpan konten ini ke file bernama hosts.yaml .

all:
  hosts:
    ubuntusrv:
      ansible_ssh_host: 10.2.11.10
      ansible_ssh_user: ubuntu
    debiansrv:
      ansible_ssh_host: 10.2.11.11
      ansible_ssh_user: admin
  children:
    allservers:
      hosts:
        ubuntusrv:
        debiansrv:

4. Seluruh pedoman

Kita dapat menempatkan seluruh logika dalam buku pedoman. Simpan konten ini ke file upgrade.yaml

---
- name: Playbook to Update cache, upgrade packages and reboot os if necessary
  hosts: allservers
  become: yes
  gather_facts: False
  tasks:
    - name: Update apt repo and cache on all Debian/Ubuntu boxes
      apt:
        update_cache: yes
        force_apt_get: yes
        cache_valid_time: 3600

    - name: Upgrade all packages on servers
      apt:
        upgrade: dist
        force_apt_get: yes

    - name: Check if a reboot is needed on all servers
      register: reboot_required_file
      stat:
        path: /var/run/reboot-required
        get_md5: no

    - name: Reboot the server if kernel updated
      reboot:
        msg: "Reboot initiated by Ansible for kernel updates"
        connect_timeout: 5
        reboot_timeout: 300
        pre_reboot_delay: 0
        post_reboot_delay: 30
        test_command: uptime
      when: reboot_required_file.stat.exists

5. Menjalankan buku pedoman

Pastikan Anda menyiapkan kunci ssh dan menjalankannya sebagai berikut:

ansible-playbook -i hosts.yaml upgrade.yaml -vv

Ini adalah output di server saya

➜ ansible-playbook -i hosts.yaml upgrade.yaml -vv
ansible-playbook [core 2.12.1]
  config file = /Users/etowett/.ansible.cfg
  configured module search path = ['/Users/etowett/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /Library/Python/3.8/site-packages/ansible
  ansible collection location = /Users/etowett/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/local/bin/ansible-playbook
  python version = 3.8.2 (default, Apr  8 2021, 23:19:18) [Clang 12.0.5 (clang-1205.0.22.9)]
  jinja version = 3.0.3
  libyaml = True
Using /Users/etowett/.ansible.cfg as config file
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details
Skipping callback 'default', as we already have a stdout callback.
Skipping callback 'minimal', as we already have a stdout callback.
Skipping callback 'oneline', as we already have a stdout callback.

PLAYBOOK: upgrade.yaml ************************************************************************************************************************************************************
1 plays in upgrade.yaml

PLAY [Playbook to Update cache, upgrade packages and reboot os if necessary] ******************************************************************************************************
META: ran handlers

TASK [Update apt repo and cache on all Debian/Ubuntu boxes] ***********************************************************************************************************************
task path: /Users/etowett/Proj/me/infme/ansible/upgrade.yaml:7
changed: [ubuntusrv] => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python3"}, "cache_update_time": 1639737368, "cache_updated": true, "changed": true}

TASK [Upgrade all packages on servers] ********************************************************************************************************************************************
task path: /Users/etowett/Proj/me/infme/ansible/upgrade.yaml:13
ok: [ubuntusrv] => {"changed": false, "msg": "Reading package lists...\nBuilding dependency tree...\nReading state information...\nCalculating upgrade...\n0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.\n", "stderr": "", "stderr_lines": [], "stdout": "Reading package lists...\nBuilding dependency tree...\nReading state information...\nCalculating upgrade...\n0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.\n", "stdout_lines": ["Reading package lists...", "Building dependency tree...", "Reading state information...", "Calculating upgrade...", "0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded."]}

TASK [Check if a reboot is needed on all servers] *********************************************************************************************************************************
task path: /Users/etowett/Proj/me/infme/ansible/upgrade.yaml:18
ok: [ubuntusrv] => {"changed": false, "stat": {"atime": 1639737351.6237016, "attr_flags": "", "attributes": [], "block_size": 4096, "blocks": 8, "charset": "us-ascii", "checksum": "20f7959b87e8cd55b7c985e46d6fa38a4063037d", "ctime": 1639679787.0725238, "dev": 26, "device_type": 0, "executable": false, "exists": true, "gid": 0, "gr_name": "root", "inode": 1143, "isblk": false, "ischr": false, "isdir": false, "isfifo": false, "isgid": false, "islnk": false, "isreg": true, "issock": false, "isuid": false, "mimetype": "text/x-diff", "mode": "0644", "mtime": 1639679787.0725238, "nlink": 1, "path": "/var/run/reboot-required", "pw_name": "root", "readable": true, "rgrp": true, "roth": true, "rusr": true, "size": 32, "uid": 0, "version": null, "wgrp": false, "woth": false, "writeable": true, "wusr": true, "xgrp": false, "xoth": false, "xusr": false}}

TASK [Reboot the server if kernel updated] ****************************************************************************************************************************************
task path: /Users/etowett/Proj/me/infme/ansible/upgrade.yaml:24
changed: [ubuntusrv] => {"changed": true, "elapsed": 73, "rebooted": true}
META: ran handlers
META: ran handlers

PLAY RECAP ************************************************************************************************************************************************************************
ubuntusrv                  : ok=4    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

Menutup

Anda telah mempelajari cara memperbarui semua paket pada kotak Debian dan Ubuntu Linux Anda dan mem-boot ulang server jika diperlukan menggunakan buku pedoman Ansible.


Ubuntu
  1. Cara Upgrade Debian 8 Jessie ke Debian Linux 9 Stretch

  2. Cara Memperbarui Kernel Linux Di Ubuntu

  3. Cara Memperbarui Debian Linux

  1. Cara Meningkatkan ke Ubuntu 20.04

  2. Cara Memperbarui Kali Linux

  3. Cara Meningkatkan Ubuntu Ke 20.10

  1. Cara Meningkatkan Ubuntu Ke 21.10

  2. Cara Meningkatkan Ubuntu Ke 21.04

  3. Cara Meningkatkan ke Ubuntu 21.10