Sut i ddechrau profi Ansible, ailffactorio'r prosiect mewn blwyddyn a pheidio â mynd yn wallgof

Sut i ddechrau profi Ansible, ailffactorio'r prosiect mewn blwyddyn a pheidio â mynd yn wallgof

Dyma'r trawsgrifiad perfformiadau ar DevOps-40 2020-03-18:

Gan ddechrau o'r ail ymrwymiad, mae unrhyw god yn dod yn etifeddiaeth, oherwydd syniadau cychwynnol yn dechrau ymwahanu oddi wrth realiti llym. Nid yw hyn yn dda nac yn ddrwg, mae'n rhodd sy'n anodd dadlau ag ef ac y mae'n rhaid byw ag ef. Rhan o'r broses hon yw ailffactorio. Ailystyried Isadeiledd fel Cod. Gadewch i'r stori ddechrau ar sut i ailystyried Ansible mewn blwyddyn a pheidio â mynd yn wallgof.

Genedigaeth Etifeddiaeth

Diwrnod #1: Claf Sero

Sut i ddechrau profi Ansible, ailffactorio'r prosiect mewn blwyddyn a pheidio â mynd yn wallgof

Un tro roedd prosiect amodol. Roedd ganddo dîm datblygu Dev a pheirianwyr Ops. Roeddent yn datrys yr un broblem: sut i ddefnyddio gweinyddwyr a rhedeg rhaglen. Y broblem oedd bod pob tîm wedi datrys y broblem hon yn ei ffordd ei hun. Yn y prosiect, penderfynwyd defnyddio Ansible i gydamseru gwybodaeth rhwng y timau Dev ac Ops.

Diwrnod #89: Genedigaeth Etifeddiaeth

Sut i ddechrau profi Ansible, ailffactorio'r prosiect mewn blwyddyn a pheidio â mynd yn wallgof

Heb sylwi arno eu hunain, roeddent am ei wneud orau ag y bo modd, ond daeth yn etifeddiaeth. Sut mae hyn yn digwydd?

  • Mae gennym dasg frys yma, gadewch i ni wneud darn budr ac yna ei drwsio.
  • Nid oes rhaid i chi ysgrifennu dogfennaeth ac mae popeth yn glir beth sy'n digwydd yma.
  • Dwi'n nabod Ansible/Python/Bash/Terraform! Edrychwch sut y gallaf osgoi!
  • Rwy'n Ddatblygwr Gorlif Stack Llawn ac wedi copïo hwn o stackoverflow, nid wyf yn gwybod sut mae'n gweithio, ond mae'n edrych yn cŵl ac yn datrys y broblem.

O ganlyniad, gallwch gael math annealladwy o god nad oes dogfennaeth ar ei gyfer, nid yw'n glir beth mae'n ei wneud, a oes ei angen, ond y broblem yw bod angen ichi ei ddatblygu, ei addasu, ychwanegu baglau a chynhalwyr. , gan wneud y sefyllfa hyd yn oed yn waeth.

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

Diwrnod #109: Ymwybyddiaeth o'r broblem

Sut i ddechrau profi Ansible, ailffactorio'r prosiect mewn blwyddyn a pheidio â mynd yn wallgof

Nid yw'r model IaC a luniwyd yn wreiddiol ac a roddwyd ar waith bellach yn bodloni gofynion defnyddwyr / busnes / timau eraill, ac mae'r amser i wneud newidiadau i'r seilwaith yn peidio â bod yn dderbyniol. Ar hyn o bryd, daw'r ddealltwriaeth ei bod hi'n bryd gweithredu.

IaC ailffactorio

Diwrnod # 139: A oes gwir angen ailffactorio?

Sut i ddechrau profi Ansible, ailffactorio'r prosiect mewn blwyddyn a pheidio â mynd yn wallgof

Cyn i chi ruthro i ailffactorio, rhaid i chi ateb nifer o gwestiynau pwysig:

  1. Pam mae angen hyn i gyd arnoch chi?
  2. Oes gennych chi amser?
  3. Ydy gwybodaeth yn ddigon?

Os nad ydych yn gwybod sut i ateb y cwestiynau, yna bydd yr ailffactorio yn dod i ben cyn iddo ddechrau hyd yn oed, neu efallai y bydd yn gwaethygu. Achos wedi cael profiad ( Yr hyn a Ddysgais o Brofi 200 o Linellau o God Seilwaith), yna derbyniodd y prosiect gais am help i drwsio'r rolau a'u gorchuddio â phrofion.

Diwrnod # 149: Paratoi'r ailffactoreiddio

Sut i ddechrau profi Ansible, ailffactorio'r prosiect mewn blwyddyn a pheidio â mynd yn wallgof

Y peth cyntaf yw paratoi. Penderfynwch beth fyddwn ni'n ei wneud. I wneud hyn, rydym yn cyfathrebu, yn dod o hyd i feysydd problem ac yn darganfod ffyrdd o'u datrys. Rydyn ni'n cofnodi'r cysyniadau sy'n deillio o hynny rywsut, er enghraifft erthygl mewn cydlifiad, fel pan fydd y cwestiwn yn codi "beth sydd orau?" neu "pa un sy'n gywir?" Nid ydym wedi colli ein ffordd. Yn ein hachos ni, fe wnaethon ni gadw at y syniad rhaniad a rheol: rydym yn rhannu'r seilwaith yn ddarnau bach/brics. Mae'r dull hwn yn caniatáu ichi gymryd darn ynysig o seilwaith, deall yr hyn y mae'n ei wneud, ei orchuddio â phrofion a'i newid heb ofni torri unrhyw beth.

Sut i ddechrau profi Ansible, ailffactorio'r prosiect mewn blwyddyn a pheidio â mynd yn wallgof

Mae'n ymddangos bod profi seilwaith yn dod yn gonglfaen ac yma mae'n werth sôn am y pyramid profi seilwaith. Yr un syniad yn union sy'n cael ei ddatblygu, ond ar gyfer seilwaith: rydym yn symud o brofion cyflym rhad sy'n gwirio pethau syml, megis mewnoliad, i brofion llawn drud sy'n defnyddio'r seilwaith cyfan.

Ymdrechion profi aswy

Cyn i ni fynd i ddisgrifio sut y gwnaethom ymdrin â phrofion Ansible ar y prosiect, byddaf yn disgrifio'r ymdrechion a'r dulliau gweithredu y cefais gyfle i'w defnyddio'n gynharach er mwyn deall cyd-destun y penderfyniadau a wnaed.

Diwrnod Rhif -997: darpariaeth SDS

Sut i ddechrau profi Ansible, ailffactorio'r prosiect mewn blwyddyn a pheidio â mynd yn wallgof

Y tro cyntaf i mi brofi Ansible oedd ar brosiect i ddatblygu SDS (Software Defined Storage). Mae erthygl ar wahân ar y pwnc hwn
Sut i dorri beiciau dros faglau wrth brofi eich dosbarthiad, ond yn fyr, rydym yn dod i ben i fyny gyda byramid profi gwrthdro a phrofi rydym yn treulio 60-90 munud ar un rôl, sy'n amser hir. Y sail oedd profion e2e, h.y. gwnaethom ddefnyddio gosodiad llawn ac yna ei brofi. Yr hyn a oedd yn waeth fyth oedd dyfeisio ei feic ei hun. Ond mae'n rhaid i mi gyfaddef, roedd yr ateb hwn yn gweithio ac yn caniatáu rhyddhad sefydlog.

Diwrnod # -701: Cegin ansible a phrawf

Sut i ddechrau profi Ansible, ailffactorio'r prosiect mewn blwyddyn a pheidio â mynd yn wallgof

Datblygiad y syniad profi Ansible oedd y defnydd o offer parod, sef cegin prawf / cegin-ci ac inspec. Pennwyd y dewis gan wybodaeth am Ruby (am ragor o fanylion, gweler yr erthygl ar Habré: A yw rhaglenwyr YML yn breuddwydio am brofi Ansible?) gweithio'n gyflymach, tua 40 munud ar gyfer 10 rôl. Fe wnaethon ni greu pecyn o beiriannau rhithwir a chynnal profion y tu mewn.

Sut i ddechrau profi Ansible, ailffactorio'r prosiect mewn blwyddyn a pheidio â mynd yn wallgof

Yn gyffredinol, roedd yr ateb yn gweithio, ond roedd rhywfaint o waddod oherwydd heterogeneity. Pan gynyddwyd nifer y bobl a brofwyd i 13 rôl sylfaenol a 2 rôl meta gan gyfuno rolau llai, yna'n sydyn dechreuodd y profion redeg am 70 munud, sydd bron i 2 gwaith yn hirach. Roedd yn anodd siarad am arferion XP (rhaglenu eithafol) oherwydd... does neb eisiau aros 70 munud. Dyma oedd y rheswm dros newid y dull gweithredu

Diwrnod # -601: Ansible a moleciwl

Sut i ddechrau profi Ansible, ailffactorio'r prosiect mewn blwyddyn a pheidio â mynd yn wallgof

Yn gysyniadol, mae hyn yn debyg i testkitchen, dim ond i ni symud profion rôl i docwr a newid y pentwr. O ganlyniad, gostyngwyd yr amser i 20-25 munud sefydlog ar gyfer 7 rôl.

Sut i ddechrau profi Ansible, ailffactorio'r prosiect mewn blwyddyn a pheidio â mynd yn wallgof

Trwy gynyddu nifer y rolau a brofwyd i 17 a lintio 45 rôl, fe wnaethom redeg hyn mewn 28 munud ar 2 gaethweision jenkins.

Diwrnod #167: Ychwanegu profion Ansible i'r prosiect

Sut i ddechrau profi Ansible, ailffactorio'r prosiect mewn blwyddyn a pheidio â mynd yn wallgof

Yn fwyaf tebygol, ni fydd yn bosibl gwneud y dasg ailffactorio ar frys. Rhaid i'r dasg fod yn fesuradwy fel y gallwch ei thorri'n ddarnau bach a bwyta'r eliffant fesul darn gyda llwy de. Rhaid deall a ydych yn symud i'r cyfeiriad cywir, pa mor hir i fynd.

Sut i ddechrau profi Ansible, ailffactorio'r prosiect mewn blwyddyn a pheidio â mynd yn wallgof

Yn gyffredinol, nid oes ots sut y caiff ei wneud, gallwch ysgrifennu ar ddarn o bapur, gallwch roi sticeri ar y cwpwrdd, gallwch greu tasgau yn Jira, neu gallwch agor Google Docs ac ysgrifennu'r statws cyfredol yno. Mae coesau'n tyfu o'r ffaith nad yw'r broses yn syth, bydd yn hir ac yn ddiflas. Mae’n annhebygol bod unrhyw un eisiau ichi losgi allan o syniadau, blino, a chael eich llethu wrth ailffactorio.

Mae'r ailffactorio yn syml:

  • Bwyta.
  • Cwsg.
  • Côd.
  • prawf IaC.
  • Ailadrodd

ac ailadroddwn hyn nes cyrraedd y nod bwriadedig.

Sut i ddechrau profi Ansible, ailffactorio'r prosiect mewn blwyddyn a pheidio â mynd yn wallgof

Efallai na fydd yn bosibl dechrau profi popeth ar unwaith, felly ein tasg gyntaf oedd dechrau gyda lintio a gwirio'r gystrawen.

Diwrnod #181: Green Build Master

Sut i ddechrau profi Ansible, ailffactorio'r prosiect mewn blwyddyn a pheidio â mynd yn wallgof

Mae linting yn gam cyntaf bach tuag at Green Build Master. Ni fydd hyn yn torri bron unrhyw beth, ond bydd yn caniatáu ichi ddadfygio prosesau a gwneud adeiladau gwyrdd yn Jenkins. Y syniad yw datblygu arferion ymhlith y tîm:

  • Mae profion coch yn ddrwg.
  • Deuthum i drwsio rhywbeth ac ar yr un pryd gwneud y cod ychydig yn well nag yr oedd o'ch blaen chi.

Diwrnod #193: O leinin i brofion uned

Sut i ddechrau profi Ansible, ailffactorio'r prosiect mewn blwyddyn a pheidio â mynd yn wallgof

Ar ôl adeiladu'r broses o gael y cod i mewn i'r meistr, gallwch chi ddechrau'r broses o welliant cam wrth gam - gan ddisodli lintin â rolau lansio, gallwch chi hyd yn oed ei wneud heb analluedd. Mae angen i chi ddeall sut i gymhwyso rolau a sut maent yn gweithio.

Diwrnod #211: O uned i brofion integreiddio

Sut i ddechrau profi Ansible, ailffactorio'r prosiect mewn blwyddyn a pheidio â mynd yn wallgof

Pan fydd y rhan fwyaf o rolau wedi'u gorchuddio â phrofion uned a phopeth wedi'i leinio, gallwch symud ymlaen i ychwanegu profion integreiddio. Y rhai. profi nid bricsen unigol yn y seilwaith, ond cyfuniad ohonynt, er enghraifft, ffurfweddiad achos llawn.

Sut i ddechrau profi Ansible, ailffactorio'r prosiect mewn blwyddyn a pheidio â mynd yn wallgof

Gan ddefnyddio jenkins, fe wnaethom gynhyrchu llawer o gamau a oedd yn leinio rolau / llyfrau chwarae ochr yn ochr, yna profion uned mewn cynwysyddion, ac yn olaf profion integreiddio.

Jenkins + Dociwr + Atebol = Profion

Sut i ddechrau profi Ansible, ailffactorio'r prosiect mewn blwyddyn a pheidio â mynd yn wallgof

  1. Desg dalu a chynhyrchu camau adeiladu.
  2. Rhedeg camau llyfr chwarae lint ochr yn ochr.
  3. Rhedeg camau rôl lint yn gyfochrog.
  4. Rhedeg camau rôl gwirio cystrawen ochr yn ochr.
  5. Rhedeg camau rôl prawf ochr yn ochr.
    1. Rôl Lint.
    2. Gwirio dibyniaeth ar rolau eraill.
    3. Gwiriwch gystrawen.
    4. Creu enghraifft docwr
    5. Rhedeg moleciwl/default/playbook.yml.
    6. Gwiriwch analluedd.
  6. Rhedeg profion integreiddio
  7. Gorffen

Diwrnod #271: Ffactor Bws

Sut i ddechrau profi Ansible, ailffactorio'r prosiect mewn blwyddyn a pheidio â mynd yn wallgof

Ar y dechrau, roedd ailffactorio yn cael ei wneud gan grŵp bach o ddau neu dri o bobl. Maent yn adolygu'r cod yn y meistr. Dros amser, datblygodd y tîm wybodaeth am sut i ysgrifennu adolygiad cod a chyfrannodd at ledaenu gwybodaeth am y seilwaith a sut mae'n gweithio. Yr uchafbwynt yma oedd bod yr adolygwyr yn cael eu dewis fesul un, yn ôl amserlen, h.y. gyda rhywfaint o debygolrwydd y byddwch yn dringo i mewn i ddarn newydd o seilwaith.

Sut i ddechrau profi Ansible, ailffactorio'r prosiect mewn blwyddyn a pheidio â mynd yn wallgof

A dylai fod yn gyfforddus yma. Mae’n gyfleus cynnal adolygiad, gweld o fewn fframwaith pa dasg a gyflawnwyd, a hanes trafodaethau. Rydym wedi integreiddio jenkins + bitbucket + jira.

Ond o'r herwydd, nid yw adolygiad yn ateb i bob problem; rhywsut, fe wnaethon ni fynd i mewn i'r prif god, a wnaeth i ni gynnal profion fflop:

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

Yna gosodasant ef, ond arhosodd y gweddill.

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

Diwrnod #311: Cyflymu profion

Sut i ddechrau profi Ansible, ailffactorio'r prosiect mewn blwyddyn a pheidio â mynd yn wallgof

Dros amser, bu mwy o brofion, rhedodd y gwaith adeiladu yn arafach, hyd at awr yn yr achos gwaethaf. Ar un o’r retros roedd ymadrodd fel “mae’n dda bod yna brofion, ond maen nhw’n araf.” O ganlyniad, fe wnaethom roi'r gorau i brofion integreiddio ar beiriannau rhithwir a'u haddasu ar gyfer Docker i'w gwneud yn gyflymach. Fe wnaethom hefyd ddisodli testinfra gyda dilysydd asible i leihau nifer yr offer a ddefnyddir.

Sut i ddechrau profi Ansible, ailffactorio'r prosiect mewn blwyddyn a pheidio â mynd yn wallgof

A siarad yn fanwl gywir, roedd set o fesurau:

  1. Newid i docwr.
  2. Dileu profion rôl, sy'n cael eu dyblygu oherwydd dibyniaethau.
  3. Cynyddu nifer y caethweision.
  4. Gorchymyn rhedeg prawf.
  5. Y gallu i lint I GYD yn lleol gydag un gorchymyn.

Sut i ddechrau profi Ansible, ailffactorio'r prosiect mewn blwyddyn a pheidio â mynd yn wallgof

O ganlyniad, roedd Piblinell ar jenkins hefyd yn unedig

  1. Cynhyrchu camau adeiladu.
  2. Lint i gyd yn gyfochrog.
  3. Rhedeg camau rôl prawf ochr yn ochr.
  4. Gorffen.

gwersi a ddysgwyd

Osgoi newidynnau byd-eang

Mae Ansible yn defnyddio newidynnau byd-eang, mae datrysiad rhannol yn y ffurf preifat_rôl_vars, ond nid yw hyn yn ateb i bob problem.

Gadewch imi roi enghraifft ichi. Gadewch inni gael 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}}

Sut i ddechrau profi Ansible, ailffactorio'r prosiect mewn blwyddyn a pheidio â mynd yn wallgof

Y peth doniol yw y bydd canlyniad llyfrau chwarae yn dibynnu ar bethau nad ydynt bob amser yn amlwg, megis y drefn y mae rolau yn cael eu rhestru. Yn anffodus, dyma natur Ansible a'r peth gorau y gellir ei wneud yw defnyddio rhyw fath o gytundeb, er enghraifft, o fewn rôl, defnyddio'r newidyn a ddisgrifir yn y rôl hon yn unig.

GWAEL: defnyddio newidyn byd-eang.

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

DA: V. defaults diffinio'r newidynnau angenrheidiol a'u defnyddio yn ddiweddarach yn unig.

# 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

Rhagddodiad newidynnau rôl

GWAEL: defnyddio newidyn byd-eang.

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

DA: Mewn rolau ar gyfer newidynnau, defnyddiwch newidynnau sydd wedi’u rhagddodi ag enw’r rôl; bydd hyn, trwy edrych ar y rhestr eiddo, yn ei gwneud hi’n haws deall beth sy’n digwydd.

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

Defnyddiwch newidyn rheoli dolen

GWAEL: Defnyddiwch newidyn safonol mewn dolenni item, os yw'r dasg/llyfr chwarae hwn wedi'i gynnwys yn rhywle, gallai hyn arwain at ymddygiad annisgwyl

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

DA: Ailddiffiniwch newidyn mewn dolen trwy loop_var.

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

Gwiriwch newidynnau mewnbwn

Fe wnaethom gytuno i ddefnyddio rhagddodiaid newidiol; ni ​​fyddai’n ddiangen gwirio eu bod wedi’u diffinio fel y disgwyliwn ac, er enghraifft, na chawsant eu diystyru gan werth gwag

DA: Gwirio newidynnau.

- 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

Osgoi geiriaduron hashes, defnyddiwch strwythur gwastad

Os yw rôl yn disgwyl hash / geiriadur yn un o'i baramedrau, yna os ydym am newid un o baramedrau'r plentyn, bydd angen i ni ddiystyru'r hash / geiriadur cyfan, a fydd yn cynyddu cymhlethdod cyfluniad.

GWAEL: Defnyddiwch hash/geiriadur.

---
user:
  name: admin
  group: admin

DA: Defnyddiwch strwythur newidiol gwastad.

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

Creu llyfrau chwarae a rolau analluog

Rhaid i rolau a llyfrau chwarae fod yn ddiamwys, oherwydd yn lleihau drifft cyfluniad ac ofn torri rhywbeth. Ond os ydych chi'n defnyddio moleciwl, yna dyma'r ymddygiad diofyn.

Ceisiwch osgoi defnyddio modiwlau cregyn gorchymyn

Mae defnyddio modiwl cragen yn arwain at baradeim disgrifio hanfodol, yn lle'r un datganiadol, sef craidd Ansible.

Profwch eich rolau trwy foleciwl

Mae moleciwl yn beth hyblyg iawn, gadewch i ni edrych ar ychydig o senarios.

Moleciwl Achosion lluosog

В molecule.yml yn adran platforms gallwch ddisgrifio llawer o westeion y gallwch eu defnyddio.

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

Yn unol â hynny, gall y gwesteiwyr hyn wedyn fod converge.yml defnyddio:

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

Dilyswr aswy

Mewn moleciwl mae'n bosibl defnyddio ansible i wirio bod yr enghraifft wedi'i ffurfweddu'n gywir, ar ben hynny, dyma'r rhagosodiad ers rhyddhau 3. Nid yw mor hyblyg â testinfra/inspec, ond gallwn wirio bod cynnwys y ffeil yn cyd-fynd â'n disgwyliadau:

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

Neu defnyddiwch y gwasanaeth, arhoswch iddo ddod ar gael a gwnewch brawf mwg:

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

Rhowch resymeg gymhleth mewn modiwlau ac ategion

Mae Ansible yn argymell dull datganiadol, felly pan fyddwch chi'n gwneud canghennu cod, trawsnewid data, modiwlau cregyn, mae'r cod yn dod yn anodd ei ddarllen. Er mwyn mynd i'r afael â hyn a'i gadw'n syml i'w ddeall, ni fyddai'n ddiangen mynd i'r afael â'r cymhlethdod hwn trwy greu eich modiwlau eich hun.

Crynhoi Awgrymiadau a Thriciau

  1. Osgoi newidynnau byd-eang.
  2. Rhagddodiad newidynnau rôl.
  3. Defnyddiwch newidyn rheoli dolen.
  4. Gwiriwch newidynnau mewnbwn.
  5. Osgoi geiriaduron hashes, defnyddiwch strwythur gwastad.
  6. Creu llyfrau chwarae a rolau analluog.
  7. Ceisiwch osgoi defnyddio modiwlau cregyn gorchymyn.
  8. Profwch eich rolau trwy foleciwl.
  9. Rhowch resymeg gymhleth mewn modiwlau ac ategion.

Casgliad

Sut i ddechrau profi Ansible, ailffactorio'r prosiect mewn blwyddyn a pheidio â mynd yn wallgof

Ni allwch fynd i ail-ffactorio'r seilwaith ar brosiect, hyd yn oed os oes gennych IaC. Mae hon yn broses hir sy'n gofyn am amynedd, amser a gwybodaeth.

UPD1 2020.05.01 20:30 — Ar gyfer proffilio cynradd o lyfrau chwarae y gallwch eu defnyddio callback_whitelist = profile_tasks i ddeall beth yn union sy'n gweithio am amser hir. Yna rydym yn mynd drwy Clasuron cyflymu asible. Gallwch chi hefyd geisio mitogen
UPD2 2020.05.03 16:34 - fersiwn Saesneg

Ffynhonnell: hab.com

Ychwanegu sylw