Ichi ndicho chinyorwa
Kutanga kubva pakuzvipira kwechipiri, chero kodhi inova nhaka, nekuti pfungwa dzekutanga dzinotanga kusiyana kubva pachokwadi chakakasharara. Izvi hazvina kunaka kana kushata, kupihwa kunonetsa kupokana uye kunofanirwa kugara nako. Chikamu cheichi chiitiko chiri refactoring. Refactoring Infrastructure seCode. Rega nyaya itange pakuita refactor Ansible mugore uye kwete kupenga.
Kuberekwa Kwenhaka
Zuva #1: Murwere Zero
Pane imwe nguva pakanga pane purojekiti yemamiriro ezvinhu. Yakanga iine timu yekuvandudza yeDev uye Ops mainjiniya. Ivo vanga vachigadzirisa dambudziko rimwechete: maitiro ekuisa maseva uye kumhanyisa application. Dambudziko nderekuti chikwata chimwe nechimwe chakagadzirisa dambudziko iri nenzira yaro. Pachirongwa ichi, zvakasarudzwa kushandisa Ansible kuwiriranisa ruzivo pakati pezvikwata zveDev neOps.
Zuva #89: Kuberekwa Kwenhaka
Pasina kuzviona ivo, vakada kuzviita nepavaigona napo, asi yakazova nhaka. Izvi zvinoitika sei?
- Tine basa rekukurumidzira pano, ngatiite tsvina yekuvhara tozogadzirisa.
- Iwe haufanirwe kunyora zvinyorwa uye zvese zviri pachena zviri kuitika pano.
- Ndinoziva Ansible/Python/Bash/Terraform! Tarisa kuti ndinganzvenga sei!
- Ini ndiri Full Stack Overflow Developer uye ndakakopa izvi kubva stackoverflow, handizive kuti inoshanda sei, asi inotaridzika inotonhorera uye inogadzirisa dambudziko.
Nekuda kweizvozvo, iwe unogona kuwana isinganzwisisike mhando yekodhi iyo isina zvinyorwa, hazvisi pachena zvazvinoita, kana zvichidikanwa, asi dambudziko nderekuti iwe unofanirwa kuigadzira, kuishandura, kuwedzera madondoro uye zvinotsigira. , zvichiita kuti zvinhu zvitonyanya kuipa.
- hosts: localhost
tasks:
- shell: echo -n Z >> a.txt && cat a.txt
register: output
delay: 1
retries: 5
until: not output.stdout.find("ZZZ")
Zuva #109: Kuziva nezvedambudziko
Iyo yekutanga yakaumbwa uye yakaitwa IaC modhi haichazadzisa zvinodiwa nevashandisi / bhizinesi / zvimwe zvikwata, uye nguva yekuita shanduko kune zvivakwa inomira kugamuchirwa. Panguva ino, kunzwisisa kunouya kuti inguva yekuita chiito.
IaC refactoring
Zuva #139: Iwe unonyatsoda refactoring?
Usati wamhanyira kune refactor, unofanirwa kupindura akati wandei emibvunzo yakakosha:
- Sei uchida zvose izvi?
- Une nguva here?
- Ruzivo rwakakwana here?
Kana iwe usingazivi mapinduriro emibvunzo, ipapo refactoring inopera isati yatombotanga, kana kuti inogona kutowedzera. Nokuti ndine experience (
Zuva #149: Kugadzirira refactoring
Chinhu chekutanga kugadzirira. Sarudza chatichaita. Kuti tiite izvi, tinotaurirana, tsvaga nzvimbo dzine dambudziko uye tinoona nzira dzekudzigadzirisa. Isu tinorekodha zvinokonzeresa pfungwa neimwe nzira, semuenzaniso chinyorwa mukuwirirana, kuti kana mubvunzo wamuka "chii chakanakisa?" kana kuti "ndeipi yakarurama?" Hatina kurasika nzira. Muchiitiko chedu, takanamatira kune pfungwa kamura uye utonge: tinoputsa zvivakwa kuita zvidimbu zvidiki / zvidhinha. Iyi nzira inokubvumira kutora chidimbu chega chega chekugadzirisa, kunzwisisa zvachinoita, kuchivhara nemiedzo uye kuchishandura pasina kutya kuputsa chero chinhu.
Zvinoitika kuti kuyedzwa kwezvivakwa kunova ibwe rekona uye pano zvakakodzera kutaura piramidhi yekuyedza zvivakwa. Chaizvo iyo pfungwa iri mukusimudzira, asi yezvivakwa: isu tiri kubva kune yakachipa yekukurumidza bvunzo inotarisa zvinhu zvakapusa, senge indentation, kuenda kune inodhura yakazara-yakazara bvunzo inoendesa iyo yese zvivakwa.
Ansible kuedza kuedza
Tisati taenda kunotsanangura kuti takafukidza sei Ansible bvunzo pachirongwa, ini ndichatsanangura kuedza uye nzira dzandakawana mukana wekushandisa pakutanga kuti ndinzwisise mamiriro ezvisarudzo zvakaitwa.
Zuva Nhamba -997: SDS kugoverwa
Kekutanga pandakaedza Ansible yaive purojekiti yekugadzira SDS (Software Defined Storage). Pane imwe nyaya iri padivi penyaya iyi
Zuva # -701: Inogoneka uye yekuyedza kicheni
Kuvandudzwa kweAnsible yekuyedza zano kwaive kushandiswa kwezvishandiso zvakagadzirirwa, zvinoti test kitchen / kitchen-ci uye inspector. Sarudzo yakatemwa neruzivo rwaRuby (kuti uwane rumwe ruzivo, ona chinyorwa paHabrΓ©:
Kazhinji, mhinduro yakashanda, asi pakanga pane imwe sediment nekuda kwehterogeneity. Apo nhamba yevanhu vakaedzwa yakawedzerwa kusvika ku13 mabasa ekutanga uye 2 meta mabasa achibatanidza mabasa maduku, ipapo kamwe-kamwe miedzo yakatanga kushanda kwemaminitsi makumi manomwe, iyo ingangoita kaviri. Zvakanga zvakaoma kutaura nezve XP (yakanyanya programming) maitiro nekuti... hapana anoda kumirira 70 maminetsi. Ichi chaive chikonzero chekuchinja maitiro
Zuva # -601: Ansible uye molecule
Sezvineiwo, izvi zvakafanana netestkitchen, chete isu takafambisa bvunzo kudocker uye tikachinja stack. Somugumisiro, nguva yakaderedzwa kusvika yakagadzikana 20-25 maminitsi e7 mabasa.
Nekuwedzera huwandu hwemabasa akaedzwa kusvika ku17 uye nekuisa 45 mabasa, takamhanya izvi mumaminitsi makumi maviri nemasere pavaranda vaviri vejenkins.
Zuva #167: Kuwedzera Ansible bvunzo kupurojekiti
Zvingangodaro, hazvizogone kuita basa refactoring nekukurumidza. Basa racho rinofanira kuyerwa kuitira kuti ugone kuipwanya kuita zvidimbu zviduku uye kudya nzou chidimbu nechidimbu ne teaspoon. Panofanira kuva nekunzwisisa kuti uri kufamba nenzira kwayo here, kuti uende kwenguva yakareba sei.
Kazhinji, hazvina basa kuti zvichaitwa sei, unogona kunyora pabepa, unogona kuisa zvimiti pawadhiropu, unogona kugadzira mabasa muJira, kana unogona kuvhura Google Docs uye nyora pasi chimiro chazvino. ikoko. Makumbo anokura kubva pakuti nzira yacho haisi pakarepo, ichava yakareba uye inotyisa. Hazvigoneki kuti chero munhu anoda kuti iwe upise kunze kwemazano, kuneta, uye nekuremerwa panguva yekudzokorora.
Iyo refactoring iri nyore:
- Edya.
- Kurara.
- Coded.
- IaC bvunzo.
- dzokorora
uye tinodzokorora izvi kusvikira tasvika pachinangwa chakatarwa.
Zvingave zvisingaite kutanga kuyedza zvese ipapo ipapo, saka basa redu rekutanga raive rekutanga nekuisa uye kutarisa syntax.
Zuva #181: Green Build Master
Linting idanho diki rekutanga rakananga kuGreen Build Master. Izvi hazviputse chero chero chinhu, asi zvinokutendera iwe kugadzirisa maitiro uye kugadzira girinhi inovaka muJenkins. Pfungwa ndeyekukudziridza maitiro pakati pechikwata:
- Maedzo matsvuku akaipa.
- Ndakauya kuzogadzirisa chimwe chinhu uye panguva imwe chete ita kuti code ive nani zvishoma pane zvayakanga iri pamberi pako.
Zuva #193: Kubva pakusungirirwa kuenda kumayuniti bvunzo
Mushure mekuvaka maitiro ekuwana iyo kodhi mune tenzi, unogona kutanga maitiro ekuvandudza nhanho-ne-nhanho - kutsiva linting nekutanga mabasa, unogona kuzviita usina idempotency. Iwe unofanirwa kunzwisisa mashandisirwo emabasa uye kuti anoshanda sei.
Zuva #211: Kubva payuniti kuenda kumiyedzo yekubatanidza
Kana mabasa mazhinji akafukidzwa neyuniti bvunzo uye zvese zvakaiswa, unogona kuenderera mberi nekuwedzera bvunzo dzekubatanidza. Avo. kuyedza kwete chidhinha chimwe chete muzvivakwa, asi musanganiswa wavo, semuenzaniso, yakazara muenzaniso gadziriso.
Tichishandisa jenkins, takagadzira nhanho dzakawanda dzakarongedza mabasa / mabhuku ekutamba nenzira yakafanana, ipapo bvunzo dzeyuniti mumidziyo, uye pakupedzisira bvunzo dzekubatanidza.
Jenkins + Docker + Ansible = Miedzo
- Checkout repo uye gadzira matanho ekuvaka.
- Mhanyai lint playbook nhanho mukuwirirana.
- Mhanyai nhanho dzezviyero zvakaenzana.
- Mhanyai syntax cheki nhanho dzezvimiro zvakafanana.
- Mhanyai nhanho dzezviyedzo mukufambirana.
- Lint basa.
- Tarisa kutsamira pane mamwe mabasa.
- Tarisa syntax.
- Gadzira docker muenzaniso
- Mhanyai molecule/default/playbook.yml.
- Tarisa kusava nesimba.
- Mhanya bvunzo dzekubatanidza
- pedza
Zuva #271: Bhazi Factor
Pakutanga, refactoring yakaitwa neboka diki revanhu vaviri kana vatatu. Vakaongorora kodhi mune tenzi. Nekufamba kwenguva, timu yakagadzira ruzivo rwekunyora kodhi uye ongororo yekodhi yakabatsira mukuparadzira ruzivo nezvezvivakwa uye kuti zvinoshanda sei. Chinonyanya kukosha apa chaiva chokuti vaongorori vakasarudzwa mumwe nomumwe, maererano nehurongwa, i.e. neimwe dhigirii yemukana iwe uchakwira muchikamu chitsva chezvivakwa.
Uye inofanira kuva yakasununguka pano. Zviri nyore kuita wongororo, ona mukati megadziriro yebasa randakaitwa, uye nhoroondo yenhaurirano. Isu takabatanidza jenkins + bitbucket + jira.
Asi nekudaro, ongororo haisi panacea; neimwe nzira, takapinda mune master code, izvo zvakaita kuti tiite flop bvunzo:
- 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 }}"
Vakabva vagadzirisa, asi mavhu akasara.
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 }}"
Zuva #311: Kumhanyisa bvunzo
Nekufamba kwenguva, pakanga paine mimwe miedzo, kuvaka kwakamhanya zvishoma, kusvika awa mune yakaipisisa kesi. Pane imwe retros pakanga paine mutsara wakaita sekuti "zvakanaka kuti kune bvunzo, asi dzinononoka." Nekuda kweizvozvo, isu takasiya bvunzo dzekubatanidza pamakina chaiwo uye tikazvigadzirisa kuti Docker iite nekukurumidza. Isu takatsiva zvakare testinfra neansible verifier kuti tideredze huwandu hwematurusi anoshandiswa.
Kutaura zvazviri, pakanga pane seti yematanho:
- Chinja kune docker.
- Bvisa basa rekuyedza, iro rinodzokororwa nekuda kwekutsamira.
- Wedzera nhamba yevaranda.
- Test run order.
- Kugona kubata VOSE munharaunda nemurairo mumwe.
Nekuda kweizvozvo, Pipeline pajenkins yaivewo yakabatana
- Gadzira matanho ekuvaka.
- Rongedza zvese zvakaenzana.
- Mhanyai nhanho dzezviyedzo mukufambirana.
- Pedza.
Zvidzidzo zvadzidza
Dzivisa kuchinja kwepasi rose
Ansible inoshandisa pasi rose variables, pane chikamu chekushanda muchimiro
Rega ndikupe muenzaniso. Ngatiitei 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}}
Chinhu chinosekesa ndechekuti mhedzisiro yemabhuku ekutamba inotsamira pazvinhu zvisingawanzo kuoneka, senge kurongeka kwakanyorwa mabasa. Zvinosuruvarisa, ichi ndicho chimiro cheAnsible uye chinhu chakanakisisa chinogona kuitwa kushandisa imwe rudzi rwechibvumirano, semuenzaniso, mukati mechikamu, shandisa chete shanduko inotsanangurwa mubasa iri.
BAD: shandisa global variable.
# cat roles/some_role/tasks/main.yml
---
debug:
var: java_home
KUGONA: V defaults
tsanangura zvinodiwa zvakasiyana uye gare gare shandisa iwo chete.
# 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
Prefix basa variables
BAD: shandisa global variable.
# cat roles/some_role/defaults/main.yml
---
db_port: 5432
KUGONA: Mumabasa ekusiyana-siyana, shandisa mabhizaunu ane prefix nezita rebasa; izvi, nekutarisa panheyo, zvinozoita kuti zvive nyore kunzwisisa zviri kuitika.
# cat roles/some_role/defaults/main.yml
---
some_role__db_port: 5432
Shandisa loop control variable
BAD: Shandisa yakajairwa kusiyanisa muzvishwe item
, kana basa iri / bhuku rekutamba rakaiswa pane imwe nzvimbo, izvi zvinogona kutungamirira kumaitiro asingatarisirwi
---
- hosts: localhost
tasks:
- debug:
msg: "{{ item }}"
loop:
- item1
- item2
KUGONA: Tsanangurazve shanduko mu loop kuburikidza loop_var
.
---
- hosts: localhost
tasks:
- debug:
msg: "{{ item_name }}"
loop:
- item1
- item2
loop_control:
loop_var: item_name
Tarisa mabhii ekuisa
Takabvumirana kushandisa maprefixes akasiyana-siyana; hazvingave zvakanyanyisa kutarisa kuti zvinotsanangurwa sezvatinotarisira uye, semuenzaniso, hazvina kupfuudzwa nemutengo usina chinhu.
KUGONA: Tarisa zvakasiyana.
- 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
Dzivisa hashes dictionaries, shandisa flat chimiro
Kana basa rinotarisira hashi / dictionary mune imwe yemiganhu yayo, zvino kana tichida kushandura imwe yemwana parameters, tichada kudarika iyo yose hashi / dictionary, iyo inowedzera kugadzirisa kuoma.
BAD: Shandisa hashi/duramazwi.
---
user:
name: admin
group: admin
KUGONA: Shandisa chimiro chakati sandara.
---
user_name: admin
user_group: "{{ user_name }}"
Gadzira mabhuku ekutamba asina basa & mabasa
Mabasa uye mabhuku ekutamba anofanira kunge asina simba, nekuti inoderedza kudhirowa kwekugadzirisa uye kutya kutyora chimwe chinhu. Asi kana iwe ukashandisa molecule, saka iyi ndiyo maitiro ekutanga.
Dzivisa kushandisa command shell modules
Kushandisa shell module kunoguma mune yakakosha tsananguro paradigm, panzvimbo yeinozivisa, inova musimboti weAnsible.
Edza mabasa ako kuburikidza nemorekuru
Molecule chinhu chinochinjika kwazvo, ngatitarisei pane mashoma mamiriro.
Molecule Multiple zviitiko
Π molecule.yml
muchikamu platforms
iwe unogona kutsanangura akawanda mauto aunogona kuendesa.
---
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
Naizvozvo, mauto aya anogona kudaro converge.yml
shandisa:
---
- 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
Ansible verifier
Mumorekuru zvinogoneka kushandisa zvinonzwisisika kutarisa kuti muenzaniso wakagadziriswa nemazvo, uyezve, izvi zvave zvisirizvo kubva pakaburitswa 3. Haisi kuchinjika se testinfra/inspec, asi isu tinogona kutarisa kuti zviri mukati mefaira zvinoenderana nezvatinotarisira:
---
- 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
Kana kuendesa sevhisi, mirira kuti ivepo uye uite bvunzo yehutsi:
---
- 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
Isa yakaoma logic mumamodule & plugins
Ansible anomiririra nzira yekuzivisa, saka kana iwe uchiita kodhi branching, data shanduko, shell modules, iyo kodhi inova yakaoma kuverenga. Kurwisa izvi uye kuzvichengeta zviri nyore kunzwisisa, zvingave zvisingaite kurwisa uku kuomarara nekugadzira ako mamodule.
Pfupisa Mazano & Mazano
- Dzivisa kuchinja kwepasi rose.
- Prefix basa variables.
- Shandisa loop control variable.
- Tarisa mabhii ekuisa.
- Dzivisa hashes dictionaries, shandisa flat chimiro.
- Gadzira mabhuku ekutamba asina basa & mabasa.
- Dzivisa kushandisa command shell modules.
- Edza mabasa ako kuburikidza nemorekuru.
- Isa yakaoma logic mumamodule & plugins.
mhedziso
Iwe haugone kungoenda uye kugadzirisa zvivakwa pane purojekiti, kunyangwe iwe uine IaC. Iyi inzira yakareba inoda moyo murefu, nguva uye ruzivo.
Links
- masiraidhi
Nzira yekuedza Ansible uye usaende nuts - Video
Nzira yekuedza Ansible uye usaende nuts Zvandakadzidza kubva Kuedza 200 Mitsetse yeInfrastructure Code Zvinogoneka: Kutama kwe120 VM kumisikidzwa kubva kuCoreos kuenda kuCentos mumwedzi gumi nemasere. Nzira yekupwanya mabhasikoro pamusoro pemadondoro paunenge uchiyedza kugovera kwako Ndiedze kana uchikwanisa kana kuita YML programmers kurota kuyedza Ansible? Rondedzero yeanotyisa IaC yekuongorora zvinyorwa, matauriro & zvinongedzo cross post Chirungu vERSION
UPD1 2020.05.01 20:30 - Yekutanga profiling yemabhuku ekutamba aunogona kushandisa callback_whitelist = profile_tasks
kuti unzwisise kuti chii chaizvo chinoshanda kwenguva yakareba. Tinobva tapfuura
UPD2 2020.05.03 16:34 -
Source: www.habr.com