Giunsa pagsugod ang pagsulay sa Ansible, i-refactor ang proyekto sa usa ka tuig ug dili mabuang

Giunsa pagsugod ang pagsulay sa Ansible, i-refactor ang proyekto sa usa ka tuig ug dili mabuang

Kini ang transcript nga pasundayag sa DevOps-40 2020-03-18:

Sugod sa ikaduhang commit, ang bisan unsang code mahimong kabilin, tungod kay Inisyal nga mga ideya nagsugod sa paglain gikan sa mapintas nga kamatuoran. Dili kini maayo o daotan, kini usa ka gihatag nga lisud makiglalis ug kinahanglan nga puy-an. Kabahin niini nga proseso mao ang refactoring. Refactoring Infrastructure isip Code. Magsugod ang istorya kung giunsa pag-refactor ang Ansible sa usa ka tuig ug dili mabuang.

Ang Pagkatawo sa Kabilin

Adlaw #1: Pasyente Zero

Giunsa pagsugod ang pagsulay sa Ansible, i-refactor ang proyekto sa usa ka tuig ug dili mabuang

Kaniadto adunay usa ka kondisyon nga proyekto. Kini adunay usa ka Dev development team ug Ops engineers. Gisulbad nila ang parehas nga problema: kung giunsa ang pag-deploy sa mga server ug pagpadagan sa usa ka aplikasyon. Ang problema mao nga ang matag team nagsulbad niini nga problema sa kaugalingon nga paagi. Sa proyekto, nakahukom nga gamiton ang Ansible aron i-synchronize ang kahibalo tali sa Dev ug Ops teams.

Adlaw #89: Ang Pagkatawo sa Kabilin

Giunsa pagsugod ang pagsulay sa Ansible, i-refactor ang proyekto sa usa ka tuig ug dili mabuang

Sa walay pagtagad niini sa ilang kaugalingon, gusto nila nga buhaton kini kutob sa mahimo, apan nahimo kini nga kabilin. Sa unsang paagi kini mahitabo?

  • Naa tay dinalian nga tahas diri, magbuhat ta ug dirty hack unya ayohon.
  • Dili nimo kinahanglan nga isulat ang dokumentasyon ug ang tanan klaro kung unsa ang nahitabo dinhi.
  • Nahibal-an ko ang Ansible/Python/Bash/Terraform! Tan-awa kung giunsa ko makalikay!
  • Usa ako ka Tibuok Stack Overflow Developer ug gikopya kini gikan sa stackoverflow, wala ko kahibalo kung giunsa kini molihok, apan kini tan-awon nga cool ug nasulbad ang problema.

Ingon usa ka sangputanan, makakuha ka usa ka dili masabtan nga tipo sa code nga wala’y dokumentasyon, dili klaro kung unsa ang gibuhat niini, kung kinahanglan ba kini, apan ang problema mao nga kinahanglan nimo kini nga pauswagon, usbon kini, idugang ang mga saklay ug suporta. , nga nagpasamot pa sa kahimtang.

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

Adlaw #109: Kahibalo sa problema

Giunsa pagsugod ang pagsulay sa Ansible, i-refactor ang proyekto sa usa ka tuig ug dili mabuang

Ang una nga gipanamkon ug gipatuman nga modelo sa IaC wala na makatagbo sa mga kinahanglanon sa mga tiggamit / negosyo / uban pang mga koponan, ug ang oras sa paghimo sa mga pagbag-o sa imprastraktura dili na madawat. Niining higayona, ang pagsabut moabut nga panahon na aron molihok.

Pag-refactor sa IaC

Adlaw #139: Kinahanglan ba gyud nimo ang refactoring?

Giunsa pagsugod ang pagsulay sa Ansible, i-refactor ang proyekto sa usa ka tuig ug dili mabuang

Sa dili ka pa magdali sa refactor, kinahanglan nimo nga tubagon ang daghang hinungdanon nga mga pangutana:

  1. Nganong gikinahanglan nimo kining tanan?
  2. Naa kay time?
  3. Igo na ba ang kahibalo?

Kung dili ka mahibal-an kung unsaon pagtubag ang mga pangutana, unya ang refactoring matapos sa wala pa kini magsugod, o mahimo’g mograbe pa kini. Kay adunay kasinatian ( Ang Akong Nakat-onan gikan sa Pagsulay sa 200 ka Linya sa Infrastructure Code), unya ang proyekto nakadawat usa ka hangyo alang sa tabang aron ayohon ang mga tahas ug tabunan kini sa mga pagsulay.

Adlaw #149: Pag-andam sa refactoring

Giunsa pagsugod ang pagsulay sa Ansible, i-refactor ang proyekto sa usa ka tuig ug dili mabuang

Ang nag-unang butang mao ang pag-andam. Desisyuni kon unsay atong buhaton. Aron mahimo kini, nakigsulti kami, nangita mga lugar nga adunay problema ug nangita mga paagi aron masulbad kini. Among girekord ang resulta nga mga konsepto sa usa ka paagi, pananglitan usa ka artikulo sa panagtapok, aron nga kung ang pangutana motungha "unsa ang labing maayo?" o "unsa ang husto?" Wala mi nawala sa among dalan. Sa among kahimtang, nagpabilin kami sa ideya bahina ug pagmando: among gibungkag ang imprastraktura sa gagmay nga mga piraso / tisa. Kini nga pamaagi nagtugot kanimo sa pagkuha sa usa ka nahilit nga piraso sa imprastraktura, masabtan kung unsa ang gibuhat niini, tabonan kini sa mga pagsulay ug usba kini nga wala’y kahadlok nga maguba ang bisan unsang butang.

Giunsa pagsugod ang pagsulay sa Ansible, i-refactor ang proyekto sa usa ka tuig ug dili mabuang

Kini nahimo nga ang pagsulay sa imprastraktura nahimong sukaranan ug dinhi angay nga hisgutan ang pyramid sa pagsulay sa imprastraktura. Eksakto nga parehas nga ideya nga naa sa pag-uswag, apan alang sa imprastraktura: nagbalhin kami gikan sa barato nga dali nga mga pagsulay nga nagsusi sa yano nga mga butang, sama sa indentation, hangtod sa mahal nga hingpit nga mga pagsulay nga nag-deploy sa tibuuk nga imprastraktura.

Mga pagsulay nga mahimo nga pagsulay

Sa dili pa kami moadto aron ihulagway kung giunsa namon gisakop ang mga Ansible nga pagsulay sa proyekto, akong ihulagway ang mga pagsulay ug mga pamaagi nga nakahigayon nako nga magamit sa sayo pa aron masabtan ang konteksto sa mga desisyon nga gihimo.

Adlaw No. -997: Probisyon sa SDS

Giunsa pagsugod ang pagsulay sa Ansible, i-refactor ang proyekto sa usa ka tuig ug dili mabuang

Ang unang higayon nga akong gisulayan ang Ansible anaa sa usa ka proyekto sa pagpalambo sa SDS (Software Defined Storage). Adunay lahi nga artikulo bahin niini nga hilisgutan
Giunsa pagbuak ang mga bisikleta sa mga saklay sa pagsulay sa imong pag-apod-apod, apan sa laktud, natapos namo ang usa ka inverted testing pyramid ug ang pagsulay migahin kami og 60-90 ka minuto sa usa ka papel, nga usa ka taas nga panahon. Ang basehan mao ang e2e nga mga pagsulay, i.e. nagdeploy kami usa ka hingpit nga pag-install ug dayon gisulayan kini. Ang nakapait pa kay ang pag-imbento sa iyang kaugalingong biseklita. Apan kinahanglan nako nga dawaton, kini nga solusyon nagtrabaho ug gitugotan alang sa usa ka lig-on nga pagpagawas.

Adlaw # -701: Ansible ug pagsulay sa kusina

Giunsa pagsugod ang pagsulay sa Ansible, i-refactor ang proyekto sa usa ka tuig ug dili mabuang

Ang pag-uswag sa ideya sa pagsulay sa Ansible mao ang paggamit sa andam nga mga himan, nga mao ang pagsulay sa kusina / kusina-ci ug inspec. Ang pagpili gitino pinaagi sa kahibalo ni Ruby (alang sa dugang mga detalye, tan-awa ang artikulo sa Habré: Nagdamgo ba ang mga programmer sa YML sa pagsulay sa Ansible?) mas paspas nga nagtrabaho, mga 40 ka minuto alang sa 10 ka mga tahas. Naghimo kami usa ka pakete sa mga virtual nga makina ug nagpadagan sa mga pagsulay sa sulod.

Giunsa pagsugod ang pagsulay sa Ansible, i-refactor ang proyekto sa usa ka tuig ug dili mabuang

Sa kinatibuk-an, ang solusyon nagtrabaho, apan adunay pipila ka linugdang tungod sa heterogeneity. Kung ang gidaghanon sa mga tawo nga gisulayan nadugangan ngadto sa 13 ka batakang mga tahas ug 2 meta nga mga tahas nga naghiusa sa gagmay nga mga tahas, unya sa kalit ang mga pagsulay nagsugod sa pagdagan sulod sa 70 ka minuto, nga hapit 2 ka beses nga mas taas. Lisud ang paghisgot bahin sa XP (extreme programming) nga mga gawi tungod kay... walay gustong maghulat ug 70 minutos. Kini ang hinungdan sa pagbag-o sa pamaagi

Adlaw # -601: Ansible ug molekula

Giunsa pagsugod ang pagsulay sa Ansible, i-refactor ang proyekto sa usa ka tuig ug dili mabuang

Sa konsepto, parehas kini sa testkitchen, gibalhin ra namo ang role testing sa docker ug giusab ang stack. Ingon usa ka sangputanan, ang oras gipamubu sa usa ka stable nga 20-25 minuto alang sa 7 nga mga tahas.

Giunsa pagsugod ang pagsulay sa Ansible, i-refactor ang proyekto sa usa ka tuig ug dili mabuang

Pinaagi sa pagdugang sa gidaghanon sa nasulayan nga mga tahas ngadto sa 17 ug linting sa 45 ka mga tahas, among gipadagan kini sulod sa 28 minutos sa 2 ka jenkins nga mga ulipon.

Adlaw #167: Pagdugang Ansible nga mga pagsulay sa proyekto

Giunsa pagsugod ang pagsulay sa Ansible, i-refactor ang proyekto sa usa ka tuig ug dili mabuang

Lagmit, dili posible nga buhaton ang buluhaton sa refactoring nga nagdali. Ang buluhaton kinahanglan nga masukod aron imong maputol kini ngadto sa gagmay nga mga piraso ug kan-on ang elepante sa usa ka piraso sa usa ka kutsarita. Kinahanglan adunay usa ka pagsabut kung ikaw naglihok sa husto nga direksyon, kung unsa ka dugay ang pag-adto.

Giunsa pagsugod ang pagsulay sa Ansible, i-refactor ang proyekto sa usa ka tuig ug dili mabuang

Sa kinatibuk-an, dili igsapayan kung giunsa kini buhaton, mahimo nimong isulat sa usa ka piraso nga papel, mahimo nimong ibutang ang mga sticker sa aparador, mahimo ka maghimo mga buluhaton sa Jira, o mahimo nimong ablihan ang Google Docs ug isulat ang karon nga kahimtang. didto. Ang mga bitiis motubo gikan sa kamatuoran nga ang proseso dili diha-diha dayon, kini dugay ug makakapoy. Dili mahimo nga adunay gusto nga mawad-an ka sa mga ideya, kapoyon, ug mabug-atan sa panahon sa refactoring.

Ang refactoring yano ra:

  • Kaon.
  • Pagkatulog.
  • Gi-code.
  • Pagsulay sa IaC.
  • Usba

ug ato kining gisubli hangtod nga maabot nato ang gituyo nga tumong.

Giunsa pagsugod ang pagsulay sa Ansible, i-refactor ang proyekto sa usa ka tuig ug dili mabuang

Mahimong dili posible nga sugdan dayon ang pagsulay sa tanan, mao nga ang among una nga buluhaton mao ang pagsugod sa linting ug pagsusi sa syntax.

Adlaw #181: Green Build Master

Giunsa pagsugod ang pagsulay sa Ansible, i-refactor ang proyekto sa usa ka tuig ug dili mabuang

Ang linting usa ka gamay nga una nga lakang padulong sa Green Build Master. Dili kini makaguba sa halos bisan unsang butang, apan magtugot kini kanimo sa pag-debug sa mga proseso ug paghimo sa mga berde nga pagtukod sa Jenkins. Ang ideya mao ang pagpalambo sa mga batasan sa grupo:

  • Ang mga pula nga pagsulay dili maayo.
  • Mianhi ko aron ayohon ang usa ka butang ug sa samang higayon himoon ang kodigo nga mas maayo kay sa una nimo.

Adlaw #193: Gikan sa linting hangtod sa mga pagsulay sa yunit

Giunsa pagsugod ang pagsulay sa Ansible, i-refactor ang proyekto sa usa ka tuig ug dili mabuang

Ang paghimo sa proseso sa pagkuha sa code ngadto sa agalon, mahimo nimong sugdan ang proseso sa sunod-sunod nga pag-uswag - pag-ilis sa linting sa paglansad nga mga tahas, mahimo nimo kini nga wala’y idempotency. Kinahanglan nimong masabtan kung giunsa paggamit ang mga tahas ug kung giunsa kini molihok.

Adlaw #211: Gikan sa yunit hangtod sa mga pagsulay sa panagsama

Giunsa pagsugod ang pagsulay sa Ansible, i-refactor ang proyekto sa usa ka tuig ug dili mabuang

Kung ang kadaghanan sa mga tahas gitabonan sa mga pagsulay sa yunit ug ang tanan gilinya, mahimo ka magpadayon sa pagdugang mga pagsulay sa panagsama. Mga. pagsulay dili sa usa ka tisa sa imprastraktura, apan ang usa ka kombinasyon sa kanila, alang sa panig-ingnan, sa usa ka bug-os nga pananglitan configuration.

Giunsa pagsugod ang pagsulay sa Ansible, i-refactor ang proyekto sa usa ka tuig ug dili mabuang

Gamit ang jenkins, nakamugna kami og daghang mga yugto nga naglinya sa mga tahas/playbook nga magkaparehas, dayon mga pagsulay sa yunit sa mga sudlanan, ug sa katapusan mga pagsulay sa panagsama.

Jenkins + Docker + Ansible = Mga Pagsulay

Giunsa pagsugod ang pagsulay sa Ansible, i-refactor ang proyekto sa usa ka tuig ug dili mabuang

  1. Pag-checkout sa repo ug paghimo og mga yugto sa pagtukod.
  2. Pagdagan ang mga yugto sa lint playbook nga managsama.
  3. Pagdagan ang mga yugto sa lint role nga managsama.
  4. Pagdalagan ang syntax check nga mga yugto sa papel nga managsama.
  5. Pagdagan ang mga yugto sa papel sa pagsulay nga managsama.
    1. Lint nga papel.
    2. Susiha ang pagsalig sa ubang mga tahas.
    3. Susiha ang syntax.
    4. Paghimo usa ka pananglitan sa docker
    5. Pagdalagan molecule/default/playbook.yml.
    6. Susihon ang pagka-impotency.
  6. Pagdalag mga pagsulay sa panagsama
  7. Humana

Adlaw #271: Bus Factor

Giunsa pagsugod ang pagsulay sa Ansible, i-refactor ang proyekto sa usa ka tuig ug dili mabuang

Sa sinugdan, ang refactoring gihimo sa usa ka gamay nga grupo sa duha o tulo ka mga tawo. Gisusi nila ang code sa master. Sa paglabay sa panahon, ang team nakaugmad og kahibalo kon unsaon pagsulat sa code ug code review nakatampo sa pagsabwag sa kahibalo mahitungod sa imprastraktura ug kung giunsa kini pagtrabaho. Ang highlight dinhi mao nga ang mga tigrepaso gipili nga tagsa-tagsa, sumala sa usa ka iskedyul, i.e. uban sa pipila ka matang sa kalagmitan nga mosaka ka sa usa ka bag-ong piraso sa imprastraktura.

Giunsa pagsugod ang pagsulay sa Ansible, i-refactor ang proyekto sa usa ka tuig ug dili mabuang

Ug kini kinahanglan nga komportable dinhi. Kombenyente ang paghimo og usa ka pagrepaso, tan-awa sulod sa gambalay kung unsa nga buluhaton ang nahimo, ug ang kasaysayan sa mga panaghisgot. Gisagol namon ang jenkins + bitbucket + jira.

Apan sa ingon, ang usa ka pagrepaso dili usa ka panacea; sa usa ka paagi, nakasulod kami sa master code, nga naghimo kanamo nga mga flop test:

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

Unya ilang giayo kini, apan ang linugdang nagpabilin.

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

Adlaw #311: Pagpadali sa mga pagsulay

Giunsa pagsugod ang pagsulay sa Ansible, i-refactor ang proyekto sa usa ka tuig ug dili mabuang

Sa paglabay sa panahon, adunay daghang mga pagsulay, ang mga pagtukod midagan nga hinay, hangtod sa usa ka oras sa labing grabe nga kaso. Sa usa sa mga retro adunay usa ka hugpong sa mga pulong sama sa "maayo nga adunay mga pagsulay, apan kini hinay." Ingon usa ka sangputanan, gibiyaan namon ang mga pagsulay sa panagsama sa mga virtual nga makina ug gipahiangay kini alang sa Docker aron mahimo kini nga mas paspas. Gipulihan usab namo ang testinfra og ansible verifier aron makunhuran ang gidaghanon sa mga himan nga gigamit.

Giunsa pagsugod ang pagsulay sa Ansible, i-refactor ang proyekto sa usa ka tuig ug dili mabuang

Sa estrikto nga pagkasulti, adunay usa ka hugpong sa mga lakang:

  1. Pagbalhin sa docker.
  2. Kuhaa ang pagsulay sa papel, nga nadoble tungod sa mga dependency.
  3. Dugangi ang gidaghanon sa mga ulipon.
  4. Test run order.
  5. Abilidad sa lint TANAN lokal nga adunay usa ka sugo.

Giunsa pagsugod ang pagsulay sa Ansible, i-refactor ang proyekto sa usa ka tuig ug dili mabuang

Ingon usa ka sangputanan, ang Pipeline sa jenkins nahiusa usab

  1. Paghimo mga yugto sa pagtukod.
  2. Lint tanan sa parallel.
  3. Pagdagan ang mga yugto sa papel sa pagsulay nga managsama.
  4. Tapos na.

Mga leksyon nga nakat-unan

Likayi ang global variables

Ang Ansible naggamit sa global nga mga variable, adunay usa ka partial workaround sa porma private_role_vars, apan dili kini usa ka panacea.

Hatagan ko ikaw ug usa ka pananglitan. Pasagdi nato 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}}

Giunsa pagsugod ang pagsulay sa Ansible, i-refactor ang proyekto sa usa ka tuig ug dili mabuang

Ang kataw-anan mao nga ang resulta sa mga playbook magdepende sa mga butang nga dili kanunay klaro, sama sa pagkasunod-sunod kung diin gilista ang mga tahas. Ikasubo, kini ang kinaiya sa Ansible ug ang pinakamaayo nga mahimo mao ang paggamit sa usa ka matang sa kasabutan, pananglitan, sulod sa usa ka papel, gamita lamang ang variable nga gihulagway niini nga papel.

DAOTANG: gamita ang global variable.

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

MAAYONG: V defaults ipasabut ang gikinahanglan nga mga baryable ug sa ulahi gamiton lamang kini.

# 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

Mga baryable sa papel sa prefix

DAOTANG: gamita ang global variable.

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

MAAYONG: Sa mga tahas alang sa mga variable, gamita ang mga variable nga adunay prefix nga ngalan sa papel; kini, pinaagi sa pagtan-aw sa imbentaryo, mas dali nga masabtan kung unsa ang nanghitabo.

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

Gamita ang loop control variable

DAOTANG: Gamita ang standard variable sa mga loops item, kon kini nga buluhaton/playbook gilakip sa usa ka dapit, kini mahimong mosangpot sa wala damha nga kinaiya

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

MAAYONG: Paghubad sa usa ka variable sa usa ka loop pinaagi sa loop_var.

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

Susiha ang input variables

Miuyon kami sa paggamit sa mga variable prefix; dili kinahanglan nga susihon nga kini gihubit sama sa among gipaabut ug, pananglitan, wala gi-override sa usa ka walay sulod nga kantidad.

MAAYONG: Susiha ang mga variable.

- 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

Likayi ang mga diksyonaryo sa hash, gamita ang patag nga istruktura

Kung ang usa ka tahas nagpaabut sa usa ka hash/diksyonaryo sa usa sa mga parameter niini, nan kung gusto naton usbon ang usa sa mga parameter sa bata, kinahanglan naton i-override ang tibuuk nga hash/diksyonaryo, nga magdugang sa pagkakomplikado sa pag-configure.

DAOTANG: Gamita ang hash/diksyonaryo.

---
user:
  name: admin
  group: admin

MAAYONG: Paggamit ug flat variable structure.

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

Paghimo og idempotent playbook ug mga tahas

Ang mga tahas ug playbook kinahanglan nga idempotent, tungod kay makapamenos sa pag-anod sa configuration ug sa kahadlok nga maguba ang usa ka butang. Apan kung mogamit ka sa molekula, nan kini ang default nga pamatasan.

Likayi ang paggamit sa command shell modules

Ang paggamit sa usa ka shell module moresulta sa usa ka kinahanglanon nga paradigm sa paghulagway, imbes sa usa nga deklaratibo, nga mao ang kinauyokan sa Ansible.

Sulayi ang imong mga tahas pinaagi sa molekula

Ang molekula kay flexible kaayo nga butang, atong tan-awon ang pipila ka mga senaryo.

Molecule Daghang mga higayon

В molecule.yml sa seksyon platforms mahimo nimong ihulagway ang daghang mga host nga mahimo nimong i-deploy.

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

Busa, kini nga mga host mahimo unya converge.yml gamita:

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

Masaligan nga verifier

Sa molekula posible nga gamiton ang ansible aron masusi nga ang instance na-configure sa husto, dugang pa, kini ang default sukad sa pagpagawas 3. Dili kini flexible sama sa testinfra/inspec, pero masusi namo nga ang sulod sa file mohaum sa among gipaabot:

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

O i-deploy ang serbisyo, hulata nga kini magamit ug paghimo usa ka pagsulay sa aso:

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

Ibutang ang komplikado nga lohika sa mga module ug plugins

Ang Ansible nagpasiugda sa usa ka deklaratibo nga pamaagi, mao nga kung imong gihimo ang code branching, pagbag-o sa datos, mga module sa shell, ang code mahimong lisud basahon. Aron mabatukan kini ug huptan nga yano nga masabtan, dili kinahanglan nga suklan kini nga pagkakomplikado pinaagi sa paghimo sa imong kaugalingon nga mga module.

I-summarize ang mga Tip ug Tricks

  1. Likayi ang global variables.
  2. Mga baryable sa papel sa prefix.
  3. Gamita ang loop control variable.
  4. Susiha ang input variables.
  5. Likayi ang mga diksyonaryo sa hash, gamita ang patag nga istruktura.
  6. Paghimo og idempotent playbook ug mga tahas.
  7. Likayi ang paggamit sa command shell modules.
  8. Sulayi ang imong mga tahas pinaagi sa molekula.
  9. Ibutang ang komplikado nga lohika sa mga module ug plugins.

konklusyon

Giunsa pagsugod ang pagsulay sa Ansible, i-refactor ang proyekto sa usa ka tuig ug dili mabuang

Dili ka lang moadto ug i-refactor ang imprastraktura sa usa ka proyekto, bisan kung ikaw adunay IaC. Kini usa ka taas nga proseso nga nanginahanglan pasensya, oras ug kahibalo.

UPD1 2020.05.01 20:30 - Para sa panguna nga profiling sa mga playbook nga imong magamit callback_whitelist = profile_tasks aron masabtan kung unsa gyud ang molihok sa dugay nga panahon. Unya agi mi Ansible nga acceleration classics. Mahimo usab nimo sulayan mitogen
UPD2 2020.05.03 16:34 - Iningles nga bersyon

Source: www.habr.com

Idugang sa usa ka comment