Lietuvių

Išsamus konfigūracijos valdymo su Ansible vadovas, apimantis diegimą, „playbook‘us“, modulius, roles ir geriausias infrastruktūros automatizavimo praktikas.

Konfigūracijos valdymas: Automatizavimo įsisavinimas su Ansible

Šiandienos sparčiai besivystančioje IT aplinkoje efektyvus ir patikimas konfigūracijos valdymas yra svarbiausias dalykas. Organizacijos visame pasaulyje ieško būdų, kaip automatizuoti infrastruktūros paruošimą, programų diegimą ir bendrą sistemos administravimą, siekdamos sumažinti rankinį darbą, minimizuoti klaidas ir paspartinti pateikimą į rinką. Ansible, galingas atvirojo kodo automatizavimo variklis, tapo vienu iš pagrindinių sprendimų šiems tikslams pasiekti. Šiame išsamiame vadove bus gilinamasi į pagrindines konfigūracijos valdymo su Ansible koncepcijas, apimant viską nuo diegimo ir pagrindinio naudojimo iki pažangių metodų ir geriausių praktikų.

Kas yra konfigūracijos valdymas?

Konfigūracijos valdymas (angl. Configuration Management, CM) – tai procesas, kurio metu sistemingai valdomi ir kontroliuojami IT sistemų konfigūracijos pakeitimai. Jis užtikrina, kad sistemos būtų nuosekliai konfigūruojamos pagal apibrėžtus standartus, nepriklausomai nuo jų dydžio ar sudėtingumo. Pagrindiniai konfigūracijos valdymo aspektai yra šie:

Kodėl verta rinktis Ansible?

Ansible išsiskiria iš kitų konfigūracijos valdymo įrankių savo paprastumu, architektūra be agentų ir galingomis galimybėmis. Štai keletas svarių priežasčių rinktis Ansible:

Ansible diegimas

Ansible diegimas yra paprastas. Diegimo procesas priklauso nuo jūsų operacinės sistemos.

Linux (Debian/Ubuntu)

sudo apt update
sudo apt install software-properties-common
sudo apt-add-repository --yes --update ppa:ansible/ansible
sudo apt install ansible

Linux (Red Hat/CentOS/Fedora)

sudo dnf install epel-release
sudo dnf install ansible

macOS

brew install ansible

Po diegimo patikrinkite, ar Ansible įdiegtas teisingai, paleisdami:

ansible --version

Pagrindinės Ansible koncepcijos

Norint efektyviai valdyti konfigūracijas, būtina suprasti pagrindines Ansible koncepcijas. Jos apima:

Pirmojo „Playbook“ kūrimas

Sukurkime paprastą „playbook“, kad įdiegtume Apache žiniatinklio serverį valdomame mazge. Pirmiausia sukurkite inventoriaus failą pavadinimu `hosts` su jūsų valdomo mazgo IP adresu arba pagrindinio kompiuterio pavadinimu:

[webservers]
192.168.1.100

Toliau sukurkite „playbook“ pavadinimu `install_apache.yml`:

---
- hosts: webservers
  become: yes
  tasks:
    - name: Įdiegti Apache
      apt:
        name: apache2
        state: present
    - name: Paleisti Apache
      service:
        name: apache2
        state: started
        enabled: yes

Šiame „playbook'e“:

Norėdami paleisti „playbook“, vykdykite šią komandą:

ansible-playbook -i hosts install_apache.yml

Ansible prisijungs prie valdomo mazgo, įdiegs Apache ir paleis paslaugą.

Darbas su moduliais

Ansible moduliai yra automatizavimo statybiniai blokai. Jie suteikia standartizuotą būdą sąveikauti su įvairiomis sistemomis ir programomis. Ansible apima didžiulę modulių biblioteką, skirtą operacinėms sistemoms, duomenų bazėms, žiniatinklio serveriams, debesijos platformoms ir kt. valdyti.

Štai keletas dažniausiai naudojamų Ansible modulių:

Norėdami rasti visą Ansible modulių sąrašą ir jų dokumentaciją, apsilankykite Ansible dokumentacijos svetainėje.

Kintamųjų panaudojimas

Kintamieji yra būtini, kad „playbook'ai“ būtų lankstesni ir daugkartinio naudojimo. Jie leidžia pritaikyti konfigūracijas pagal skirtingas aplinkas ar valdomus mazgus. Ansible palaiko kelis kintamųjų tipus:

Štai pavyzdys, kaip naudoti inventoriaus kintamuosius:

Inventoriaus failas (hosts):

[webservers]
192.168.1.100  webserver_port=80
192.168.1.101  webserver_port=8080

„Playbook“ (configure_webserver.yml):

---
- hosts: webservers
  become: yes
  tasks:
    - name: Konfigūruoti žiniatinklio serverį
      template:
        src: webserver.conf.j2
        dest: /etc/apache2/sites-available/000-default.conf
      notify: restart_apache

  handlers:
    - name: restart_apache
      service:
        name: apache2
        state: restarted

Šablono failas (webserver.conf.j2):

<VirtualHost *:{{ webserver_port }}>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Šiame pavyzdyje kintamasis `webserver_port` yra apibrėžtas inventoriaus faile ir naudojamas Jinja2 šablone konfigūruoti žiniatinklio serverio virtualųjį prieglobstį.

Organizavimas su rolėmis

Rolės suteikia būdą organizuoti ir pakartotinai naudoti „playbook'us“, užduotis ir kitus Ansible komponentus. Rolė yra savarankiškas automatizavimo vienetas, kurį galima pritaikyti keliems valdomiems mazgams. Rolės skatina moduliškumą, kodo pakartotinį naudojimą ir palaikomumą.

Rolę paprastai sudaro šie katalogai:

Norėdami sukurti rolę, naudokite `ansible-galaxy` komandą:

ansible-galaxy init webserver

Tai sukurs katalogą pavadinimu `webserver` su standartine rolės struktūra. Tada galite užpildyti rolę užduotimis, tvarkytuvais, kintamaisiais, failais ir šablonais.

Norėdami naudoti rolę „playbook'e“, įtraukite `roles` raktinį žodį:

---
- hosts: webservers
  become: yes
  roles:
    - webserver

Pažangios technikos

Įsisavinę Ansible pagrindus, galite tyrinėti pažangesnes technikas, kad dar labiau patobulintumėte savo automatizavimo galimybes.

Sąlyginis vykdymas

Sąlyginis vykdymas leidžia vykdyti užduotis tik tada, kai įvykdomos tam tikros sąlygos. Tai naudinga pritaikant konfigūracijas pagal valdomų mazgų charakteristikas. Galite naudoti `when` raktinį žodį, kad nurodytumėte sąlygą užduočiai.

- name: Įdiegti Apache tik Debian pagrindo sistemose
  apt:
    name: apache2
    state: present
  when: ansible_os_family == "Debian"

Ciklai

Ciklai leidžia vykdyti užduotį kelis kartus su skirtingomis reikšmėmis. Tai naudinga iteruojant per paketų, vartotojų ar kitų elementų sąrašus. Galite naudoti `loop` raktinį žodį, kad nurodytumėte reikšmių sąrašą.

- name: Įdiegti kelis paketus
  apt:
    name: "{{ item }}"
    state: present
  loop:
    - apache2
    - php
    - mysql-server

Tvarkytuvai (Handlers)

Tvarkytuvai yra užduotys, kurios vykdomos tik tada, kai apie jas praneša kita užduotis. Tai naudinga perkraunant paslaugas ar atliekant kitus veiksmus, kurie turėtų būti suaktyvinti tik pasikeitus konfigūracijai. Galite naudoti `notify` raktinį žodį pranešti tvarkytuvui.

- name: Konfigūruoti žiniatinklio serverį
  template:
    src: webserver.conf.j2
    dest: /etc/apache2/sites-available/000-default.conf
  notify: restart_apache

handlers:
  - name: restart_apache
    service:
      name: apache2
      state: restarted

Klaidų apdorojimas

Tinkamas klaidų apdorojimas yra labai svarbus norint užtikrinti jūsų automatizavimo patikimumą. Ansible suteikia keletą būdų klaidoms apdoroti:

- block:
    - name: Įdiegti paketą
      apt:
        name: some_package
        state: present
  rescue:
    - name: Apdoroti klaidą
      debug:
        msg: "Diegiant paketą įvyko klaida"

Ansible Tower / AWX

Ansible Tower (komercinis) ir AWX (atvirojo kodo) yra žiniatinklio pagrindu veikiančios vartotojo sąsajos, skirtos Ansible. Jos suteikia tokias funkcijas kaip:

Ansible Tower / AWX supaprastina Ansible aplinkų valdymą, ypač didelėse organizacijose, turinčiose kelias komandas ir projektus. Jie siūlo centrinį tašką automatizavimo darbo eigoms valdyti, gerina bendradarbiavimą ir didina saugumą.

Ansible Galaxy

Ansible Galaxy yra iš anksto sukurtų rolių ir kolekcijų saugykla, kurią galima naudoti norint paspartinti automatizavimo pastangas. Ji suteikia patogų būdą atrasti ir pakartotinai naudoti bendruomenės sukurtą turinį. Galite naudoti `ansible-galaxy` komandą ieškoti, atsisiųsti ir įdiegti roles bei kolekcijas iš Ansible Galaxy.

ansible-galaxy search webserver
ansible-galaxy install geerlingguy.apache

Naudodami roles iš Ansible Galaxy galite sutaupyti laiko ir pastangų, pasinaudodami Ansible bendruomenės patirtimi. Tačiau prieš naudojant roles svarbu atidžiai jas peržiūrėti, kad įsitikintumėte, jog jos atitinka jūsų saugumo ir kokybės standartus.

Geriausios praktikos

Norint sukurti tvirtą ir prižiūrimą Ansible automatizavimą, būtina laikytis geriausių praktikų. Štai keletas rekomendacijų:

Pavyzdžiai iš realaus pasaulio

Ansible galima naudoti įvairioms IT užduotims automatizuoti. Štai keletas pavyzdžių iš realaus pasaulio:

Išvada

Ansible yra galingas ir universalus automatizavimo variklis, galintis žymiai pagerinti jūsų IT operacijų efektyvumą ir patikimumą. Įsisavinę pagrindines Ansible koncepcijas, pasinaudodami jo moduliais ir rolėmis bei laikydamiesi geriausių praktikų, galite automatizuoti platų užduočių spektrą ir supaprastinti savo infrastruktūros valdymą. Organizacijoms toliau diegiant DevOps ir debesijos kompiuteriją, Ansible vaidins vis svarbesnį vaidmenį skaitmeninėje transformacijoje, skatindamas automatizavimą. Nesvarbu, ar esate mažas startuolis, ar didelė įmonė su pasauliniu buvimu, Ansible gali padėti jums pasiekti didesnį efektyvumą, nuoseklumą ir lankstumą jūsų IT operacijose, galiausiai suteikiant konkurencinį pranašumą rinkoje. Svarbiausia pradėti nuo mažų dalykų, eksperimentuoti ir palaipsniui plėsti savo automatizavimo pastangas, įgyjant patirties ir pasitikėjimo. Pasinaudokite Ansible galia ir atskleiskite visą savo IT infrastruktūros potencialą.