Yuav pib sim Ansible li cas, rov ua qhov project hauv ib xyoos thiab tsis mus vwm

Yuav pib sim Ansible li cas, rov ua qhov project hauv ib xyoos thiab tsis mus vwm

Nov yog daim ntawv sau tseg kev ua yeeb yam rau DevOps-40 2020-03-18:

Pib los ntawm kev cog lus thib ob, txhua txoj cai dhau los ua keeb kwm, vim thawj cov tswv yim pib sib txawv ntawm qhov tseeb hnyav. Qhov no tsis yog qhov zoo lossis qhov phem, nws yog ib qho uas nyuaj rau kev sib cav thiab yuav tsum nyob nrog. Ib feem ntawm cov txheej txheem no yog refactoring. Refactoring Infrastructure li Code. Cia zaj dab neeg pib yuav ua li cas refactor Ansible hauv ib xyoos thiab tsis txhob vwm.

Yug Los Ntawm Txoj Cai

Hnub #1: Tus Neeg Mob Zero

Yuav pib sim Ansible li cas, rov ua qhov project hauv ib xyoos thiab tsis mus vwm

Muaj ib zaug muaj ib qhov project uas muaj cai. Nws muaj pab pawg Dev txhim kho thiab Ops engineers. Lawv tau daws qhov teeb meem tib yam: yuav ua li cas xa cov servers thiab khiav daim ntawv thov. Qhov teeb meem yog tias txhua pab neeg daws qhov teeb meem no ntawm nws tus kheej. Ntawm qhov project, nws tau txiav txim siab siv Ansible los synchronize kev paub ntawm pawg Dev thiab Ops.

Hnub #89: Hnub Yug Ntawm Txoj Cai

Yuav pib sim Ansible li cas, rov ua qhov project hauv ib xyoos thiab tsis mus vwm

Yog tsis pom lawv tus kheej, lawv xav ua kom zoo tshaj plaws li qhov ua tau, tab sis nws tau hloov mus ua qub txeeg qub teg. Qhov no tshwm sim li cas?

  • Peb muaj ib txoj hauj lwm ceev ntawm no, cia peb ua ib tug qias neeg hack thiab ces kho nws.
  • Koj tsis tas yuav sau cov ntaub ntawv thiab txhua yam yog qhov tseeb tias qhov tshwm sim ntawm no.
  • Kuv paub Ansible/Python/Bash/Terraform! Saib seb kuv tuaj yeem ua li cas!
  • Kuv yog Tus Tsim Nyog Tag Nrho Overflow thiab theej qhov no los ntawm stackoverflow, Kuv tsis paub tias nws ua haujlwm li cas, tab sis nws zoo li txias thiab daws qhov teeb meem.

Raws li qhov tshwm sim, koj tuaj yeem tau txais ib qho kev nkag siab tsis zoo ntawm cov cai uas tsis muaj cov ntaub ntawv, nws tsis paub meej tias nws ua dab tsi, txawm tias nws xav tau, tab sis qhov teeb meem yog tias koj yuav tsum tsim kho nws, hloov kho, ntxiv crutches thiab kev txhawb nqa. , ua rau qhov xwm txheej hnyav dua.

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

Hnub #109: Paub txog qhov teeb meem

Yuav pib sim Ansible li cas, rov ua qhov project hauv ib xyoos thiab tsis mus vwm

Qhov pib xeeb tub thiab ua tiav IaC qauv tsis ua raws li cov kev cai ntawm cov neeg siv / kev lag luam / lwm pab pawg, thiab lub sijhawm los hloov cov kev tsim kho vaj tse yuav tsum tsis kam lees. Lub sijhawm no, kev nkag siab los txog tias nws yog lub sijhawm los nqis tes ua.

IaC refactoring

Hnub #139: Koj puas xav tau refactoring tiag tiag?

Yuav pib sim Ansible li cas, rov ua qhov project hauv ib xyoos thiab tsis mus vwm

Ua ntej koj maj nrawm rau refactor, koj yuav tsum teb ntau cov lus nug tseem ceeb:

  1. Vim li cas koj xav tau tag nrho cov no?
  2. Koj puas muaj sijhawm?
  3. Puas yog kev paub txaus?

Yog tias koj tsis paub yuav ua li cas teb cov lus nug, tom qab ntawd qhov kev rov ua haujlwm yuav xaus ua ntej nws tseem pib, lossis nws tsuas yog mob hnyav dua. Vim muaj kev paub ( Qhov kuv kawm tau los ntawm Kev Xeem 200 Kab ntawm Infrastructure Code), ces qhov project tau txais kev thov kev pab los txhim kho lub luag haujlwm thiab npog lawv nrog kev sim.

Hnub #149: Npaj lub refactoring

Yuav pib sim Ansible li cas, rov ua qhov project hauv ib xyoos thiab tsis mus vwm

Thawj qhov yog npaj. Txiav txim siab seb peb yuav ua li cas. Ua li no, peb sib txuas lus, nrhiav thaj chaw teeb meem thiab nrhiav txoj hauv kev los daws lawv. Peb sau cov ntsiab lus tshwm sim, piv txwv li ib tsab xov xwm hauv kev sib txuas, yog li ntawd thaum lo lus nug tshwm sim "Dab tsi yog qhov zoo tshaj?" los yog "qhov twg yog qhov tseeb?" Peb tsis tau poob peb txoj kev. Hauv peb qhov xwm txheej, peb daig rau lub tswv yim faib thiab kav: peb tawg cov txheej txheem rau hauv me me / cib. Txoj hauv kev no tso cai rau koj los ua ib qho kev sib cais ntawm cov txheej txheem, nkag siab tias nws ua li cas, npog nws nrog kev sim thiab hloov nws yam tsis muaj kev ntshai ntawm kev rhuav tshem dab tsi.

Yuav pib sim Ansible li cas, rov ua qhov project hauv ib xyoos thiab tsis mus vwm

Nws hloov tawm tias kev ntsuam xyuas kev tsim kho vaj tse tau dhau los ua lub hauv paus thiab ntawm no nws tsim nyog hais txog cov txheej txheem kev sim pyramid. Raws nraim tib lub tswv yim uas yog nyob rau hauv txoj kev loj hlob, tab sis rau infrastructure: peb tab tom hloov los ntawm pheej yig ceev kev ntsuam xyuas uas xyuas tej yam yooj yim, xws li indentation, mus rau kim tag nrho-fledged xeem uas deploy tag nrho cov infrastructure.

Kev sim ua kom tiav

Ua ntej peb mus piav qhia yuav ua li cas peb them cov kev xeem Ansible ntawm qhov project, kuv yuav piav qhia txog qhov kev sim thiab cov txheej txheem uas kuv muaj sijhawm los siv ua ntej kom nkag siab txog cov ntsiab lus ntawm kev txiav txim siab.

Hnub No. -997: SDS muab

Yuav pib sim Ansible li cas, rov ua qhov project hauv ib xyoos thiab tsis mus vwm

Thawj zaug kuv sim Ansible yog nyob rau hauv ib qhov project los tsim SDS (Software Defined Storage). Muaj ib tsab xov xwm cais ntawm lub ncauj lus no
Yuav ua li cas rhuav cov tsheb kauj vab hla lub crutches thaum kuaj koj qhov kev faib tawm, tab sis nyob rau hauv luv luv, peb xaus nrog ib tug inverted test pyramid thiab kev sim peb siv 60-90 feeb ntawm ib lub luag hauj lwm, uas yog ib tug ntev lub sij hawm. Lub hauv paus yog e2e xeem, i.e. peb deployed ib tug tag nrho-fledged installation thiab ces sim nws. Dab tsi yog qhov hnyav dua yog qhov kev tsim kho ntawm nws tus kheej lub tsheb kauj vab. Tab sis kuv yuav tsum lees, qhov kev daws teeb meem no tau ua haujlwm thiab tso cai rau kev tso tawm ruaj khov.

Hnub #-701: Tsis pom zoo thiab sim chav ua noj

Yuav pib sim Ansible li cas, rov ua qhov project hauv ib xyoos thiab tsis mus vwm

Txoj kev loj hlob ntawm lub tswv yim kev xeem Ansible yog kev siv cov cuab yeej npaj txhij, uas yog sim chav ua noj / chav ua noj-ci thiab inspec. Qhov kev xaiv tau txiav txim siab los ntawm kev paub txog Ruby (kom paub meej ntxiv, saib tsab xov xwm ntawm HabrΓ©: Puas yog YML programmers npau suav ntawm kev sim Ansible?) ua haujlwm sai dua, txog 40 feeb rau 10 lub luag haujlwm. Peb tsim ib pob ntawm cov tshuab virtual thiab khiav cov kev xeem hauv.

Yuav pib sim Ansible li cas, rov ua qhov project hauv ib xyoos thiab tsis mus vwm

Feem ntau, cov kev daws tau ua haujlwm, tab sis muaj qee cov sediment vim heterogeneity. Thaum tus naj npawb ntawm cov neeg kuaj tau nce mus rau 13 lub luag haujlwm tseem ceeb thiab 2 lub luag haujlwm meta ua ke nrog cov luag haujlwm me me, tom qab ntawd mam li nco dheev cov kev sim pib khiav rau 70 feeb, uas yuav luag 2 zaug ntev dua. Nws nyuaj rau tham txog XP (kev ua haujlwm siab heev) kev coj ua vim ... tsis muaj leej twg xav tos 70 feeb. Qhov no yog vim li cas thiaj hloov txoj hauv kev

Hnub #-601: Ansible thiab molecule

Yuav pib sim Ansible li cas, rov ua qhov project hauv ib xyoos thiab tsis mus vwm

Conceptually, qhov no zoo ib yam li testkitchen, tsuas yog peb txav lub luag hauj lwm kuaj rau docker thiab hloov pawg. Yog li ntawd, lub sij hawm raug txo kom ruaj khov 20-25 feeb rau 7 lub luag haujlwm.

Yuav pib sim Ansible li cas, rov ua qhov project hauv ib xyoos thiab tsis mus vwm

Los ntawm kev nce tus naj npawb ntawm cov luag haujlwm kuaj rau 17 thiab linting 45 lub luag haujlwm, peb tau khiav qhov no hauv 28 feeb ntawm 2 jenkins qhev.

Hnub #167: Ntxiv Ansible xeem rau qhov project

Yuav pib sim Ansible li cas, rov ua qhov project hauv ib xyoos thiab tsis mus vwm

Feem ntau, nws yuav tsis tuaj yeem ua cov haujlwm refactoring nrawm. Txoj haujlwm yuav tsum ntsuas tau kom koj tuaj yeem tawg mus rau hauv me me thiab noj cov ntxhw ib thooj nrog ib lub teaspoon. Yuav tsum muaj kev nkag siab txog seb koj tab tom txav mus rau qhov raug, mus ntev npaum li cas.

Yuav pib sim Ansible li cas, rov ua qhov project hauv ib xyoos thiab tsis mus vwm

Feem ntau, nws tsis muaj teeb meem li cas nws yuav ua tiav, koj tuaj yeem sau rau ntawm ib daim ntawv, koj tuaj yeem muab cov ntawv nplaum rau ntawm lub txee dai khaub ncaws, koj tuaj yeem tsim cov haujlwm hauv Jira, lossis koj tuaj yeem qhib Google Docs thiab sau cov xwm txheej tam sim no. nyob ntawd. Ob txhais ceg loj hlob los ntawm qhov tseeb tias cov txheej txheem tsis yog tam sim ntawd, nws yuav ntev thiab tedious. Nws tsis zoo li leej twg xav kom koj hlawv tawm ntawm cov tswv yim, nkees, thiab dhau los ua kev ntxhov siab thaum rov kho dua.

Lub refactoring yog yooj yim:

  • Noj.
  • Pw tsaug zog.
  • Cai.
  • IaC test.
  • Rov ua dua

thiab peb rov ua qhov no kom txog thaum peb mus txog lub hom phiaj npaj.

Yuav pib sim Ansible li cas, rov ua qhov project hauv ib xyoos thiab tsis mus vwm

Tej zaum nws yuav tsis tuaj yeem pib sim txhua yam tam sim ntawd, yog li peb thawj txoj haujlwm yog pib nrog linting thiab xyuas cov syntax.

Hnub #181: Green Build Master

Yuav pib sim Ansible li cas, rov ua qhov project hauv ib xyoos thiab tsis mus vwm

Linting yog thawj kauj ruam me me rau Green Build Master. Qhov no yuav tsis tawg yuav luag txhua yam, tab sis nws yuav tso cai rau koj los daws cov txheej txheem thiab ua kom ntsuab tsim hauv Jenkins. Lub tswv yim yog los txhim kho tus cwj pwm ntawm pab neeg:

  • Kev kuaj liab tsis zoo.
  • Kuv tuaj kho ib yam dab tsi thiab tib lub sij hawm ua tus cai me ntsis zoo dua nws ua ntej koj.

Hnub #193: Los ntawm linting mus rau chav kuaj

Yuav pib sim Ansible li cas, rov ua qhov project hauv ib xyoos thiab tsis mus vwm

Tau tsim cov txheej txheem kom tau txais cov cai rau hauv tus tswv, koj tuaj yeem pib cov txheej txheem ntawm kev txhim kho ib ntus - hloov linting nrog lub luag haujlwm launching, koj tuaj yeem ua nws yam tsis muaj idempotency. Koj yuav tsum nkag siab tias yuav siv lub luag haujlwm thiab lawv ua haujlwm li cas.

Hnub #211: Los ntawm chav tsev mus rau kev xeem sib koom ua ke

Yuav pib sim Ansible li cas, rov ua qhov project hauv ib xyoos thiab tsis mus vwm

Thaum feem ntau lub luag haujlwm tau them nrog cov kev xeem hauv chav tsev thiab txhua yam yog linted, koj tuaj yeem txav mus ntxiv rau kev sib xyaw ua ke. Cov. kev sim tsis yog ib lub cib nyob rau hauv lub infrastructure, tab sis ib tug ua ke ntawm lawv, piv txwv li, tag nrho cov piv txwv configuration.

Yuav pib sim Ansible li cas, rov ua qhov project hauv ib xyoos thiab tsis mus vwm

Siv jenkins, peb tsim ntau theem uas linted lub luag hauj lwm / playbooks nyob rau hauv parallel, ces chav kuaj nyob rau hauv cov thawv, thiab thaum kawg kev sib koom ua ke xeem.

Jenkins + Docker + Ansible = Tests

Yuav pib sim Ansible li cas, rov ua qhov project hauv ib xyoos thiab tsis mus vwm

  1. Checkout repo thiab tsim cov theem tsim.
  2. Khiav lint playbook theem nyob rau hauv parallel.
  3. Khiav lint lub luag hauj lwm theem nyob rau hauv parallel.
  4. Khiav syntax check lub luag hauj lwm theem nyob rau hauv parallel.
  5. Khiav lub luag hauj lwm xeem theem nyob rau hauv parallel.
    1. Lub luag haujlwm.
    2. Tshawb xyuas kev vam khom rau lwm lub luag haujlwm.
    3. Tshawb xyuas syntax.
    4. Tsim docker piv txwv
    5. Khiav molecule/default/playbook.yml.
    6. Tshawb xyuas idempotency.
  6. Khiav cov kev xeem sib xyaw ua ke
  7. Tag

Hnub #271: Bus Factor

Yuav pib sim Ansible li cas, rov ua qhov project hauv ib xyoos thiab tsis mus vwm

Thaum xub thawj, refactoring tau ua los ntawm ib pawg me ntawm ob lossis peb tus neeg. Lawv tshuaj xyuas cov cai hauv tus tswv. Nyob rau tib lub sijhawm, pab pawg tau tsim kev paub txog kev sau cov lej thiab kev txheeb xyuas cov lej tau ua rau kev tshaj tawm kev paub txog kev tsim kho vaj tse thiab nws ua haujlwm li cas. Qhov tseem ceeb ntawm no yog tias cov neeg tshuaj xyuas tau xaiv ib qho los ntawm ib qho, raws li lub sijhawm teem tseg, piv txwv li. nrog qee qhov kev tshwm sim koj yuav nce mus rau hauv ib qho tshiab ntawm cov txheej txheem.

Yuav pib sim Ansible li cas, rov ua qhov project hauv ib xyoos thiab tsis mus vwm

Thiab nws yuav tsum tau xis nyob ntawm no. Nws yooj yim los ua qhov kev tshuaj xyuas, saib nyob rau hauv lub moj khaum ntawm cov haujlwm uas nws tau ua, thiab keeb kwm ntawm kev sib tham. Peb tau ua ke jenkins + bitbucket + jira.

Tab sis zoo li no, kev tshuaj xyuas tsis yog panacea; qee qhov, peb tau txais mus rau hauv tus tswv code, uas ua rau peb flop xeem:

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

Tom qab ntawd lawv kho nws, tab sis cov sediment tseem nyob.

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

Hnub #311: Kev sim ceev

Yuav pib sim Ansible li cas, rov ua qhov project hauv ib xyoos thiab tsis mus vwm

Sij hawm dhau mus, muaj kev sim ntau dua, kev tsim kho qeeb qeeb, mus txog ib teev hauv qhov xwm txheej phem tshaj plaws. Ntawm ib qho ntawm cov retros muaj cov kab lus zoo li "nws zoo uas muaj kev sim, tab sis lawv qeeb." Yog li ntawd, peb tau tso tseg kev sib koom ua ke ntawm cov tshuab virtual thiab hloov kho rau Docker kom nws nrawm dua. Peb kuj hloov testinfra nrog ansible verifier kom txo tau cov cuab yeej siv.

Yuav pib sim Ansible li cas, rov ua qhov project hauv ib xyoos thiab tsis mus vwm

Hais lus nruj me ntsis, muaj cov txheej txheem ntsuas:

  1. Hloov mus rau docker.
  2. Tshem tawm lub luag hauj lwm xeem, uas yog duplicated vim dependencies.
  3. Ua kom cov qhev ntau ntxiv.
  4. Test khiav kev txiav txim.
  5. Muaj peev xwm lint TAG NRHO hauv zos nrog ib qho lus txib.

Yuav pib sim Ansible li cas, rov ua qhov project hauv ib xyoos thiab tsis mus vwm

Yog li ntawd, Pipeline ntawm jenkins kuj tau koom ua ke

  1. Tsim cov theem tsim.
  2. Lint tag nrho nyob rau hauv parallel.
  3. Khiav lub luag hauj lwm xeem theem nyob rau hauv parallel.
  4. Xaus.

Cov tshooj lus kawm

Zam kev hloov pauv thoob ntiaj teb

Ansible siv cov kev hloov pauv thoob ntiaj teb, muaj ib feem ua haujlwm hauv daim ntawv private_role_varsTab sis qhov no tsis yog panacea.

Cia kuv muab piv txwv rau koj. Cia peb muaj 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}}

Yuav pib sim Ansible li cas, rov ua qhov project hauv ib xyoos thiab tsis mus vwm

Qhov funny tshaj plaws yog tias cov txiaj ntsig ntawm cov ntawv ua si yuav nyob ntawm cov khoom uas tsis yog ib txwm pom tseeb, xws li qhov kev txiav txim hauv lub luag haujlwm tau teev tseg. Hmoov tsis zoo, qhov no yog qhov xwm txheej ntawm Ansible thiab qhov zoo tshaj plaws uas tuaj yeem ua tau yog siv qee yam kev pom zoo, piv txwv li, hauv lub luag haujlwm, tsuas yog siv qhov sib txawv uas tau piav qhia hauv lub luag haujlwm no.

PHEM: siv lub ntiaj teb hloov pauv.

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

ZOO: V ua defaults txhais cov kev hloov pauv uas tsim nyog thiab tom qab ntawd tsuas yog siv lawv xwb.

# 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 lub luag haujlwm hloov pauv

PHEM: siv lub ntiaj teb hloov pauv.

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

ZOO: Nyob rau hauv lub luag hauj lwm rau cov variables, siv variables prefixed nrog lub luag hauj lwm lub npe; qhov no, los ntawm saib cov khoom muag, yuav ua rau nws yooj yim to taub dab tsi tshwm sim.

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

Siv lub voj tswj qhov sib txawv

PHEM: Siv cov qauv sib txawv hauv cov voj voog item, yog tias qhov haujlwm no / phau ntawv ua si no suav nrog qhov chaw, qhov no yuav ua rau tus cwj pwm tsis xav txog

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

ZOO: Redefine ib variable nyob rau hauv ib lub voj via loop_var.

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

Xyuas cov input variables

Peb tau pom zoo siv cov lus ua ntej sib txawv; nws yuav tsis yog superfluous los xyuas tias lawv tau txhais raws li peb xav tau thiab, piv txwv li, tsis overridden los ntawm tus nqi khoob.

ZOO: Txheeb xyuas qhov sib txawv.

- 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

Tsis txhob hashes dictionaries, siv cov qauv tiaj tus

Yog tias lub luag haujlwm xav kom muaj hash / phau ntawv txhais lus nyob rau hauv ib qho ntawm nws qhov tsis, ces yog tias peb xav hloov ib qho ntawm cov menyuam tsis muaj, peb yuav tsum tau hla tag nrho cov lus hash / phau ntawv txhais lus, uas yuav ua rau kom muaj kev sib txawv.

PHEM: Siv hash/dictionary.

---
user:
  name: admin
  group: admin

ZOO: Siv cov qauv sib txawv ntawm lub tiaj.

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

Tsim cov phau ntawv uas tsis muaj peev xwm thiab cov luag haujlwm

Lub luag haujlwm thiab cov ntawv ua si yuav tsum tsis muaj peev xwm, vim tias txo configuration drift thiab ntshai ntawm tsoo ib yam dab tsi. Tab sis yog tias koj siv molecule, ces qhov no yog tus cwj pwm tsis zoo.

Tsis txhob siv cov lus txib plhaub modules

Kev siv lub plhaub module ua rau muaj qhov tseem ceeb piav qhia qhov tseem ceeb, tsis yog qhov tshaj tawm, uas yog qhov tseem ceeb ntawm Ansible.

Ntsuam xyuas koj lub luag haujlwm ntawm molecule

Molecule yog ib qho yooj yim heev, cia peb saib ob peb yam xwm txheej.

Molecule Ntau yam

Π’ molecule.yml hauv seem platforms koj tuaj yeem piav qhia ntau tus tswv uas koj tuaj yeem xa mus.

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

Yog li, cov tswv tsev no tuaj yeem ua tau converge.yml siv:

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

Cov ntaub ntawv pov thawj

Hauv molecule nws muaj peev xwm siv ansible los xyuas tias qhov piv txwv tau teeb tsa kom raug, ntxiv rau, qhov no tau ua lub neej ntawd txij thaum tso tawm 3. Nws tsis hloov pauv raws li testinfra / inspec, tab sis peb tuaj yeem tshawb xyuas tias cov ntsiab lus ntawm cov ntaub ntawv phim peb qhov kev cia siab:

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

Lossis xa cov kev pabcuam, tos kom nws muaj thiab ua qhov ntsuas pa luam yeeb:

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

Muab cov logic nyuaj rau hauv modules & plugins

Ansible tus neeg tawm tswv yim tshaj tawm txoj hauv kev, yog li thaum koj ua cov kab lis kev cai, cov ntaub ntawv hloov pauv, lub plhaub modules, cov cai yuav nyuaj rau nyeem. Txhawm rau tiv thaiv qhov no thiab ua kom yooj yim rau kev nkag siab, nws yuav tsis yog superfluous los tawm tsam qhov nyuaj los ntawm kev tsim koj tus kheej modules.

Summary Tips & Tricks

  1. Zam kev hloov pauv thoob ntiaj teb.
  2. Prefix lub luag haujlwm hloov pauv.
  3. Siv lub voj tswj qhov sib txawv.
  4. Txheeb xyuas qhov hloov pauv input.
  5. Tsis txhob hashes dictionaries, siv cov qauv tiaj tus.
  6. Tsim cov phau ntawv uas tsis muaj peev xwm thiab cov luag haujlwm.
  7. Tsis txhob siv cov lus txib plhaub modules.
  8. Ntsuam xyuas koj lub luag haujlwm ntawm molecule.
  9. Muab cov logic nyuaj rau hauv modules & plugins.

xaus

Yuav pib sim Ansible li cas, rov ua qhov project hauv ib xyoos thiab tsis mus vwm

Koj tuaj yeem tsis tsuas yog mus thiab rov kho cov txheej txheem ntawm qhov project, txawm tias koj muaj IaC. Qhov no yog txheej txheem ntev uas yuav tsum tau ua siab ntev, sijhawm thiab kev paub.

UPD1 2020.05.01 20:30 TSΔ° - Rau thawj profile ntawm playbooks koj siv tau callback_whitelist = profile_tasks kom nkag siab qhov tseeb ua haujlwm ntev. Ces peb mus dhau Classics ntawm acceleration. Koj tuaj yeem sim tshuaj mitogen
UPD2 2020.05.03 16:34 TSΔ° - English version

Tau qhov twg los: www.hab.com

Ntxiv ib saib