Lona umbhalo
Kusukela ekuzinikeleni kwesibili, noma iyiphi ikhodi iba yifa, ngoba imibono yokuqala iqala ukuhlukana neqiniso elinzima. Lokhu akukuhle futhi akukubi, kunikezwe okunzima ukuphikisana nakho futhi kufanele kuhlalwe nakho. Ingxenye yale nqubo ihlelwa kabusha. Ukwenza kabusha Ingqalasizinda Njengekhodi. Indaba ayiqale yokuthi ungayenza kanjani kabusha i-Ansible ngonyaka futhi ungahlanyi.
Ukuzalwa Kwefa
Usuku #1: I-Zero Yesiguli
Kwake kwaba khona iphrojekthi enemibandela. Yayineqembu lokuthuthukisa i-Dev kanye nonjiniyela be-Ops. Babexazulula inkinga efanayo: indlela yokukhipha amaseva nokusebenzisa uhlelo lokusebenza. Inkinga bekuwukuthi iqembu ngalinye liyixazulule le nkinga ngendlela yalo. Kuphrojekthi, kunqunywe ukuthi kusetshenziswe i-Ansible ukuvumelanisa ulwazi phakathi kweqembu le-Dev ne-Ops.
Usuku #89: Ukuzalwa Kwefa
Ngaphandle kokuqaphela ngokwabo, babefuna ukukwenza konke okusemandleni, kodwa kwaba yifa. Kwenzeka kanjani lokhu?
- Sinomsebenzi ophuthumayo lapha, asenze ukugebenga okungcolile bese sikulungisa.
- Awudingi ukubhala amadokhumenti futhi konke kucacile ukuthi kwenzekani lapha.
- Ngiyazi i-Ansible/Python/Bash/Terraform! Bheka ukuthi ngingavika kanjani!
- Ngingunjiniyela Ogcwele Ukuchichima Kwesitaki futhi ngikopishe lokhu kokuthi stackoverflow, angazi ukuthi kusebenza kanjani, kodwa kubukeka kupholile futhi kuxazulula inkinga.
Ngenxa yalokho, ungathola uhlobo olungaqondakali lwekhodi okungekho imibhalo yalo, akucaci ukuthi lenzani, noma iyadingeka, kodwa inkinga ukuthi udinga ukuyithuthukisa, ukuyishintsha, ukwengeza izinduku nezisekelo. , okwenza isimo sibe sibi nakakhulu.
- hosts: localhost
tasks:
- shell: echo -n Z >> a.txt && cat a.txt
register: output
delay: 1
retries: 5
until: not output.stdout.find("ZZZ")
Usuku #109: Ukuqwashisa ngenkinga
Imodeli ye-IaC eyaqalwa yaphinde yasetshenziswa ayisahlangabezani nezimfuneko zabasebenzisi/zebhizinisi/amanye amaqembu, futhi isikhathi sokwenza izinguquko kungqalasizinda siyayeka ukwamukelwa. Ngalesi sikhathi, ukuqonda kuyafika ukuthi sekuyisikhathi sokuthatha isinyathelo.
I-IaC yenza kabusha
Usuku #139: Ingabe udinga ngempela ukwenziwa kabusha?
Ngaphambi kokuba ugijimele ukwenza kabusha, kufanele uphendule imibuzo embalwa ebalulekile:
- Kungani udinga konke lokhu?
- Ingabe unaso isikhathi?
- Ingabe ulwazi lwanele?
Uma ungazi ukuthi ungayiphendula kanjani imibuzo, ukwenza kabusha kuzophela ngaphambi kokuthi kuqale, noma kungase kube kubi nakakhulu. Ngoba nginolwazi (
Usuku #149: Ilungiselela ukwenza kabusha
Into yokuqala ukulungiselela. Nquma ukuthi sizokwenzani. Ukuze senze lokhu, siyaxhumana, sithole izindawo ezinenkinga futhi sithole izindlela zokuzixazulula. Sirekhoda imiqondo ewumphumela ngandlela thile, ngokwesibonelo i-athikili ehlangene, ukuze kuthi lapho kuphakama umbuzo othi "yini engcono kakhulu?" noma "yikuphi okulungile?" Asilahlekanga indlela yethu. Esimweni sethu, sanamathela embonweni hlukanisa futhi ubuse: sihlakaza ingqalasizinda ibe yizicucu/izitini ezincane. Le ndlela ikuvumela ukuthi uthathe ingqalasizinda ehlukile, uqonde ukuthi yenzani, uyimboze ngokuhlolwa futhi uyiguqule ngaphandle kokwesaba ukuphula noma yini.
Kuvele ukuthi ukuhlolwa kwengqalasizinda kuba yisisekelo futhi lapha kufanele ukubalula ipiramidi yokuhlola ingqalasizinda. Umbono ofanayo ncamashí osathuthukiswayo, kodwa wengqalasizinda: sisuka ekuhlolweni okusheshayo okushibhile okuhlola izinto ezilula, njengokuhlehlisa, siye ekuhloleni okubizayo okuphelele okusebenzisa yonke ingqalasizinda.
Imizamo yokuhlola enengqondo
Ngaphambi kokuthi sichaze ukuthi sihlanganise kanjani ukuhlolwa kwe-Ansible kuphrojekthi, ngizochaza imizamo nezindlela engibe nethuba lokuzisebenzisa ekuqaleni ukuze ngiqonde umongo wezinqumo ezenziwe.
Usuku No. -997: Ukunikezwa kwe-SDS
Isikhathi sokuqala lapho ngivivinya i-Ansible kwakuphrojekthi yokuthuthukisa i-SDS (Isitoreji Esichazwe Ngesofthiwe). Kunesihloko esihlukile ngalesi sihloko
Usuku # -701: Ikhishi elisebenzayo nelivivinyayo
Ukuthuthukiswa kombono wokuhlola Okufanelekile kwaba ukusetshenziswa kwamathuluzi esenziwe ngomumo, okuyikhishi lokuhlola / ikhishi-ci kanye ne-inspec. Ukukhetha kwanqunywa ulwazi lukaRuby (ukuthola imininingwane eyengeziwe, bheka isihloko esithi Habré:
Ngokuvamile, isixazululo sasebenza, kodwa kwakukhona i-sediment ngenxa ye-heterogeneity. Lapho inani labantu abahloliwe lenyuswa laba yizindima eziyisisekelo eziyi-13 kanye nezindima ezi-2 zemeta ezihlanganisa izindima ezincane, kungazelelwe ukuhlolwa kwaqala ukusebenza imizuzu engama-70, okucishe kube izikhathi ezi-2 ubude. Kwakunzima ukukhuluma ngezinqubo ze-XP (uhlelo oludlulele) ngoba... akekho ofuna ukulinda imizuzu engu-70. Lesi kwakuyisizathu sokushintsha indlela yokwenza
Usuku # -601: Ansible kanye ne-molecule
Ngokucatshangwayo, lokhu kufana ne-testkitchen, kuphela sihambise ukuhlolwa kwendima ku-docker futhi sashintsha isitaki. Ngenxa yalokho, isikhathi sancishiswa saba imizuzu engu-20-25 ezinzile ngezindima ezingu-7.
Ngokwandisa isibalo sezindima ezihloliwe siye ku-17 futhi sihlanganise izindima ezingama-45, sisebenzise lokhu ngemizuzu engama-28 ezigqileni ezi-2 ze-jenkins.
Usuku #167: Ukwengeza izivivinyo ezifanelekile kuphrojekthi
Ngokunokwenzeka, ngeke kwenzeke ukwenza umsebenzi wokuvuselela ngokushesha. Umsebenzi kufanele ulinganiseke ukuze ukwazi ukuwuhlephula ube yizicucu ezincane futhi udle indlovu isiqeshana ngesipuni. Kumele kube nokuqonda ukuthi ngabe uhamba ngendlela efanele yini, ukuthi uzohamba isikhathi esingakanani.
Ngokuvamile, akunandaba ukuthi kuzokwenziwa kanjani, ungabhala ephepheni, ungabeka izitika ekhabetheni, ungakha imisebenzi ku-Jira, noma ungavula i-Google Amadokhumenti bese ubhala isimo samanje. Lapho. Imilenze ikhula eqinisweni lokuthi le nqubo ayisheshi, izoba yinde futhi ikhathele. Akunakwenzeka ukuthi noma ubani afune ukuthi ushise imibono, ukhathele, futhi ukhungatheke ngesikhathi sokwenza kabusha.
I-refactoring ilula:
- Yidla.
- Ukulala.
- Ikhodi.
- Ukuhlolwa kwe-IaC.
- Phinda
futhi siyakuphinda lokhu size sifinyelele umgomo esihlosiwe.
Kungase kungenzeki ukuqala ukuhlola yonke into ngaso leso sikhathi, ngakho-ke umsebenzi wethu wokuqala bekuwukuqala ngokuhlanganisa nokubheka i-syntax.
Usuku #181: I-Green Build Master
I-Linting yisinyathelo sokuqala esibheke ku-Green Build Master. Lokhu ngeke kuphule cishe noma yini, kodwa kuzokuvumela ukuthi ulungise izinqubo futhi wenze ukwakha okuluhlaza ku-Jenkins. Umqondo uwukuthuthukisa imikhuba phakathi kweqembu:
- Ukuhlolwa okubomvu kubi.
- Ngize ukuzolungisa okuthile futhi ngesikhathi esifanayo ngenza ikhodi ibe ngcono kancane kunangaphambi kwakho.
Usuku #193: Ukusuka ekuhlanganisweni kuya ekuhlolweni kweyunithi
Ngemva kokwakha inqubo yokuthola ikhodi ku-master, ungaqala inqubo yokuthuthukiswa kwesinyathelo ngesinyathelo - ukufaka esikhundleni se-lining ngezindima zokuqalisa, ungakwenza ngisho ngaphandle kokungazi lutho. Udinga ukuqonda ukuthi zisebenza kanjani izindima nokuthi zisebenza kanjani.
Usuku #211: Kusukela kuyunithi kuya ekuhlolweni kokuhlanganisa
Uma izindima eziningi zihlanganiswa nokuhlolwa kweyunithi futhi yonke into ifakwe kumugqa, ungaqhubekela ekungezeni ukuhlolwa kokuhlanganisa. Labo. ukuhlola hhayi isitini esisodwa kwingqalasizinda, kodwa inhlanganisela yazo, isibonelo, ukucushwa kwesibonelo esigcwele.
Sisebenzisa ama-jenkins, sikhiqize izigaba eziningi ezihlanganisa izindima/izincwadi zokudlala ngokuhambisana, kwase kuba ukuhlolwa kweyunithi ezitsheni, futhi ekugcineni ukuhlolwa kokuhlanganisa.
Jenkins + Docker + Ansible = Izivivinyo
- Hlola i-repo futhi ukhiqize izigaba zokwakha.
- Qalisa izigaba ze-lint playbook ngokuhambisana.
- Qalisa izigaba zendima ye-lint ngokuhambisana.
- Qalisa izigaba zendima yokuhlola i-syntax ngokuhambisana.
- Qalisa izigaba zendima yokuhlola ngokuhambisana.
- Indima ye-Lint.
- Hlola ukuncika kwezinye izindima.
- Hlola i-syntax.
- Dala isibonelo se-docker
- Qalisa i-molecule/default/playbook.yml.
- Hlola ukungabi namandla.
- Yenza izivivinyo zokuhlanganisa
- Qeda
Usuku #271: Isici Sebhasi
Ekuqaleni, ukulungiswa kabusha kwenziwa yiqembu elincane labantu ababili noma abathathu. Babuyekeze ikhodi ku-master. Ngokuhamba kwesikhathi, ithimba lathuthukisa ulwazi lwendlela yokubhala ikhodi nokubuyekezwa kwekhodi kwaba nesandla ekusabalaliseni ulwazi mayelana nengqalasizinda kanye nendlela esebenza ngayo. Okugqamile lapha kwaba ukuthi ababuyekezi bakhethwa ngamunye ngamunye, ngokohlelo, i.e. ngokwezinga elithile lamathuba uzogibela engxenyeni entsha yengqalasizinda.
Futhi kufanele kube ntofontofo lapha. Kulula ukwenza isibuyekezo, ubone ngaphakathi kohlaka lwamuphi umsebenzi owenziwe, kanye nomlando wezingxoxo. Sihlanganise i-jenkins + bitbucket + jira.
Kepha ngenxa yalokho, ukubuyekezwa akuyona i-panacea; ngandlela thile, singene kukhodi enkulu, esenze izivivinyo ze-flop:
- get_url:
url: "{{ actk_certs }}/{{ item.1 }}"
dest: "{{ actk_src_tmp }}/"
username: "{{ actk_mvn_user }}"
password: "{{ actk_mvn_pass }}"
with_subelements:
- "{{ actk_cert_list }}"
- "{{ actk_certs }}"
delegate_to: localhost
- copy:
src: "{{ actk_src_tmp }}/{{ item.1 }}"
dest: "{{ actk_dst_tmp }}"
with_subelements:
- "{{ actk_cert_list }}"
- "{{ actk_certs }}"
Base beyilungisa, kodwa inzika yasala.
get_url:
url: "{{ actk_certs }}/{{ actk_item }}"
dest: "{{ actk_src_tmp }}/{{ actk_item }}"
username: "{{ actk_mvn_user }}"
password: "{{ actk_mvn_pass }}"
loop_control:
loop_var: actk_item
with_items: "{{ actk_cert_list }}"
delegate_to: localhost
- copy:
src: "{{ actk_src_tmp }}/{{ actk_item }}"
dest: "{{ actk_dst_tmp }}"
loop_control:
loop_var: actk_item
with_items: "{{ actk_cert_list }}"
Usuku #311: Ukusheshisa ukuhlolwa
Ngokuhamba kwesikhathi, kwaba nokuhlolwa okwengeziwe, ukwakhiwa kwahamba kancane, kwaze kwafika ehoreni esimweni esibi kakhulu. Kwenye yemidlalo ye-retro bekukhona umusho othi “kuhle ukuthi kube nezivivinyo, kepha ziyacotha.” Ngenxa yalokho, sikuyekile ukuhlola kokuhlanganisa emishinini ebonakalayo futhi sazivumelanisa ne-Docker ukuze isheshe. Siphinde sashintsha i-testinfra safaka isiqinisekisi esisebenzayo ukuze sinciphise inani lamathuluzi asetshenzisiwe.
Ukukhuluma ngokuqinile, kwakukhona isethi yezinyathelo:
- Shintshela ku-docker.
- Susa ukuhlola indima, okuyimpinda ngenxa yokuncika.
- Khulisa isibalo sezigqila.
- Hlola uhlelo lokusebenza.
- Ukukwazi ukuhlanganisa KONKE endaweni ngomyalo owodwa.
Ngenxa yalokho, i-Pipeline on jenkins nayo yahlanganiswa
- Khiqiza izigaba zokwakha.
- Hlanganisa konke ngokuhambisana.
- Qalisa izigaba zendima yokuhlola ngokuhambisana.
- Qedela.
Izifundo ezifundiwe
Gwema ukuguquguquka komhlaba wonke
I-Ansible isebenzisa okuguquguqukayo komhlaba wonke, kukhona ingxenye yokusebenza efomini
Ake ngenze isibonelo. Ake senze role_a
и role_b
# cat role_a/defaults/main.yml
---
msg: a
# cat role_a/tasks/main.yml
---
- debug:
msg: role_a={{ msg }}
# cat role_b/defaults/main.yml
---
msg: b
# cat role_b/tasks/main.yml
---
- set_fact:
msg: b
- debug:
msg: role_b={{ msg }}
- hosts: localhost
vars:
msg: hello
roles:
- role: role_a
- role: role_b
tasks:
- debug:
msg: play={{msg}}
Okuhlekisayo ukuthi umphumela wezincwadi zokudlala uzoncika ezintweni ezingabonakali ngaso sonke isikhathi, njengokulandelana kwezindima ezibhalwe ngazo. Ngeshwa, lolu uhlobo lwe-Ansible futhi into engcono kakhulu engenziwa ukusebenzisa uhlobo oluthile lwesivumelwano, isibonelo, ngaphakathi kwendima, sebenzisa kuphela okuguquguqukayo okuchazwe kule ndima.
ABABI: sebenzisa i-global variable.
# cat roles/some_role/tasks/main.yml
---
debug:
var: java_home
EZINHLE: V defaults
chaza okuguquguqukayo okudingekayo futhi kamuva ukusebenzise kuphela.
# cat roles/some_role/defaults/main.yml
---
r__java_home:
"{{ java_home | default('/path') }}"
# cat roles/some_role/tasks/main.yml
---
debug:
var: r__java_home
Okuguquguqukayo kwendima yesiqalo
ABABI: sebenzisa i-global variable.
# cat roles/some_role/defaults/main.yml
---
db_port: 5432
EZINHLE: Ezindimeni zezinto eziguquguqukayo, sebenzisa okuguquguqukayo okunesiqalo esinegama lendima, lokhu, ngokubheka i-inventory, kuzokwenza kube lula ukuqonda ukuthi kwenzekani.
# cat roles/some_role/defaults/main.yml
---
some_role__db_port: 5432
Sebenzisa i-loop control variable
ABABI: Sebenzisa ukuguquguquka okujwayelekile kumaluphu item
, uma lo msebenzi/ibhuku lokudlala lifakiwe ndawana thize, lokhu kungase kuholele ekuziphatheni okungalindelekile
---
- hosts: localhost
tasks:
- debug:
msg: "{{ item }}"
loop:
- item1
- item2
EZINHLE: Chaza kabusha okuguquguqukayo ku-loop usebenzisa loop_var
.
---
- hosts: localhost
tasks:
- debug:
msg: "{{ item_name }}"
loop:
- item1
- item2
loop_control:
loop_var: item_name
Hlola okokufaka okuguquguqukayo
Sivumile ukusebenzisa iziqalo eziguquguqukayo; ngeke kube ukulingana ukuhlola ukuthi zichazwe ngendlela esilindele ngayo futhi, ngokwesibonelo, azizange zibhalwe inani elingenalutho.
EZINHLE: Hlola okuguquguqukayo.
- name: "Verify that required string variables are defined"
assert:
that: ahs_var is defined and ahs_var | length > 0 and ahs_var != None
fail_msg: "{{ ahs_var }} needs to be set for the role to work "
success_msg: "Required variables {{ ahs_var }} is defined"
loop_control:
loop_var: ahs_var
with_items:
- ahs_item1
- ahs_item2
- ahs_item3
Gwema izichazamazwi zama-hashes, sebenzisa isakhiwo esiyisicaba
Uma indima ilindele i-hashi/isichazamazwi kwelinye lamapharamitha alo, khona-ke uma sifuna ukushintsha ipharamitha eyodwa yengane, sizodinga ukweqa yonke i-hashi/isichazamazwi, okuzokwandisa ubunkimbinkimbi bokucushwa.
ABABI: Sebenzisa i-hash/isichazamazwi.
---
user:
name: admin
group: admin
EZINHLE: Sebenzisa isakhiwo esiguquguqukayo esiyisicaba.
---
user_name: admin
user_group: "{{ user_name }}"
Dala izincwadi zokudlala nezindima ezingenangqondo
Izindima kanye nezincwadi zokudlala kumele zibe yizithutha, ngoba kunciphisa ukukhukhuleka kokumisa kanye nokwesaba ukuphula okuthile. Kepha uma usebenzisa i-molecule, lokhu kungukuziphatha okuzenzakalelayo.
Gwema ukusebenzisa amamojula wegobolondo lomyalo
Ukusebenzisa imojula yegobolondo kubangela ipharadigm yencazelo ebalulekile, esikhundleni se-declarative, okuwumongo we-Ansible.
Hlola izindima zakho nge-molecule
I-Molecule yinto eguquguqukayo kakhulu, ake sibheke izimo ezimbalwa.
I-Molecule Izimo Eziningi
В molecule.yml
esigabeni platforms
ungachaza ababungazi abaningi ongabaphakela.
---
driver:
name: docker
platforms:
- name: postgresql-instance
hostname: postgresql-instance
image: registry.example.com/postgres10:latest
pre_build_image: true
override_command: false
network_mode: host
- name: app-instance
hostname: app-instance
pre_build_image: true
image: registry.example.com/docker_centos_ansible_tests
network_mode: host
Ngakho, laba Sebawoti kungaba ke converge.yml
sebenzisa:
---
- name: Converge all
hosts: all
vars:
ansible_user: root
roles:
- role: some_role
- name: Converge db
hosts: db-instance
roles:
- role: some_db_role
- name: Converge app
hosts: app-instance
roles:
- role: some_app_role
Isiqinisekisi esibonakalayo
Ku-molecule kungenzeka ukuthi usebenzise i-ansible ukuhlola ukuthi isibonelo simiswe ngendlela efanele, ngaphezu kwalokho, lokhu kube okumisiwe kusukela ekukhululweni kwesi-3. Ayiguquguquki njenge testinfra/inspec, kodwa singabheka ukuthi okuqukethwe kwefayela kuyafana yini nesikulindele:
---
- name: Verify
hosts: all
tasks:
- name: copy config
copy:
src: expected_standalone.conf
dest: /root/wildfly/bin/standalone.conf
mode: "0644"
owner: root
group: root
register: config_copy_result
- name: Certify that standalone.conf changed
assert:
that: not config_copy_result.changed
Noma sebenzisa isevisi, linda ukuthi itholakale bese wenza ukuhlolwa kwentuthu:
---
- name: Verify
hosts: solr
tasks:
- command: /blah/solr/bin/solr start -s /solr_home -p 8983 -force
- uri:
url: http://127.0.0.1:8983/solr
method: GET
status_code: 200
register: uri_result
until: uri_result is not failed
retries: 12
delay: 10
- name: Post documents to solr
command: /blah/solr/bin/post -c master /exampledocs/books.csv
Faka i-logic eyinkimbinkimbi kumamojula nama-plugin
I-Ansible Advocates indlela yokumemezela, ngakho-ke uma wenza ikhodi yegatsha, ukuguqulwa kwedatha, amamojula wegobolondo, ikhodi iba nzima ukuyifunda. Ukuze ulwe nalokhu futhi ugcine kulula ukukuqonda, ngeke kube yinto engafanele ukulwa nalobu bunzima ngokwakha awakho amamojula.
Fingqa Amathiphu & Amacebo
- Gwema ukuguquguquka komhlaba wonke.
- Okuguquguqukayo kwendima yesiqalo.
- Sebenzisa i-loop control variable.
- Hlola okokufaka okuguquguqukayo.
- Gwema izichazamazwi zama-hashes, sebenzisa isakhiwo esiyisicaba.
- Dala izincwadi zokudlala nezindima ezingenangqondo.
- Gwema ukusebenzisa amamojula wegobolondo lomyalo.
- Hlola izindima zakho nge-molecule.
- Faka i-logic eyinkimbinkimbi kumamojula nama-plugin.
isiphetho
Awukwazi ukuvele uhambe uyokwenza kabusha ingqalasizinda kuphrojekthi, noma ngabe une-IaC. Lena inqubo ende edinga isineke, isikhathi kanye nolwazi.
Links
- futhi ama-Slides
Indlela yokuhlola i-Ansible futhi ungabi namantongomane - Ividiyo
Indlela yokuhlola i-Ansible futhi ungabi namantongomane Engikufundile ekuhloleni imigqa engu-200 yekhodi yengqalasizinda Okufanelekile: Ukufuduka kokucushwa kwe-120 VM kusuka ku-Coreos kuya ku-Centos ezinyangeni eziyi-18 Ungawaphula kanjani amabhayisikili phezu kwezinduku lapho uhlola ukusatshalaliswa kwakho Ngihlole ukuthi ungakwazi noma ingabe abahleli bezinhlelo ze-YML bayaphupha ngokuhlola I-Ansible? Uhlu lwamandatshana amangalisayo okuhlola i-IaC, izinkulumo nezixhumanisi okuthunyelwe kwesiphambano isiZulu version
UPD1 2020.05.01 20:30 - Ukuze uthole iphrofayela eyinhloko yezincwadi zokudlala ongazisebenzisa callback_whitelist = profile_tasks
ukuqonda ukuthi yini ngempela esebenza isikhathi eside. Bese sidlula
UPD2 2020.05.03 16:34 -
Source: www.habr.com