Pats programų kūrimas yra labai sudėtingas ir sudėtingas darbas, jau nekalbant apie konfigūracijų valdymą, diegimą ir sistemos priežiūrą keliuose serveriuose. IT aplinkai vis sudėtingėjant, pramonės šakoms ir technologijoms plečiantis, įmonės nuolat patenka į apmokestinamąjį aprūpinimo, kūrimo, diegimo ir kt.
Viena svarbi priemonė, dėl kurios visa tai atrodė kaip pasivaikščiojimas parke, yra Ansible. Jis yra galingas, naudingas, atvirojo kodo ir universalus, kai dirbama su keliais serveriais ir tiekėjais. Pagrindinis jo tikslas yra automatizuoti pasikartojančius ir apmokestinamus procesus, tokius kaip pirmiau minėti. Kadangi ją labai paprasta valdyti ir ji siūlo lanksčią be agentų architektūrą, ji palaipsniui tampa kūrėjo vadovu arba daugelio užduočių vadovu. Dabar aptarsime žaidimų knygeles, užduotis, inventorius ir modulius Galimos plėtros paslaugos.
Ansible architektūra: apžvalga
„Ansible“ veikia naudojant „push“ pagrįstą modelį, ty siunčia komandas tiesiai į sistemas, kurias norite valdyti per SSH (arba „WinRM“, skirtą „Windows“). Kadangi Ansible nereikalauja agentų, išvengiama sudėtingos papildomos programinės įrangos įdiegimo valdomuose mazguose, todėl jis idealiai tinka mastelio keitimui daugelyje serverių.
Kritiniai Ansible architektūros komponentai
- Valdymo mazgas: mašina arba sistema, kurioje įdiegta Ansible. Ansible atlieka arba vykdo komandas iš čia.
- Valdomus mazgus sudaro serveriai arba įrenginiai, kurie bus konfigūruojami, valdomi arba automatizuojami.
- Atsargos: failų rinkimo dokumentai, kuriuose galima apibrėžti ir iš anksto nustatyti tvarkomus užrašus.
- Moduliai: iš anksto nustatyti darbo vienetai arba nustatytos užduotys, kurios patenka į Ansible ir reikalaujančios veiksmų.
- Žaidimų knygos: YAML failai yra atsakingi už automatizavimo užduotis.
- Užduotys: atskiri veiksmai, atlikti arba atlikti valdomuose mazguose.
Pagrindinių sąvokų supratimas: žaidimų knygelės, užduotys, inventorius ir moduliai
Playbooks: The Heart of Ansible Automation
Žodis knygoje dažnai yra gana aiškus, tačiau, kad skaitytojams būtų lengviau tai padaryti, tai yra automatizavimo darbo eigos procesas arba apibrėžimas. Paprastai tai yra žmogaus skaitomi failai arba dokumentai, parašyti YAML, kurie veikia kaip vadovas, nurodantis būtinus veiksmus, kurių reikia norint pasiekti norimą sistemos būseną. Jame yra keletas spektaklių, skirtų šeimininkams ir grupėms.
Pagrindinės žaidimų knygos struktūros pavyzdys:
– pavadinimas: įdiekite „Nginx“ žiniatinklio serveriuose
šeimininkai: žiniatinklis
tapti: taip
užduotys:
– pavadinimas: Įdiekite Nginx
tinka:
Vardas: nginx
būsena: dabartis
– pavadinimas: įsitikinkite, kad Nginx veikia
paslauga:
Vardas: nginx
būsena: pradėta
Šis pavyzdys akivaizdžiai parodo:
- pavadinimas: pjesės aprašymas.
- hosts: Nurodo tikslinę serverių grupę (šiuo atveju žiniatinklį).
- tapti: Suteikia privilegijų eskalavimą (kaip sudo „Linux“).
- Užduotys: analizuoja arba apibrėžia veiksmus, kurie turi būti vykdomi pagrindiniuose kompiuteriuose.
Uždaviniai: Individualių veiksmų apibrėžimas
Užduotis, kaip minėta, yra veiksmas arba veiksmų vienetas, kurį reikės atlikti valdomuose mazguose, nes jie žymi modulius, nuosekliai vykdomus Ansible. Užduotyse paaiškinamas modulis ir jo argumentai.
Užduoties pavyzdys:
– pavadinimas: Įdiekite „Apache“.
skanus:
pavadinimas: httpd
būsena: dabartis
Šioje užduotyje:
- Yum modulis įdiegia httpd paketą (Apache) serveriuose, kuriuose veikia CentOS arba RHEL.
- būsena: esama užtikrina pakuotės įrengimą.
Užduotys gali apimti programinės įrangos diegimą, failų kopijavimą, paslaugų paleidimą iš naujo ir daugybę kitų veiksmų.
Atsargos: valdomų prieglobų tvarkymas
Galimas atsargų valdymas leidžia grupuoti arba suskirstyti pagrindinius kompiuterius į skirtingas kategorijas, todėl kiekvienai atskirtai serverių grupei lengva pritaikyti skirtingas konfigūracijas. Atsargos gali būti dviejų tipų: statinės, kurios yra tekstiniame faile, ir dinaminės, kurios gaunamos iš išorinio šaltinio.
Pagrindinio inventoriaus pavyzdys:
(žiniatinklis)
192.168.1.10
192.168.1.11
(db)
192.168.1.12
Šiame inventoriaus faile:
- (web) ir (db) yra priimančiosios grupės.
- IP adresai (arba pagrindinio kompiuterio pavadinimai) yra kiekvienos grupės serveriai.
Ansible turi nurodyti šį inventorių žaidimų knygoje.
Pavyzdys, taikymas pagal grupę:
– pavadinimas: konfigūruoti žiniatinklio serverius
šeimininkai: žiniatinklis
užduotys:
– pavadinimas: Įdiekite „Nginx“.
tinka:
Vardas: nginx
būsena: dabartis
Manoma, kad šis vadovas skirtas tik žiniatinklio grupės serveriams, kad būtų atlikti veiksmai.
Moduliai: statybiniai blokai arba Ansible stuburas
Galimi moduliai yra įrankiai arba pagalbiniai agentai, kurie atliks reikiamus veiksmus arba užduotis tam tikrame valdomų mazgų rinkinyje. Jie atlieka tokius veiksmus kaip programinės įrangos diegimas ir failų kopijavimas. Ansible turi daugybę integruotų modulių, tačiau prireikus galite sukurti ir savo pritaikytus modulius.
Dažniausiai naudojami moduliai
- apt arba yum: tvarkykite paketų diegimus („Debian“ / „Ubuntu“ ir „RHEL“ / „CentOS“).
- paslauga: paleiskite, sustabdykite arba paleiskite iš naujo paslaugas.
- Kopijuoti: nukopijuokite failus į nuotolinius serverius.
- vartotojas: kurkite arba tvarkykite vartotojo paskyras.
- failas: Tvarkyti leidimų klaidos Ansible ir failo atributai.
Modulio pavyzdys:
– pavadinimas: nukopijuokite HTML failą į žiniatinklio serverį
kopija:
src: /local/path/index.html
dest: /var/www/html/index.html
Ši specifinė užduotis naudoja kopijavimo modulį, kad perkeltų arba perkeltų failą iš valdymo mazgo į tikslinį serverį.
Viską sudėti: visas pavyzdys
Pavyzdys: žiniatinklio serverio (Apache) diegimas Ubuntu:
yaml
Nukopijuokite kodą
—
– pavadinimas: nustatykite „Apache“ žiniatinklio serverį
šeimininkai: žiniatinklis
tapti: taip
užduotys:
– pavadinimas: atnaujinti apt paketo indeksą
tinka:
update_cache: taip
– pavadinimas: Įdiekite „Apache“.
tinka:
vardas: apache2
būsena: dabartis
– pavadinimas: įsitikinkite, kad veikia „Apache“.
paslauga:
vardas: apache2
būsena: pradėta
– pavadinimas: kopijuoti svetainės failus
kopija:
src: /local/path/website/
dest: /var/www/html/
– pavadinimas: atidarykite 80 prievadą ugniasienėje
ufw:
taisyklė: leisti
prievadas: 80
proto: tcp
Paaiškinimas:
- Žaidimų knygelė skirta žiniatinklio grupei.
- Jis atlieka šias užduotis: atnaujina paketo indeksą, įdiegia „Apache“ ir palaiko paslaugos veikimą bei veikimą.
- Kopijavimo užduotis diegia svetainės statinius failus į serverį.
- Ugniasienė (ufw) atnaujinta HTTP srautui 80 prievade.
Galite paleisti šią knygelę naudodami žemiau esančią komandą:
ansible-playbook -i inventory.ini apache-setup.yml
Išplėstinės sąvokos: vaidmenys ir plano organizavimas
Kadangi jūsų žaidimų knygelės yra sudėtingesnės, turite jas suskirstyti į vaidmenis, kurie iš esmės yra daugkartinio naudojimo komponentai. Vaidmenys padeda supakuoti užduotis, kintamuosius ir tvarkykles, kad būtų lengviau pakartotinai naudoti.
Vaidmenų struktūros pavyzdys:
vaidmenys/
└── žiniatinklio serveris
├── užduotys
│ └── pagrindinis.yml
├── tvarkytojai
│ └── pagrindinis.yml
├── šablonai
│ └── index.html.j2
└── numatytosios nuostatos
└── pagrindinis.yml
Vaidmenys išlaiko viską modulinį ir surūšiuotą, net ir didelėje aplinkoje.
Išvada
Iki šiol surinkome ir supratome pagrindinius Ansible vienetus ir pagrindus bei jų vaidmenį automatizuojant pasikartojančias užduotis, tokias kaip diegimas, plėtra ir aprūpinimas. Ansible yra paprasčiausias būdas padėti atlikti svarbiausias užduotis, susijusias su programų kūrimu. Tai taip pat padeda mums suvokti svarbų automatizavimo vaidmenį infrastruktūros valdyme ir konfigūracijose. Jums tereikia giliai ir nuodugniai suprasti žaidimo knygas, užduotis, inventorių ir modulius.
Tik supratę tikrąjį ir tikrąjį šių pagrindinių komponentų ir savybių reikšmingumą ir vertę galite inicijuoti išankstinių IT užduočių automatizavimą. Tai ne tik sumažins klaidų, kurias sukelia rankinis įsikišimas, skaičių, bet ir išlaikys operacijų nuoseklumą ir vienodumą. Nesvarbu, ar valdote kelis serverius, ar šimtus įvairiose aplinkose, Ansible pateikia atsakymus dėl lengvo mastelio. Norėdami pasinaudoti šiuo ištekliu ir neįkainojamu įrankiu, susisiekite su mumis adresu (apsaugotas el. paštu) o visa kita palikite mums.