
Ity ny transcript amin'ny :
Manomboka amin'ny fanoloran-tena faharoa, ny code rehetra dia lasa lova, satria manomboka miala amin'ny zava-misy henjana ny hevitra voalohany. Sady tsy tsara no tsy ratsy izany, omena izay sarotra iadian-kevitra ary tsy maintsy iaina. Ampahany amin'ity dingana ity ny refactoring. Refactoring fotodrafitrasa toy ny Code. Avelao ny tantara hatomboka amin'ny fomba hamerenana ny Ansible ao anatin'ny herintaona fa tsy ho lasa adala.
Ny nahaterahan'ny lova
Andro #1: Patient Zero

Indray mandeha dia nisy tetikasa misy fepetra. Nanana ekipa fampandrosoana Dev sy injeniera Ops izy io. Namaha olana iray ihany izy ireo: ny fomba fametrahana lohamilina sy fampandehanana fampiharana. Ny olana dia ny ekipa tsirairay dia namaha io olana io tamin'ny fombany. Tamin'ny tetikasa dia nanapa-kevitra ny hampiasa Ansible hampifanaraka ny fahalalana eo amin'ny ekipa Dev sy Ops.
Andro #89: Ny fahaterahan'ny lova

Tsy nahatsikaritra izany ny tenany fa naniry ny hanao izany araka izay azo atao, saingy lasa lova. Ahoana no mitranga izany?
- Manana asa maika isika eto, andao hanao hack maloto ary amboary avy eo.
- Tsy mila manoratra antontan-taratasy ianao ary mazava tsara ny zava-mitranga eto.
- Fantatro ny Ansible/Python/Bash/Terraform! Jereo ny fomba handosirako!
- Mpanamboatra Full Stack Overflow aho ary nandika an'io tamin'ny stackoverflow, tsy fantatro ny fomba fiasany, fa toa mangatsiatsiaka sy mamaha ny olana.
Vokatr'izany dia azonao atao ny mahazo karazana code tsy takatry ny saina izay tsy misy antontan-taratasy, tsy mazava ny ataony, na ilaina izany, fa ny olana dia mila mamolavola azy ianao, manova azy, manampy tehina sy tohana. , vao mainka miharatsy ny toe-javatra.
- hosts: localhost
tasks:
- shell: echo -n Z >> a.txt && cat a.txt
register: output
delay: 1
retries: 5
until: not output.stdout.find("ZZZ")Andro #109: Fampahafantarana ny olana

Ny modely IaC noforonina sy nampiharina tamin'ny voalohany dia tsy mahafeno ny fepetra takian'ny mpampiasa / orinasa / ekipa hafa, ary tsy azo ekena intsony ny fotoana hanovana ny fotodrafitrasa. Amin'izao fotoana izao dia tonga ny fahatakarana fa tonga ny fotoana hanaovana hetsika.
IaC refactoring
Andro #139: Tena mila refactoring ve ianao?

Alohan'ny handehananao haingana amin'ny refactor dia tsy maintsy mamaly fanontaniana manan-danja maromaro ianao:
- Nahoana ianao no mila izany rehetra izany?
- Manana fotoana ve ianao?
- Ampy ve ny fahalalana?
Raha tsy hainao ny mamaly ny fanontaniana dia hifarana alohan'ny hanombohany ny refactoring, na mety hiharatsy izany. SATRIA nanana traikefa ( ), avy eo dia nahazo fangatahana fanampiana ny tetikasa mba handaminana ireo andraikitra ary handrakotra azy ireo amin'ny fitsapana.
Andro #149: Fanomanana ny refactoring

Ny zavatra voalohany dia ny manomana. Manapaha hevitra izay hataontsika. Mba hanaovana izany, mifampiresaka isika, mitady faritra misy olana ary mitady fomba hamahana azy ireo. Raketinay amin'ny fomba ahoana ny hevitra aterak'izany, ohatra amin'ny lahatsoratra iray mitambatra, ka rehefa mipoitra ny fanontaniana hoe "inona no tsara indrindra?" na "inona no marina?" Tsy very lalana izahay. Raha ny momba anay dia nifikitra tamin'ilay hevitra izahay mizara sy manapaka: vakivaky ny fotodrafitrasa madinika/biriky. Ity fomba fiasa ity dia ahafahanao maka fotodrafitrasa mitoka-monina, mahatakatra ny ataony, manarona azy amin'ny fitsapana ary manova azy tsy misy tahotra ny handrava na inona na inona.

Hita fa lasa vato fehizoro ny fitsirihana ny fotodrafitrasa ka eto dia tsara ny manamarika ny piramida fitsirihana ny fotodrafitrasa. Mitovy tanteraka amin'ny hevitra eo amin'ny fampandrosoana, fa ho an'ny fotodrafitrasa: miainga avy amin'ny fitsapana haingana mora vidy izay manamarina zavatra tsotra, toy ny indentation, mankany amin'ny andrana feno lafo izay mametraka ny fotodrafitrasa manontolo.
Andrana fitsapana azo atao
Alohan'ny handehanantsika hamaritana ny fomba nandrakofanay ny fitsapana Ansible momba ny tetikasa, dia holazaiko ireo andrana sy fomba fiasa izay nananako fahafahana nampiasa teo aloha mba hahatakarana ny tontolon'ny fanapahan-kevitra noraisina.
Andro No. -997: Fanomezana SDS

Ny fotoana voalohany nanandramako an'i Ansible dia tao amin'ny tetikasa iray hamolavola SDS (Software Defined Storage). Misy lahatsoratra manokana momba ity lohahevitra ity
, fa raha fintinina dia niafara tamin'ny piramida fitsapana nivadika izahay ary nandany 60-90 minitra tamin'ny anjara iray ny fitsapana, izay fotoana lava be. Ny fototra dia ny fitsapana e2e, i.e. nametraka fametrahana feno izahay ary nanandrana izany avy eo. Ny tena nampalahelo dia ny famoronana ny bisikiletany manokana. Saingy tsy maintsy ekeko fa niasa io vahaolana io ary namela ny famoahana tsy tapaka.
Andro # -701: lakozia azo antoka sy fitsapana

Ny fampivoarana ny hevitra fitiliana Ansible dia ny fampiasana fitaovana efa vita, dia ny lakozia / lakozia-ci ary ny inspec. Ny fahafantarana an'i Ruby no namaritana ny safidy (raha mila fanazavana fanampiny dia jereo ny lahatsoratra momba ny Habré: ) niasa haingana kokoa, tokony ho 40 minitra ho an'ny anjara 10. Namorona fonosana milina virtoaly izahay ary nanao fitsapana tao anatiny.

Amin'ny ankapobeny, nahomby ny vahaolana, saingy nisy antsanga noho ny tsy fitoviana. Rehefa nitombo ho 13 anjara fototra ny isan'ny olona nosedraina ary 2 meta anjara manambatra anjara kely kokoa, dia nanomboka nandeha tampoka nandritra ny 70 minitra ny andrana, izay efa ho in-2 lava kokoa. Sarotra ny niresaka momba ny fomba fiasa XP (programming extreme) satria... tsy misy te hiandry 70 minitra. Izany no antony nanova ny fomba fiasa
Andro # -601: Ansible sy molekiola

Amin'ny foto-kevitra dia mitovy amin'ny testkitchen izany, izahay ihany no namindra ny fitiliana anjara tamin'ny docker ary nanova ny stack. Vokatr'izany dia nihena ho 20-25 minitra ny fotoana ho an'ny anjara 7.

Tamin'ny fampitomboana ny isan'ny anjara voasedra ho 17 sy ny fametahana andraikitra 45, dia nanatanteraka izany tao anatin'ny 28 minitra izahay tamin'ny andevo jenkins 2.
Andro #167: Fanampiana fitsapana Ansible amin'ny tetikasa

Azo inoana fa tsy ho azo atao haingana ny asa refactoring. Ny asa dia tsy maintsy azo refesina mba hahafahanao manapaka azy ho sombiny kely ary mihinana ny elefanta tapatapaka amin'ny sotro iray. Tsy maintsy misy ny fahatakarana raha mizotra amin'ny lalana marina ianao, hafiriana no handehanana.

Amin'ny ankapobeny, tsy maninona ny fomba hanaovana izany, azonao atao ny manoratra amin'ny taratasy iray, azonao atao ny mametraka sticker eo amin'ny efi-tranonao, azonao atao ny mamorona asa ao amin'ny Jira, na afaka manokatra Google Docs ianao ary manoratra ny sata ankehitriny. Ery. Ny tongotra dia mitombo noho ny zava-misy fa ny dingana dia tsy eo no ho eo, dia ho lava sy mandreraka. Tsy azo inoana fa misy olona maniry anao handoro hevitra, ho reraka, ary ho reraka mandritra ny refactoring.
Ny refactoring dia tsotra:
- Mihinàna.
- Matory aza izy.
- Kaody.
- IaC test.
- Avereno
ary averintsika izany mandra-pahatongantsika amin'ny tanjona kasaina.

Mety tsy ho azo atao ny manomboka mitsapa ny zava-drehetra avy hatrany, ka ny asa voalohany nataonay dia ny natomboka tamin'ny linting sy ny fanamarinana ny syntax.
Andro #181: Maitso Build Master

Ny linting dia dingana voalohany mankany amin'ny Green Build Master. Tsy handrava saika na inona na inona izany, fa hamela anao hanaisotra ny dingana sy hanao fananganana maitso ao Jenkins. Ny hevitra dia ny hampivelatra fahazarana eo amin'ny ekipa:
- Ratsy ny fitsapana mena.
- Tonga hanamboatra zavatra aho ary miaraka amin'izay koa, ny kaody dia tsara kokoa noho ny teo alohanao.
Andro #193: Avy amin'ny linting mankany amin'ny fitsapana unit

Rehefa avy nanamboatra ny dingan'ny fampidirana ny kaody ho an'ny tompony ianao dia afaka manomboka ny dingan'ny fanatsarana tsikelikely - manolo ny linting amin'ny andraikitra fanombohana, azonao atao mihitsy aza izany tsy misy idempotency. Mila mahafantatra ny fomba hampiharana ny andraikitra sy ny fomba fiasan'izy ireo ianao.
Andro #211: Avy amin'ny vondrona mankany amin'ny fitsapana fampidirana

Rehefa rakotry ny andrana vondrona ny ankamaroan'ny andraikitra ary voapetaka avokoa ny zava-drehetra, azonao atao ny miroso amin'ny fampidirana fitsapana fampidirana. Ireo. tsy fitiliana biriky na dia iray aza ao amin'ny fotodrafitrasa, fa ny fitambaran'izy ireo, ohatra, ny fanamafisana ohatra feno.

Amin'ny fampiasana jenkins, namorona dingana maro izahay izay nandrafitra anjara/boky filalaovana mifanandrify, avy eo ny fitsapana an'ny vondrona ao anaty kaontenera, ary farany ny andrana fampidirana.
Jenkins + Docker + Ansible = Fitsapana

- Manaova repo ary mamorona dingana fananganana.
- Manaova dingana amin'ny lint playbook amin'ny parallèle.
- Manaova dingana mifanandrify amin'ny anjara asan'ny lint.
- Ampandehano mifanandrify ireo dingana fanaraha-maso syntax.
- Manaova dingana mifanandrify amin'ny anjara asan'ny fitsapana.
- Lint anjara.
- Jereo ny fiankinan-doha amin'ny andraikitra hafa.
- Jereo ny syntax.
- Mamorona ohatra docker
- Alefaso ny molecule/default/playbook.yml.
- Jereo ny idépotency.
- Manaova andrana fampidirana
- farany
Andro #271: Factor Bus

Tamin'ny voalohany, vondrona kely misy olona roa na telo no nanao refactoring. Nodinihin'izy ireo ny kaody ao amin'ny tompony. Rehefa nandeha ny fotoana, ny ekipa dia namolavola fahalalana momba ny fanoratana kaody sy ny famerenana ny kaody dia nandray anjara tamin'ny fanaparitahana ny fahalalana momba ny fotodrafitrasa sy ny fomba fiasany. Nisongadina teto ny nisafidianana ireo mpandinika, araka ny fandaharam-potoana, izany hoe. miaraka amin'ny ambaratonga mety hiakatra amin'ny fotodrafitrasa vaovao ianao.

Ary tokony ho mahazo aina eto. Tsara ny manao famerenana, mijery ao anatin'ny rafitry ny asa vitany, ary ny tantaran'ny fifanakalozan-kevitra. Nampiditra jenkins + bitbucket + jira izahay.
Saingy noho izany, ny famerenana dia tsy fanafody; Na ahoana na ahoana, dia niditra tao amin'ny kaody master izahay, izay nahatonga anay hanao fitsapana:
- 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 }}"Namboarin'izy ireo avy eo, fa nijanona ny antsanga.
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 }}"Andro #311: Fanafainganana ny fitsapana

Rehefa nandeha ny fotoana, dia nisy fitsapana maro kokoa, niadana kokoa ny fanamboarana, hatramin'ny adiny iray amin'ny tranga ratsy indrindra. Ao amin'ny iray amin'ireo retros dia nisy andian-teny toy ny hoe "tsara fa misy ny fitsapana, fa miadana izy ireo." Vokatr'izany dia nandao ny fitsapana fampidirana amin'ny milina virtoaly izahay ary nampifanaraka azy ireo ho an'i Docker mba hanafainganana azy. Nosoloinay ihany koa ny testinfra amin'ny verifier ansible mba hampihenana ny isan'ny fitaovana ampiasaina.

Raha ny marina, nisy fepetra maromaro:
- Hiverina any amin'ny docker.
- Esory ny fitiliana anjara, izay adika noho ny fiankinan-doha.
- Ampitomboy ny isan'ny andevo.
- Fibaikoana andrana.
- Fahaizana lint rEHETRA eo an-toerana miaraka amin'ny baiko iray.

Vokatr'izany dia niray hina ihany koa ny Pipeline on jenkins
- Mamorona dingana fananganana.
- Ampifanaraho daholo.
- Manaova dingana mifanandrify amin'ny anjara asan'ny fitsapana.
- Farany.
Lesona noraisina
Halaviro ny fari-piainana manerantany
Ansible dia mampiasa fari-pahalalana manerantany, misy vahaolana amin'ny ampahany amin'ny endrika , fa tsy fanafody fanafody izany.
Mamelà ahy hanome ohatra anao. Aoka isika hanana 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}}
Ny mahatsikaiky dia ny vokatry ny playbook dia hiankina amin'ny zavatra tsy miharihary foana, toy ny filaharan'ireo anjara. Indrisy anefa fa izany no toetran'ny Ansible ary ny zavatra tsara indrindra azo atao dia ny mampiasa karazana fifanarahana, ohatra, ao anatin'ny anjara iray, dia tsy mampiasa afa-tsy ny faribolana voalaza ao amin'io andraikitra io.
BAD: mampiasa variable global.
# cat roles/some_role/tasks/main.yml
---
debug:
var: java_homeTSARA: V defaults mamaritra ny fari-piainana ilaina ary avy eo mampiasa azy ireo ihany.
# 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
Variable andraikitry ny prefix
BAD: mampiasa variable global.
# cat roles/some_role/defaults/main.yml
---
db_port: 5432TSARA: Amin'ny andraikitry ny fari-pitsipika, ampiasao ny fari-piadidiana misy ny anaran'ny anjara; izany, amin'ny fijerena ny lisitra, dia hanamora ny fahazoana ny zava-mitranga.
# cat roles/some_role/defaults/main.yml
---
some_role__db_port: 5432Ampiasao ny fari-pifehezana loop
BAD: Mampiasà fari-pitsipika mahazatra amin'ny tadivavarana item, raha ampidirina any amin'ny toerana iray ity asa/boky filalaovana ity dia mety hitarika fihetsika tsy ampoizina izany
---
- hosts: localhost
tasks:
- debug:
msg: "{{ item }}"
loop:
- item1
- item2
TSARAa loop_var.
---
- hosts: localhost
tasks:
- debug:
msg: "{{ item_name }}"
loop:
- item1
- item2
loop_control:
loop_var: item_name
Hamarino ny fari-pidirana
Nanaiky ny hampiasa prefix miovaova izahay; tsy ho tafahoatra ny hanamarina fa voafaritra araka ny nantenainay izy ireo ary, ohatra, dia tsy nosoloina sanda foana.
TSARA: Hamarino ny fari-piainana.
- 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_item3Halaviro ny diksionera hash, ampiasao rafitra fisaka
Raha toa ka manantena hash/diksionera ao amin'ny iray amin'ireo masontsivanany ny anjara iray, dia raha te hanova ny iray amin'ireo masontsivana ankizy isika dia mila manafoana ny hash/diksiona manontolo, izay hampitombo ny fahasarotan'ny fanitsiana.
BAD: Mampiasa tenifototra/rakibolana.
---
user:
name: admin
group: adminTSARA: Mampiasà rafitra miovaova fisaka.
---
user_name: admin
user_group: "{{ user_name }}"Mamorona boky filalaovana sy anjara asa
Ny anjara asa sy ny playbooks dia tsy maintsy idempotent, satria mampihena ny fifindran'ny configuration sy ny tahotra ny hanapaka zavatra. Fa raha mampiasa molekiola ianao, dia izao no fitondran-tena mahazatra.
Fadio ny mampiasa maody shell baiko
Ny fampiasana maody akorandriaka dia miteraka paradigma famaritana tsy maintsy atao, fa tsy ilay fanambarana, izay fototry ny Ansible.
Andramo ny anjara asanao amin'ny alàlan'ny molekiola
Ny molekiola dia zavatra tena miovaova, andao hojerentsika ny toe-javatra vitsivitsy.
Molecule instance maromaro
В molecule.yml amin'ny fizarana platforms afaka mamaritra mpampiantrano maro azonao apetraka ianao.
---
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: hostNoho izany, ireo mpampiantrano ireo dia mety ho converge.yml mampiasa:
---
- 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_roleFanamarinana azo atao
Ao amin'ny molekiola dia azo atao ny mampiasa ansible mba hanamarinana fa efa namboarina tsara ny ohatra, ary izany no default hatramin'ny famoahana 3. Tsy mora toy ny testinfra/inspec izy io, saingy azontsika atao ny manamarina fa mifanaraka amin'ny andrasantsika ny votoatin'ny rakitra:
---
- 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.changedNa ampidiro ny serivisy, andraso ho tonga ary manaova fitsapana setroka:
---
- 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.csvAmpidiro ao anaty modules & plugins ny lojika sarotra
Ny Ansible dia manohana ny fomba fanambaràna, ka rehefa manao sampana kaody, fanovana angon-drakitra, maody akorandriaka ianao, dia lasa sarotra ny mamaky ny kaody. Mba hiadiana amin'izany sy hitazonana azy ho mora takarina, dia tsy ho tafahoatra ny hiadiana amin'ity fahasarotana ity amin'ny alàlan'ny famoronana modules anao manokana.
Fintino ny Soso-kevitra & Tetika
- Halaviro ny fari-piainana manerantany.
- Variable andraikitry ny prefix.
- Ampiasao ny fari-pifehezana loop.
- Hamarino ny fari-pidirana.
- Halaviro ny diksionera hash, ampiasao rafitra fisaka.
- Mamorona boky filalaovana sy anjara asa.
- Fadio ny mampiasa maody shell baiko.
- Andramo ny anjara asanao amin'ny alàlan'ny molekiola.
- Ampidiro ao anaty modules & plugins ny lojika sarotra.
famaranana

Tsy afaka mandeha fotsiny ianao ary mamerina ny fotodrafitrasa amin'ny tetikasa iray, na dia manana IaC aza ianao. Izany dia dingana lava mitaky faharetana, fotoana ary fahalalana.
Links
- tsary
- Video
UPD1 2020.05.01 20:30 - Ho an'ny profiling voalohany amin'ny playbook azonao ampiasaina callback_whitelist = profile_tasks mba hahatakatra izay tena miasa nandritra ny fotoana ela. Dia mandalo isika . Azonao atao koa ny manandrana
UPD2 2020.05.03 16:34 -
Source: www.habr.com
