Kif tibda tittestja Ansible, tirrefactor il-proġett f'sena u ma tiġnunx

Kif tibda tittestja Ansible, tirrefactor il-proġett f'sena u ma tiġnunx

Din hija t-traskrizzjoni wirjiet fuq DevOps-40 2020-03-18:

Jibda mit-tieni impenn, kwalunkwe kodiċi isir wirt, għaliex l-ideat inizjali jibdew jitbiegħdu mir-realtà ħarxa. Dan la hu tajjeb u lanqas ħażin, huwa fatt li huwa diffiċli li wieħed jargumenta miegħu u li jrid jgħix miegħu. Parti minn dan il-proċess huwa refactoring. Refactoring Infrastruttura bħala Kodiċi. Ħalli l-istorja tibda dwar kif Refactor Ansible f'sena u ma tiġnunx.

It-Twelid tal-Legat

Jum #1: Pazjent Żero

Kif tibda tittestja Ansible, tirrefactor il-proġett f'sena u ma tiġnunx

Darba kien hemm proġett kundizzjonali. Kellha tim ta 'żvilupp Dev u inġiniera Ops. Huma kienu qed isolvu l-istess problema: kif jużaw servers u jmexxu applikazzjoni. Il-problema kienet li kull tim solva din il-problema bil-mod tiegħu. Fil-proġett, ġie deċiż li jintuża Ansible biex jissinkronizza l-għarfien bejn it-timijiet Dev u Ops.

Jum #89: It-Twelid tal-Legat

Kif tibda tittestja Ansible, tirrefactor il-proġett f'sena u ma tiġnunx

Mingħajr ma ndunawh huma stess, riedu jagħmluha bl-aħjar mod possibbli, iżda rriżulta li kien wirt. Kif jiġri dan?

  • Għandna kompitu urġenti hawn, ejja nagħmlu hack maħmuġ u mbagħad nirranġawha.
  • M'għandekx għalfejn tikteb dokumentazzjoni u kollox huwa ċar x'inhu għaddej hawn.
  • Naf Ansible/Python/Bash/Terraform! Ara kif nista' naħrab!
  • Jien Developer Full Stack Overflow u kkuppjat dan minn stackoverflow, ma nafx kif taħdem, iżda jidher frisk u ssolvi l-problema.

Bħala riżultat, tista 'tikseb tip ta' kodiċi inkomprensibbli li għalih m'hemm l-ebda dokumentazzjoni, mhuwiex ċar x'tagħmel, jekk huwiex meħtieġ, iżda l-problema hija li għandek bżonn tiżviluppaha, timmodifikaha, żid krozzi u appoġġi , jagħmlu s-sitwazzjoni saħansitra agħar.

- hosts: localhost
  tasks:
    - shell: echo -n Z >> a.txt && cat a.txt
      register: output
      delay: 1
      retries: 5
      until: not output.stdout.find("ZZZ")

Jum #109: Għarfien tal-problema

Kif tibda tittestja Ansible, tirrefactor il-proġett f'sena u ma tiġnunx

Il-mudell IaC inizjalment maħsub u implimentat m'għadux jissodisfa r-rekwiżiti tal-utenti / tan-negozju / timijiet oħra, u ż-żmien biex isiru bidliet fl-infrastruttura ma jibqax aċċettabbli. F'dan il-mument, il-fehim jasal li wasal iż-żmien li tieħu azzjoni.

Refactoring IaC

Jum #139: Tassew għandek bżonn refactoring?

Kif tibda tittestja Ansible, tirrefactor il-proġett f'sena u ma tiġnunx

Qabel ma tgħaġġel biex tirrefactor, trid twieġeb numru ta 'mistoqsijiet importanti:

  1. Għaliex għandek bżonn dan kollu?
  2. Għandek ħin?
  3. L-għarfien huwa biżżejjed?

Jekk ma tkunx taf kif twieġeb il-mistoqsijiet, allura r-refactoring jintemm qabel ma jibda, jew jista 'biss imur għall-agħar. Għax kellu esperjenza ( Dak li Tgħallimt mill-Ittestjar ta' 200 Linja ta' Kodiċi tal-Infrastruttura), imbagħad il-proġett irċieva talba għall-għajnuna biex jiffissa r-rwoli u jkoprihom bit-testijiet.

Jum #149: Tħejjija tar-refactoring

Kif tibda tittestja Ansible, tirrefactor il-proġett f'sena u ma tiġnunx

L-ewwel ħaġa hija li tipprepara. Iddeċiedi x'se nagħmlu. Biex nagħmlu dan, nikkomunikaw, insibu oqsma problematiċi u nsibu modi kif insolvuhom. Aħna nirreġistraw il-kunċetti li jirriżultaw b'xi mod, pereżempju artiklu fil-konfluwenza, sabiex meta tqum il-mistoqsija "x'inhu l-aħjar?" jew "li huwa korrett?" Aħna ma tlifna triqitna. Fil-każ tagħna, aħna żammejna mal-idea jaqsam u jaħkem: aħna nkissru l-infrastruttura f’biċċiet żgħar/briks. Dan l-approċċ jippermettilek tieħu biċċa infrastruttura iżolata, tifhem x'tagħmel, tkopriha b'testijiet u tibdelha mingħajr biża' li tkisser xejn.

Kif tibda tittestja Ansible, tirrefactor il-proġett f'sena u ma tiġnunx

Jirriżulta li l-ittestjar tal-infrastruttura jsir il-pedament u hawn ta’ min isemmi l-piramida tal-ittestjar tal-infrastruttura. Eżattament l-istess idea li tinsab fl-iżvilupp, iżda għall-infrastruttura: qed nimxu minn testijiet rapidi rħas li jiċċekkjaw affarijiet sempliċi, bħall-indentazzjoni, għal testijiet sħaħ għaljin li jużaw l-infrastruttura kollha.

Tentattivi ta' ttestjar Ansible

Qabel ma mmorru niddeskrivew kif koprejna t-testijiet Ansible fuq il-proġett, ser niddeskrivi t-tentattivi u l-approċċi li kelli l-opportunità li nuża qabel sabiex nifhem il-kuntest tad-deċiżjonijiet meħuda.

Jum Nru -997: Provvista SDS

Kif tibda tittestja Ansible, tirrefactor il-proġett f'sena u ma tiġnunx

L-ewwel darba li ttestja Ansible kien fuq proġett biex tiżviluppa SDS (Software Defined Storage). Hemm artiklu separat dwar dan is-suġġett
Kif tkisser ir-roti fuq il-krozzi meta tittestja d-distribuzzjoni tiegħek, iżda fil-qosor, spiċċajna b'piramida ta 'ttestjar invertita u ttestjar qattajna 60-90 minuta fuq rwol wieħed, li huwa żmien twil. Il-bażi kienet it-testijiet e2e, i.e. skjerajna installazzjoni sħiħa u mbagħad ttestjajna. Li kien saħansitra aktar aggravanti kienet l-invenzjoni tar-rota tiegħu stess. Imma għandi nammetti, din is-soluzzjoni ħadmet u ppermettiet rilaxx stabbli.

Jum # -701: Ansible u kċina tat-test

Kif tibda tittestja Ansible, tirrefactor il-proġett f'sena u ma tiġnunx

L-iżvilupp tal-idea tal-ittestjar Ansible kien l-użu ta 'għodod lesti, jiġifieri test kitchen / kitchen-ci u spe. L-għażla kienet determinata mill-għarfien ta 'Ruby (għal aktar dettalji, ara l-artiklu dwar Habré: Il-programmaturi YML joħolmu li jittestjaw Ansible?) ħadem aktar malajr, madwar 40 minuta għal 10 rwoli. Ħloqna pakkett ta’ magni virtwali u għamilna testijiet ġewwa.

Kif tibda tittestja Ansible, tirrefactor il-proġett f'sena u ma tiġnunx

B'mod ġenerali, is-soluzzjoni ħadmet, iżda kien hemm xi sediment minħabba l-eteroġeneità. Meta n-numru ta 'nies ittestjati żdied għal 13-il rwol bażiku u 2 rwoli meta jgħaqqdu rwoli iżgħar, allura f'daqqa waħda t-testijiet bdew iseħħu għal 70 minuta, li huwa kważi 2 darbiet itwal. Kien diffiċli li titkellem dwar prattiċi XP (programmazzjoni estrema) għax... ħadd ma jrid jistenna 70 minuta. Din kienet ir-raġuni għall-bidla fl-approċċ

Jum # -601: Ansible u molekula

Kif tibda tittestja Ansible, tirrefactor il-proġett f'sena u ma tiġnunx

Kunċettwalment, dan huwa simili għal testkitchen, biss ċċaqlaqna l-ittestjar tar-rwol għal docker u biddilna l-munzell. Bħala riżultat, il-ħin tnaqqas għal 20-25 minuta stabbli għal 7 rwoli.

Kif tibda tittestja Ansible, tirrefactor il-proġett f'sena u ma tiġnunx

Billi żiedu n-numru ta 'rwoli ttestjati għal 17 u liting 45 rwol, aħna mexxa dan fi 28 minuta fuq 2 skjavi jenkins.

Jum #167: Żieda ta’ testijiet Ansible mal-proġett

Kif tibda tittestja Ansible, tirrefactor il-proġett f'sena u ma tiġnunx

Ħafna probabbli, mhux se jkun possibbli li tagħmel il-kompitu ta 'refactoring bil-għaġla. Il-kompitu għandu jkun jista 'jitkejjel sabiex tkun tista' taqsamha f'biċċiet żgħar u tiekol l-iljunfant biċċa biċċa b'kuċċarina. Għandu jkun hemm fehim ta 'jekk inti miexja fid-direzzjoni t-tajba, kemm żmien biex tmur.

Kif tibda tittestja Ansible, tirrefactor il-proġett f'sena u ma tiġnunx

B'mod ġenerali, ma jimpurtax kif se jsir, tista 'tikteb fuq biċċa karta, tista' tpoġġi stikers fuq il-closet, tista 'toħloq kompiti f'Jira, jew tista' tiftaħ Google Docs u tikteb l-istatus attwali hemm. Ir-riġlejn jikbru mill-fatt li l-proċess mhuwiex immedjat, se jkun twil u tedious. Huwa improbabbli li xi ħadd iridek tinħaraq l-ideat, tgħejja, u ssir megħlub waqt ir-refactoring.

Ir-refactoring huwa sempliċi:

  • Kul.
  • Sleep.
  • Kodiċi.
  • Test IaC.
  • Irrepeti

u nirrepetu dan sakemm nilħqu l-għan maħsub.

Kif tibda tittestja Ansible, tirrefactor il-proġett f'sena u ma tiġnunx

Jista' jkun li ma jkunx possibbli li nibdew nittestjaw kollox mill-ewwel, għalhekk l-ewwel kompitu tagħna kien li nibdew bil-linting u l-verifika tas-sintassi.

Jum #181: Green Build Master

Kif tibda tittestja Ansible, tirrefactor il-proġett f'sena u ma tiġnunx

Linting huwa l-ewwel pass żgħir lejn Green Build Master. Dan ma jkisser kważi xejn, iżda jippermettilek tiddibaggja proċessi u tagħmel bini aħdar f'Jenkins. L-idea hija li jiġu żviluppati drawwiet fost it-tim:

  • It-testijiet ħomor huma ħżiena.
  • Wasalt biex nirranġa xi ħaġa u fl-istess ħin nagħmel il-kodiċi ftit aħjar milli kien qabel int.

Jum #193: Mill-linting għal testijiet tal-unità

Kif tibda tittestja Ansible, tirrefactor il-proġett f'sena u ma tiġnunx

Wara li bnew il-proċess li jdaħħal il-kodiċi fil-kaptan, tista 'tibda l-proċess ta' titjib pass pass - tissostitwixxi linting b'rwoli ta 'tnedija, tista' anki tagħmel dan mingħajr idempotenza. Trid tifhem kif tapplika r-rwoli u kif jaħdmu.

Jum #211: Mill-unità għat-testijiet tal-integrazzjoni

Kif tibda tittestja Ansible, tirrefactor il-proġett f'sena u ma tiġnunx

Meta l-biċċa l-kbira tar-rwoli huma koperti b'testijiet ta 'unità u kollox ikun linted, tista' tkompli żżid it-testijiet ta 'integrazzjoni. Dawk. ittestjar mhux briks wieħed fl-infrastruttura, iżda kombinazzjoni tagħhom, per eżempju, konfigurazzjoni istanza sħiħa.

Kif tibda tittestja Ansible, tirrefactor il-proġett f'sena u ma tiġnunx

Bl-użu jenkins, aħna ġġeneraw ħafna stadji li linted rwoli/playbooks b'mod parallel, imbagħad testijiet ta 'unità f'kontenituri, u finalment testijiet ta' integrazzjoni.

Jenkins + Docker + Ansible = Testijiet

Kif tibda tittestja Ansible, tirrefactor il-proġett f'sena u ma tiġnunx

  1. Iċċekja repo u ġġenera stadji tal-bini.
  2. Mexxi l-istadji tal-playbook tal-lint b'mod parallel.
  3. Mexxi l-istadji tar-rwol tal-lint b'mod parallel.
  4. Mexxi l-istadji tar-rwol tal-kontroll tas-sintassi b'mod parallel.
  5. Mexxi l-istadji tar-rwol tat-test b'mod parallel.
    1. Rwol lint.
    2. Iċċekkja d-dipendenza fuq rwoli oħra.
    3. Iċċekkja s-sintassi.
    4. Oħloq istanza ta' docker
    5. Mexxi molecule/default/playbook.yml.
    6. Iċċekkja l-idempotenza.
  6. Mexxi testijiet ta 'integrazzjoni
  7. Finatura

Jum #271: Fattur Xarabank

Kif tibda tittestja Ansible, tirrefactor il-proġett f'sena u ma tiġnunx

Għall-ewwel, ir-refactoring sar minn grupp żgħir ta’ żewġ jew tliet persuni. Huma rrevedew il-kodiċi fil-kaptan. Maż-żmien, it-tim żviluppa għarfien dwar kif tikteb il-kodiċi u r-reviżjoni tal-kodiċi kkontribwixxa għat-tixrid tal-għarfien dwar l-infrastruttura u kif taħdem. Il-qofol hawn kien li r-reviżuri ntgħażlu wieħed wieħed, skont skeda, i.e. b'ċertu grad ta' probabbiltà inti titla' f'biċċa infrastruttura ġdida.

Kif tibda tittestja Ansible, tirrefactor il-proġett f'sena u ma tiġnunx

U għandu jkun komdu hawn. Huwa konvenjenti li tagħmel reviżjoni, tara fil-qafas ta 'liema kompitu sar, u l-istorja tad-diskussjonijiet. Integrajna jenkins + bitbucket + jira.

Iżda bħala tali, reviżjoni mhix rimedju; b'xi mod, dħalna fil-kodiċi prinċipali, li għamilna testijiet 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 }}"

Imbagħad ffissawha, iżda s-sediment baqa '.

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 }}"

Jum #311: Tħaffef it-testijiet

Kif tibda tittestja Ansible, tirrefactor il-proġett f'sena u ma tiġnunx

Maż-żmien, kien hemm aktar testijiet, il-bini dam aktar bil-mod, sa siegħa fl-agħar każ. Fuq wieħed mir-retros kien hemm frażi bħal "huwa tajjeb li hemm it-testijiet, iżda huma bil-mod." Bħala riżultat, abbandunajna testijiet ta 'integrazzjoni fuq magni virtwali u adattajnahom għal Docker biex jagħmilha aktar mgħaġġla. Bidnejna wkoll testinfra b'verifikatur ansible biex jitnaqqas in-numru ta 'għodod użati.

Kif tibda tittestja Ansible, tirrefactor il-proġett f'sena u ma tiġnunx

Strettament, kien hemm sett ta’ miżuri:

  1. Aqleb għal docker.
  2. Neħħi l-ittestjar tar-rwol, li huwa duplikat minħabba dipendenzi.
  3. Żid in-numru ta 'skjavi.
  4. Ordni tat-tħaddim tat-test.
  5. Kapaċità li lint KOLLHA lokalment bi kmand wieħed.

Kif tibda tittestja Ansible, tirrefactor il-proġett f'sena u ma tiġnunx

Bħala riżultat, Pipeline fuq jenkins ġie unifikat ukoll

  1. Iġġenera stadji tal-bini.
  2. Lint kollha b'mod parallel.
  3. Mexxi l-istadji tar-rwol tat-test b'mod parallel.
  4. Finitura.

Lezzjonijiet mitgħallma

Evita varjabbli globali

Ansible juża varjabbli globali, hemm soluzzjoni parzjali fil-forma private_role_vars, iżda din mhix rimedju.

Ħa nagħtikom eżempju. Ejjew ikollna 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}}

Kif tibda tittestja Ansible, tirrefactor il-proġett f'sena u ma tiġnunx

Il-ħaġa umoristiċi hija li r-riżultat tal-playbooks jiddependi fuq affarijiet li mhux dejjem ikunu ovvji, bħall-ordni li fiha r-rwoli huma elenkati. Sfortunatament, din hija n-natura ta 'Ansible u l-aħjar ħaġa li tista' ssir hija li tuża xi tip ta 'ftehim, pereżempju, fi ħdan rwol, uża biss il-varjabbli deskritt f'dan ir-rwol.

BAD: uża varjabbli globali.

# cat roles/some_role/tasks/main.yml
---
debug:
  var: java_home

TAJBA: V defaults tiddefinixxi l-varjabbli meħtieġa u aktar tard użahom biss.

# 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

Varjabbli tar-rwol tal-prefiss

BAD: uża varjabbli globali.

# cat roles/some_role/defaults/main.yml
---
db_port: 5432

TAJBA: Fir-rwoli għall-varjabbli, uża varjabbli prefissati bl-isem tar-rwol; dan, billi tħares lejn l-inventarju, jagħmilha aktar faċli biex tifhem dak li qed jiġri.

# cat roles/some_role/defaults/main.yml
---
some_role__db_port: 5432

Uża varjabbli tal-kontroll tal-linja

BAD: Uża varjabbli standard f'linji item, jekk dan il-kompitu/playbook jiġi inkluż x'imkien, dan jista' jwassal għal imġieba mhux mistennija

---
- hosts: localhost
  tasks:
    - debug:
        msg: "{{ item }}"
      loop:
        - item1
        - item2

TAJBA: Iddefinixxi mill-ġdid varjabbli f'linja permezz loop_var.

---
- hosts: localhost
  tasks:
    - debug:
        msg: "{{ item_name }}"
      loop:
        - item1
        - item2
      loop_control:
        loop_var: item_name

Iċċekkja l-varjabbli tad-dħul

Qbilna li nużaw prefissi varjabbli; ma jkunx superfluwu li niċċekkjaw li huma definiti kif nistennew u, pereżempju, ma ġewx overrived minn valur vojt

TAJBA: Iċċekkja l-varjabbli.

- 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

Evita dizzjunarji tal-hashes, uża struttura ċatta

Jekk rwol jistenna hash/dizzjunarju f'wieħed mill-parametri tiegħu, allura jekk irridu nbiddlu wieħed mill-parametri tat-tfal, ikollna bżonn naqbdu l-hash/dizzjunarju kollu, li se jżid il-kumplessità tal-konfigurazzjoni.

BAD: Uża hash/dizzjunarju.

---
user:
  name: admin
  group: admin

TAJBA: Uża struttura varjabbli ċatta.

---
user_name: admin
user_group: "{{ user_name }}"

Oħloq playbooks u rwoli idempotenti

Ir-rwoli u l-playbooks għandhom ikunu idempotenti, għax inaqqas id-drift tal-konfigurazzjoni u l-biża 'li tkisser xi ħaġa. Imma jekk tuża molekula, allura din hija l-imġieba default.

Evita li tuża moduli tal-qoxra tal-kmand

L-użu ta 'modulu tal-qoxra jirriżulta f'paradigma ta' deskrizzjoni imperattiva, minflok dik dikjarattiva, li hija l-qalba ta 'Ansible.

Ittestja r-rwoli tiegħek permezz tal-molekula

Il-molekula hija ħaġa flessibbli ħafna, ejja nħarsu lejn ftit xenarji.

Molekula Każijiet multipli

В molecule.yml fit-taqsima platforms tista' tiddeskrivi ħafna hosts li tista' tuża.

---
    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

Għaldaqstant, dawn l-ospiti jistgħu mbagħad ikunu converge.yml uża:

---
- 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

Verifikatur Ansible

Fil-molekula huwa possibbli li tuża ansible biex tiċċekkja li l-istanza ġiet ikkonfigurata b'mod korrett, barra minn hekk, din kienet l-awtomatika minn rilaxx 3. Mhuwiex flessibbli daqs testnfra/inspec, iżda nistgħu niċċekkjaw li l-kontenut tal-fajl jaqbel mal-aspettattivi tagħna:

---
- 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

Jew uża s-servizz, stenna li jsir disponibbli u agħmel test tad-duħħan:

---
  - 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

Poġġi loġika kumplessa f'moduli u plugins

Ansible jippromwovi approċċ dikjarattiv, għalhekk meta tagħmel fergħat tal-kodiċi, trasformazzjoni tad-dejta, moduli tal-qoxra, il-kodiċi isir diffiċli biex jinqara. Biex tiġġieled dan u żżommha sempliċi biex tinftiehem, ma jkunx superfluwu li tiġġieled din il-kumplessità billi toħloq il-moduli tiegħek stess.

Agħti fil-qosor Tips & Tricks

  1. Evita varjabbli globali.
  2. Varjabbli tar-rwol tal-prefiss.
  3. Uża varjabbli tal-kontroll tal-linja.
  4. Iċċekkja l-varjabbli tad-dħul.
  5. Evita dizzjunarji tal-hashes, uża struttura ċatta.
  6. Oħloq playbooks u rwoli idempotenti.
  7. Evita li tuża moduli tal-qoxra tal-kmand.
  8. Ittestja r-rwoli tiegħek permezz tal-molekula.
  9. Poġġi loġika kumplessa f'moduli u plugins.

Konklużjoni

Kif tibda tittestja Ansible, tirrefactor il-proġett f'sena u ma tiġnunx

Ma tistax sempliċement tmur u tiffattura mill-ġdid l-infrastruttura fuq proġett, anki jekk għandek IaC. Dan huwa proċess twil li jeħtieġ paċenzja, ħin u għarfien.

UPD1 2020.05.01 20:30 — Għall-profil primarju tal-playbooks tista' tuża callback_whitelist = profile_tasks biex tifhem x'jaħdem eżattament għal żmien twil. Imbagħad ngħaddu Klassiċi tal-aċċelerazzjoni Ansible. Tista 'wkoll tipprova mitoġenu
UPD2 2020.05.03 16:34 - Verżjoni Maltija

Sors: www.habr.com

Żid kumment