luktom.net
  • blog
  • kontakt
  • english





Jak zaktualizować pakiety w CentOS/RHEL przy użyciu Ansible?

04 kw., 2018
Ansible
1 komentarz
Odsłony : 4656

W sieci można znaleźć wiele porad dotyczących aktualizacji systemów CentOS/RHEL przy użyciu Ansible. Część z nich jest dość stara i nie uwzględnia nowych ficzerów dodanych w ostatnich wersjach Ansible, inne natomiast mają jakieś błędy lub nie dostarczają informacji co właściwie się dzieje.

Ostatni poświęciłem trochę czasu na dopracowanie playbooka ansiblowego, aby w wygodny sposób móc aktualizować systemy z rodziny RedHata.

Playbook robi następujące rzeczy:

  • Na początku sprawdza, czy są dostępne jakieś aktualizacji i wyświetla ich listę.
  • Następnie rozpoczyna procedurę aktualizacji.
  • Po udanej instalacji dodaje pakiet yum-utils, który dostarcza komendę needs-restarting, sprawdzającą czy system wymaga restartu po aktualizacji.
  • Jeśli jest to konieczne, dokonuje restartu systemu oraz czeka aż system wróci do życia po restarcie.
  • Na końcu wyświetla podsumowanie ile zajęła procedura restartu i czekania.

Poniżej znajdziecie taski z mojego playbooka (nie wrzucam całego playbooka z racji, że każdy ma swoje własne wymagania dotyczące aktualiacji, np. stopień jej serializacji czy też grupa hostów na której aktualizacja ma się odbyć):

- name: check packages for updates
  shell: yum list updates | awk 'f;/Updated Packages/{f=1;}' | awk '{ print $1 }'
  changed_when: updates.stdout_lines | length > 0
  args:
    warn: false
  register: updates

- name: display count
  debug:
    msg: "Found {{ updates.stdout_lines | length }} packages to be updated:\n\n{{ updates.stdout }}"

- when: updates.stdout_lines | length > 0
  block:
    - name: install updates using yum
      yum:
        name: "*"
        state: latest

    - name: install yum-utils
      package:
        name: yum-utils

    - name: check if reboot is required
      shell: needs-restarting -r
      failed_when: false
      register: reboot_required
      changed_when: false

- when: updates.stdout_lines | length > 0 and reboot_required.rc != 0
  block:
    - name: reboot the server if required
      shell: sleep 3; reboot
      ignore_errors: true
      changed_when: false
      async: 1
      poll: 0

    - name: wait for server to come back after reboot
      wait_for_connection:
        timeout: 600
        delay: 20
      register: reboot_result

    - name: reboot time
      debug:
        msg: "The system rebooted in {{ reboot_result.elapsed }} seconds."

Mam nadzieję, że ten wpis ułatwi Wam pracę :)



Tagi :   ansiblecentoslinuxredhatupdate

Powiązane wpisy

  • RedHat Certified System Administrator

  • Persystencja logów journald

  • „SQL Server ❤ Linux” – na PLSSUG Kraków – zapraszam

  • Komentarze ( 1 )

    • dwa kw. 02 , 2022 at 19:23 /

      Przed reboot dobrze jest zrobić jeszcze:

      sync;

      oraz na wszelki wypadek zaktualizować gruba:


      grub2-mkconfig -o /boot/grub2/grub.cfg


    Dodaj komentarz

    Click here to cancel reply

    You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>





    Łukasz Tomaszkiewicz

    Łukasz Tomaszkiewicz

    Pasjonat chmury, szczególnie AWSa, który nieustannie automatyzuje powtarzające się czynności i optymalizuje procesy, przy okazji wdrażając dobre praktyki dotyczące bezpieczeństwa. Jego szerokie doświadczenie w zakresie tworzenia oprogramowania, projektowania baz danych, a także wirtualizacji serwerów i zarządzania infrastrukturą w chmurze pozwala mu spojrzeć przekrojowo na współczesny stack technologiczny.

    W wolnym czasie fotograf, sporadycznie piszący blogger :) a także regularny prelegent na krakowskich grupach związanych z IT.

    Wyznawca Vim'a :)

    Kategorie

    • Ansible
    • AWS
    • C#
    • Chatboty
    • Cloud
    • Daj się poznać 2017
    • Docker
    • Inne
    • Linux
    • Open source
    • Organizacyjne
    • Prelekcje
    • Sieci komputerowe
    • SQL Server
    • Windows
    • Windows Server
    • Wirtualizacja

    Najczęściej czytane

    • Creating single node VSAN cluster
    • SQL Server – walidacja numerów PESEL i NIP
    • Konfiguracja serwera DHCP na routerach Cisco
    • Aktywacja routingu IP w Windows 7 / Windows Server 2008
    • Konwersja maszyn wirtualnych z ESXi do Hyper-V przy użyciu SCVMM 2012
    • Jak podłączyć program R do SQL Servera?

    Tagi

    .net ai ansible asp.net mvc aws aws cli bot builder bot framework c# centos certyfikaty chatbot chatboty cisco cmd docker dsp2017 esxi hyperv kontenery konteneryzacja linux mvc nlp openvpn plssug pobieranie powershell prelekcje rancher redhat router sieci smogbot sql server ssd ssl vmware vsphere windows windows mobile windows server wirtualizacja wit.ai wrzuta

    Copyright © 2006-2018 by Łukasz Tomaszkiewicz. Wszelkie prawa zastrzeżone