Põhjalik juhend Ansible'i abil konfiguratsioonihalduseks, mis hõlmab paigaldamist, playbooke, mooduleid, rolle ja parimaid tavasid taristu automatiseerimiseks.
Konfiguratsioonihaldus: Automatiseerimise meisterlik valdamine Ansible'i abil
Tänapäeva kiiresti arenevas IT-maailmas on tõhus ja usaldusväärne konfiguratsioonihaldus ülioluline. Organisatsioonid üle maailma otsivad viise, kuidas automatiseerida taristu ettevalmistamist, rakenduste juurutamist ja üldist süsteemihaldust, et vähendada käsitsitööd, minimeerida vigu ja lühendada turuletoomise aega. Ansible, võimas avatud lähtekoodiga automatiseerimismootor, on kujunenud nende eesmärkide saavutamisel juhtivaks lahenduseks. See põhjalik juhend süveneb Ansible'iga konfiguratsioonihalduse põhimõistetesse, hõlmates kõike alates paigaldamisest ja põhitõdedest kuni edasijõudnud tehnikate ja parimate tavadeni.
Mis on konfiguratsioonihaldus?
Konfiguratsioonihaldus (CM) on protsess, mille käigus hallatakse ja kontrollitakse süstemaatiliselt IT-süsteemide konfiguratsiooni muudatusi. See tagab, et süsteemid on järjepidevalt konfigureeritud vastavalt määratletud standarditele, sõltumata nende suurusest või keerukusest. Konfiguratsioonihalduse peamised aspektid on järgmised:
- Taristu kui kood (IaC): Taristu konfiguratsioonide esitamine koodina, mis võimaldab versioonihaldust, korratavust ja automatiseeritud juurutamist.
- Soovitud oleku konfiguratsioon (DSC): Süsteemi soovitud oleku määratlemine ja selle oleku automaatne jõustamine.
- Idempotentsus: Tagamine, et sama konfiguratsiooni korduv rakendamine annab sama tulemuse.
- Versioonihaldus: Konfiguratsioonide muudatuste jälgimine ajas, mis võimaldab naasta eelmiste olekute juurde.
- Automatiseerimine: Korduvate ülesannete, nagu tarkvara paigaldamine, paigamine ja konfiguratsioonivärskenduste automatiseerimine.
Miks valida Ansible?
Ansible eristub teistest konfiguratsioonihaldusvahenditest oma lihtsuse, agendivaba arhitektuuri ja võimsate võimaluste poolest. Siin on mõned kaalukad põhjused Ansible'i valimiseks:
- Agendivaba arhitektuur: Ansible ei nõua agentide paigaldamist sihtsüsteemidesse. See suhtleb SSH või muude standardprotokollide kaudu, lihtsustades juurutamist ja vähendades koormust. See lihtsustab haldamist erinevates keskkondades, alates pilve-instantsidest kuni kohapealsete serveriteni erinevatel kontinentidel.
- Lihtne ja inimloetav süntaks: Ansible kasutab konfiguratsioonijuhiste määratlemiseks YAML-i (YAML Ain't Markup Language), mis teeb playbookid kergesti mõistetavaks ja hooldatavaks.
- Võimsad moodulid: Ansible pakub laia valikut mooduleid IT-taristu erinevate aspektide haldamiseks, sealhulgas operatsioonisüsteemid, andmebaasid, veebiserverid ja pilveplatvormid.
- Idempotentsus: Ansible tagab, et konfiguratsioone rakendatakse ainult siis, kui see on vajalik, vältides soovimatuid muudatusi.
- Skaleeritavus: Ansible suudab tõhusalt hallata nii väikesi kui ka suuremahulisi keskkondi.
- Avatud lähtekood: Ansible on avatud lähtekoodiga tööriist, millel on suur ja aktiivne kogukond, mis pakub laialdast tuge ja ressursse.
- Kogukonna tugi: Elav kogukond tagab pideva arengu, kergesti kättesaadavad lahendused levinud probleemidele ning suure hulga kogukonna arendatud mooduleid ja rolle.
Ansible'i paigaldamine
Ansible'i paigaldamine on lihtne. Paigaldusprotsess sõltub teie operatsioonisüsteemist.
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
Pärast paigaldamist veenduge, et Ansible on õigesti paigaldatud, käivitades käsu:
ansible --version
Ansible'i põhimõisted
Ansible'i põhimõistete mõistmine on tõhusa konfiguratsioonihalduse jaoks hädavajalik. Nende hulka kuuluvad:
- Juhtsõlm (Control Node): Masin, kuhu Ansible on paigaldatud ja kust playbooke käivitatakse.
- Hallatavad sõlmed (Managed Nodes): Sihtsüsteemid, mida Ansible haldab.
- Inventuur (Inventory): Hallatavate sõlmede nimekiri, mis on organiseeritud gruppidesse. Inventuur võib olla lihtne tekstifail või dünaamiline inventuuriskript, mis hangib sõlmede teavet pilveteenuse pakkujalt või muust allikast.
- Playbookid (Playbooks): YAML-failid, mis määratlevad hallatavatel sõlmedel täidetavad ülesanded. Playbookid on Ansible'i automatiseerimise süda.
- Ülesanded (Tasks): Üksikud toimingud, mis sooritatakse hallatavatel sõlmedel. Iga ülesanne kasutab Ansible'i moodulit.
- Moodulid (Modules): Korduvkasutatavad koodiühikud, mis täidavad konkreetseid ülesandeid, nagu pakettide paigaldamine, failide loomine või teenuste haldamine.
- Rollid (Roles): Viis playbookide, ülesannete ja muude Ansible'i komponentide organiseerimiseks ja taaskasutamiseks. Rollid edendavad modulaarsust ja koodi taaskasutamist.
- Muutujad (Variables): Kasutatakse väärtuste salvestamiseks ja taaskasutamiseks playbookides. Muutujaid saab määratleda playbooki, inventuuri või rolli tasemel.
- Faktid (Facts): Teave hallatavate sõlmede kohta, mida Ansible automaatselt kogub. Fakte saab kasutada playbookides konfiguratsioonide kohandamiseks vastavalt sihtsüsteemide omadustele.
Esimese playbooki loomine
Loome lihtsa playbooki Apache veebiserveri paigaldamiseks hallatavale sõlmele. Esmalt looge inventuurifail nimega `hosts` oma hallatava sõlme IP-aadressi või hostinimega:
[webservers]
192.168.1.100
Järgmisena looge playbook nimega `install_apache.yml`:
---
- hosts: webservers
become: yes
tasks:
- name: Install Apache
apt:
name: apache2
state: present
- name: Start Apache
service:
name: apache2
state: started
enabled: yes
Selles playbookis:
- `hosts: webservers` määrab, et playbook tuleks käivitada inventuuris määratletud `webservers` grupil.
- `become: yes` annab Ansible'ile käsu kasutada ülesannete täitmiseks õiguste laiendamist (sudo).
- `tasks` jaotis määratleb kaks ülesannet: Apache paigaldamine ja Apache teenuse käivitamine.
- `apt` moodulit kasutatakse `apache2` paketi paigaldamiseks.
- `service` moodulit kasutatakse `apache2` teenuse käivitamiseks ja lubamiseks.
Playbooki käivitamiseks käivitage järgmine käsk:
ansible-playbook -i hosts install_apache.yml
Ansible ühendub hallatava sõlmega, paigaldab Apache ja käivitab teenuse.
Moodulitega töötamine
Ansible'i moodulid on automatiseerimise ehituskivid. Need pakuvad standardiseeritud viisi erinevate süsteemide ja rakendustega suhtlemiseks. Ansible sisaldab laia valikut mooduleid operatsioonisüsteemide, andmebaaside, veebiserverite, pilveplatvormide ja muu haldamiseks.
Siin on mõned levinumad Ansible'i moodulid:
- `apt` (Debian/Ubuntu): Haldab pakette `apt` paketihalduri abil.
- `yum` (Red Hat/CentOS/Fedora): Haldab pakette `yum` paketihalduri abil.
- `file`: Haldab faile ja katalooge.
- `template`: Loob faile Jinja2 mallide põhjal.
- `service`: Haldab teenuseid.
- `user`: Haldab kasutajakontosid.
- `group`: Haldab gruppe.
- `copy`: Kopeerib faile hallatavatele sõlmedele.
- `command`: Käivitab shelli käske.
- `shell`: Käivitab shelli käske täpsemate valikutega.
- `cron`: Haldab croni töid.
Ansible'i moodulite ja nende dokumentatsiooni täieliku loendi leiate Ansible'i dokumentatsiooni veebisaidilt.
Muutujate kasutamine
Muutujad on hädavajalikud, et muuta playbookid paindlikumaks ja korduvkasutatavaks. Need võimaldavad teil kohandada konfiguratsioone erinevate keskkondade või hallatavate sõlmede alusel. Ansible toetab mitut tüüpi muutujaid:
- Inventuuri muutujad: Määratletud inventuurifailis.
- Playbooki muutujad: Määratletud playbookis.
- Rolli muutujad: Määratletud rollide sees.
- Faktid: Automaatselt kogutud teave hallatavate sõlmede kohta.
- Käsurea muutujad: Edastatud `ansible-playbook` käsule `-e` valikuga.
Siin on näide inventuuri muutujate kasutamisest:
Inventuurifail (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: Configure webserver
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
Mallifail (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>
Selles näites on muutuja `webserver_port` määratletud inventuurifailis ja seda kasutatakse Jinja2 mallis veebiserveri virtuaalhosti konfigureerimiseks.
Rollidega organiseerimine
Rollid pakuvad viisi playbookide, ülesannete ja muude Ansible'i komponentide organiseerimiseks ja taaskasutamiseks. Roll on iseseisev automatiseerimisühik, mida saab rakendada mitmele hallatavale sõlmele. Rollid edendavad modulaarsust, koodi taaskasutamist ja hooldatavust.
Roll koosneb tavaliselt järgmistest kataloogidest:
- `tasks`: Sisaldab rolli peamist ülesannete loendit.
- `handlers`: Sisaldab handlereid, mida ülesanded käivitavad.
- `vars`: Sisaldab rolli poolt kasutatavaid muutujaid.
- `defaults`: Sisaldab muutujate vaikeväärtusi.
- `files`: Sisaldab staatilisi faile, mis kopeeritakse hallatavatele sõlmedele.
- `templates`: Sisaldab Jinja2 malle, mida kasutatakse failide genereerimiseks hallatavatel sõlmedel.
- `meta`: Sisaldab metaandmeid rolli kohta, nagu selle nimi, autor ja sõltuvused.
Rolli loomiseks kasutage käsku `ansible-galaxy`:
ansible-galaxy init webserver
See loob kataloogi nimega `webserver` standardse rolli struktuuriga. Seejärel saate rolli täita ülesannete, handlerite, muutujate, failide ja mallidega.
Rolli kasutamiseks playbookis lisage märksõna `roles`:
---
- hosts: webservers
become: yes
roles:
- webserver
Täpsemad tehnikad
Kui olete Ansible'i põhitõed omandanud, saate uurida täpsemaid tehnikaid oma automatiseerimisvõimaluste edasiseks täiustamiseks.
Tingimuslik täitmine
Tingimuslik täitmine võimaldab teil ülesandeid täita ainult siis, kui teatud tingimused on täidetud. See on kasulik konfiguratsioonide kohandamiseks vastavalt hallatavate sõlmede omadustele. Saate kasutada märksõna `when`, et määrata ülesande jaoks tingimus.
- name: Install Apache only on Debian-based systems
apt:
name: apache2
state: present
when: ansible_os_family == "Debian"
Tsüklid
Tsüklid võimaldavad teil ülesannet mitu korda erinevate väärtustega täita. See on kasulik pakettide, kasutajate või muude elementide loendite läbimiseks. Saate kasutada märksõna `loop`, et määrata väärtuste loend.
- name: Install multiple packages
apt:
name: "{{ item }}"
state: present
loop:
- apache2
- php
- mysql-server
Handlerid
Handlerid on ülesanded, mida käivitatakse ainult siis, kui teine ülesanne neid teavitab. See on kasulik teenuste taaskäivitamiseks või muude toimingute tegemiseks, mis peaksid käivituma ainult siis, kui toimub konfiguratsioonimuudatus. Saate kasutada märksõna `notify` handleri teavitamiseks.
- name: Configure webserver
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
Vigade käsitlemine
Nõuetekohane vigade käsitlemine on teie automatiseerimise usaldusväärsuse tagamiseks ülioluline. Ansible pakub vigade käsitlemiseks mitmeid viise:
- `ignore_errors`: Võimaldab ülesandel ebaõnnestuda ilma playbooki täitmist peatamata.
- `rescue`: Määratleb ülesannete komplekti, mis käivitatakse, kui ülesanne ebaõnnestub.
- `block`: Grupeerib ülesannete komplekti, võimaldades teil määratleda ühise veakäsitleja kogu plokile.
- block:
- name: Install a package
apt:
name: some_package
state: present
rescue:
- name: Handle the error
debug:
msg: "An error occurred while installing the package"
Ansible Tower/AWX
Ansible Tower (kommertslik) ja AWX (avatud lähtekoodiga) on veebipõhised kasutajaliidesed Ansible'ile. Need pakuvad selliseid funktsioone nagu:
- Tsentraliseeritud haldus: Hallake Ansible'i projekte, inventuure ja mandaate ühes kohas.
- Rollipõhine juurdepääsukontroll: Kontrollige, kes saavad playbookidele juurde pääseda ja neid käivitada.
- Ajastamine: Ajastage playbookid automaatselt kindlatel aegadel käivituma.
- Veebi-API: Integreerige Ansible teiste süsteemidega REST API abil.
- Reaalajas jälgimine: Jälgige playbooki täitmist reaalajas.
Ansible Tower/AWX lihtsustab Ansible'i keskkondade haldamist, eriti suurtes organisatsioonides, kus on mitu meeskonda ja projekti. Need pakuvad keskset punkti automatiseerimise töövoogude haldamiseks, parandades koostööd ja suurendades turvalisust.
Ansible Galaxy
Ansible Galaxy on eelnevalt loodud rollide ja kollektsioonide hoidla, mida saab kasutada oma automatiseerimispüüdluste kiirendamiseks. See pakub mugavat viisi kogukonna arendatud sisu avastamiseks ja taaskasutamiseks. Saate kasutada käsku `ansible-galaxy` rollide ja kollektsioonide otsimiseks, allalaadimiseks ja paigaldamiseks Ansible Galaxy'st.
ansible-galaxy search webserver
ansible-galaxy install geerlingguy.apache
Ansible Galaxy rollide kasutamine võib säästa teie aega ja vaeva, kasutades ära Ansible'i kogukonna teadmisi. Siiski on oluline rollid enne nende kasutamist hoolikalt üle vaadata, et veenduda nende vastavuses teie turvalisus- ja kvaliteedistandarditele.
Parimad tavad
Parimate tavade järgimine on vastupidava ja hooldatava Ansible'i automatiseerimise loomiseks hädavajalik. Siin on mõned soovitused:
- Kasutage versioonihaldust: Hoidke oma playbooke, rolle ja inventuurifaile versioonihaldussüsteemis nagu Git. See võimaldab teil jälgida muudatusi, teha koostööd teistega ja naasta eelmiste versioonide juurde.
- Kirjutage idempotentseid playbooke: Veenduge, et teie playbookid oleksid idempotentsed, mis tähendab, et sama konfiguratsiooni korduv rakendamine annab sama tulemuse. See hoiab ära soovimatud muudatused ja tagab järjepidevuse.
- Kasutage rolle: Organiseerige oma playbookid rollidesse, et edendada modulaarsust ja koodi taaskasutamist.
- Kasutage muutujaid: Kasutage muutujaid, et muuta oma playbookid paindlikumaks ja korduvkasutatavaks.
- Testige oma playbooke: Testige oma playbooke põhjalikult enne nende tootmiskeskkonda viimist. Kasutage testimise automatiseerimiseks tööriistu nagu Molecule.
- Kaitske oma mandaate: Kaitske oma Ansible'i mandaate, nagu SSH-võtmed ja paroolid. Kasutage tundlike andmete krüpteerimiseks Ansible Vaulti.
- Dokumenteerige oma playbookid: Dokumenteerige oma playbookid selgelt ja lühidalt. See muudab teistel teie automatiseerimise mõistmise ja hooldamise lihtsamaks.
- Hoidke Ansible ajakohasena: Püsige kursis viimaste Ansible'i väljalasetega, et saada kasu uutest funktsioonidest, veaparandustest ja turvapaikadest.
- Võtke kasutusele järjepidev nimekonventsioon: Kasutage oma playbookide, rollide ja muutujate jaoks selget ja järjepidevat nimekonventsiooni. See parandab loetavust ja hooldatavust.
- Jälgige oma automatiseerimist: Jälgige oma playbookide täitmist, et tuvastada ja lahendada probleeme. Kasutage playbookide täitmise ja jõudluse jälgimiseks Ansible Tower/AWX-i või muid seirevahendeid.
Reaalse maailma näited
Ansible'i saab kasutada laia valiku IT-ülesannete automatiseerimiseks. Siin on mõned reaalse maailma näited:
- Pilvetaristu ettevalmistamine: Automatiseerige virtuaalmasinate, võrkude ja salvestusruumi loomine ja konfigureerimine pilvekeskkondades nagu AWS, Azure ja Google Cloud. Näiteks võib globaalne ettevõte kasutada Ansible'i identsete keskkondade automaatseks ettevalmistamiseks mitmes pilveregioonis, tagades liiasuse ja minimeerides latentsust kasutajatele üle maailma.
- Rakenduste juurutamine: Automatiseerige rakenduste juurutamine mitmele serverile, sealhulgas veebirakendused, andmebaasid ja mikroteenused. Mõelge rahvusvahelisele e-kaubanduse ettevõttele, mis juurutab uut koodi samaaegselt serveritesse Põhja-Ameerikas, Euroopas ja Aasias.
- Konfiguratsioonihaldus: Jõustage järjepidevaid konfiguratsioone kõigis süsteemides, sealhulgas operatsioonisüsteemi seaded, tarkvara versioonid ja turvapoliitikad. See võib hõlmata turvaseadete standardimist kõigis töötajate sülearvutites, olenemata nende asukohast.
- Turvalisuse automatiseerimine: Automatiseerige turvaülesandeid, nagu haavatavuste paigamine, tulemüüride haldamine ja süsteemide auditeerimine vastavuse tagamiseks. Näiteks turvapaikade automaatne rakendamine kõigile serveritele pärast haavatavuse teatavakstegemist, tagades kiire reageerimise potentsiaalsetele ohtudele.
- Andmebaasi administreerimine: Automatiseerige andmebaasi ülesandeid, nagu varundamine, taastamine ja skeemivärskendused. Finantsasutus võiks kasutada Ansible'i öiste andmebaaside varundamiste automatiseerimiseks mitmes geograafilises asukohas.
- Võrgu automatiseerimine: Automatiseerige võrgukonfiguratsiooni ülesandeid, nagu ruuterite, lülitite ja tulemüüride konfigureerimine. Kujutage ette telekommunikatsiooniettevõtet, mis kasutab Ansible'i võrguseadmete automaatseks konfigureerimiseks äsja paigaldatud mobiilimastides.
Kokkuvõte
Ansible on võimas ja mitmekülgne automatiseerimismootor, mis võib oluliselt parandada teie IT-operatsioonide tõhusust ja usaldusväärsust. Omandades Ansible'i põhimõisted, kasutades selle mooduleid ja rolle ning järgides parimaid tavasid, saate automatiseerida laia valikut ülesandeid ja sujuvamaks muuta oma taristu haldamist. Kuna organisatsioonid jätkavad DevOps'i ja pilvandmetöötluse omaksvõtmist, mängib Ansible üha olulisemat rolli automatiseerimise võimaldamisel ja digitaalse transformatsiooni kiirendamisel. Olenemata sellest, kas olete väike idufirma või suur globaalse haardega ettevõte, aitab Ansible teil saavutada suuremat tõhusust, järjepidevust ja paindlikkust oma IT-operatsioonides, mis viib lõpuks konkurentsieeliseni turul. Võti on alustada väikeselt, katsetada ja järk-järgult laiendada oma automatiseerimispingutusi, kui omandate kogemusi ja enesekindlust. Võtke omaks Ansible'i jõud ja avage oma IT-taristu täielik potentsiaal.