Pehea e hoʻomaka ai e hoʻāʻo iā Ansible, e hoʻihoʻi hou i ka papahana i hoʻokahi makahiki a ʻaʻole hele pupule

Pehea e hoʻomaka ai e hoʻāʻo iā Ansible, e hoʻihoʻi hou i ka papahana i hoʻokahi makahiki a ʻaʻole hele pupule

ʻO kēia ka transcript nā hana hana maluna o DevOps-40 2020-03-18:

E hoʻomaka ana mai ka hana ʻelua, lilo kekahi code i hoʻoilina, no ka mea hoʻomaka nā manaʻo mua e ʻokoʻa mai ka ʻoiaʻiʻo paʻakikī. ʻAʻole maikaʻi a maikaʻi ʻole kēia, he mea paʻakikī ke hoʻopaʻapaʻa a pono e ola pū me. ʻO kahi ʻāpana o kēia kaʻina hana refactoring. Hoʻoponopono hou i nā mea hana e like me ke Code. E hoʻomaka ka moʻolelo e pili ana i ka hana hou ʻana iā Ansible i hoʻokahi makahiki a ʻaʻole hele pupule.

Ka Hanau o ka Hooilina

Lā #1: ʻO ka maʻi Zero

Pehea e hoʻomaka ai e hoʻāʻo iā Ansible, e hoʻihoʻi hou i ka papahana i hoʻokahi makahiki a ʻaʻole hele pupule

I kekahi manawa he papahana kūlana. Loaʻa iā ia kahi hui hoʻomohala Dev a me nā ʻenekini Ops. Ke hoʻoponopono nei lākou i ka pilikia like: pehea e kau ai i nā kikowaena a holo i kahi noi. ʻO ka pilikia, ua hoʻoponopono kēlā me kēia hui i kēia pilikia ma kona ala ponoʻī. Ma ka papahana, ua hoʻoholo ʻia e hoʻohana iā Ansible e hoʻohui i ka ʻike ma waena o nā hui Dev a me Ops.

Lā #89: Ka hānau ʻana o ka hoʻoilina

Pehea e hoʻomaka ai e hoʻāʻo iā Ansible, e hoʻihoʻi hou i ka papahana i hoʻokahi makahiki a ʻaʻole hele pupule

Me ka ʻike ʻole iā lākou iho, makemake lākou e hana i ka mea maikaʻi loa, akā ua lilo ia i hoʻoilina. Pehea e hana ai kēia?

  • He hana koʻikoʻi kā mākou ma ʻaneʻi, e hana mākou i kahi hack lepo a laila hoʻoponopono.
  • ʻAʻole pono ʻoe e kākau i nā palapala a maopopo nā mea a pau e hana nei ma aneʻi.
  • ʻIke wau iā Ansible/Python/Bash/Terraform! E nānā pehea e hiki ai iaʻu ke alo!
  • ʻO wau kahi Full Stack Overflow Developer a kope i kēia mai stackoverflow, ʻaʻole maopopo iaʻu pehea e hana ai, akā ʻoluʻolu a hoʻonā i ka pilikia.

ʻO ka hopena, hiki iā ʻoe ke loaʻa i kahi ʻano code hiki ʻole ke hoʻomaopopo ʻole ʻia ʻaʻohe palapala, ʻaʻole maopopo i kāna hana, inā pono ia, akā ʻo ka pilikia e pono ʻoe e hoʻomohala, hoʻololi, hoʻohui i nā koʻokoʻo a me nā kākoʻo. , e hoʻonui ana i ke kūlana.

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

Lā #109: ʻIke i ka pilikia

Pehea e hoʻomaka ai e hoʻāʻo iā Ansible, e hoʻihoʻi hou i ka papahana i hoʻokahi makahiki a ʻaʻole hele pupule

ʻAʻole i hoʻokō hou ʻia ke kumu hoʻohālike IaC i nā koi o nā mea hoʻohana / ʻoihana / hui ʻē aʻe, a ua pau ka manawa e hoʻololi ai i ka ʻoihana. I kēia manawa, hiki mai ka ʻike ʻo ia ka manawa e hana ai.

IaC refactoring

Lā #139: Pono ʻoe e hoʻoponopono hou?

Pehea e hoʻomaka ai e hoʻāʻo iā Ansible, e hoʻihoʻi hou i ka papahana i hoʻokahi makahiki a ʻaʻole hele pupule

Ma mua o kou holo wikiwiki ʻana i ka refactor, pono ʻoe e pane i kekahi mau nīnau koʻikoʻi:

  1. No ke aha ʻoe e pono ai i kēia mau mea a pau?
  2. He manawa kou?
  3. Ua lawa anei ka ike?

Inā ʻaʻole ʻoe maopopo i ka pane ʻana i nā nīnau, a laila e pau ka refactoring ma mua o ka hoʻomaka ʻana, a i ʻole e ʻoi aku ka hewa. No ka mea loaʻa ka ʻike ( ʻO kaʻu mea i aʻo ai mai ka hoʻāʻo ʻana i nā laina 200 o ka code infrastructure), a laila loaʻa i ka papahana kahi noi no ke kōkua e hoʻoponopono i nā kuleana a uhi iā lākou me nā hoʻokolohua.

Lā #149: Ke hoʻomākaukau nei i ka hana hou

Pehea e hoʻomaka ai e hoʻāʻo iā Ansible, e hoʻihoʻi hou i ka papahana i hoʻokahi makahiki a ʻaʻole hele pupule

ʻO ka mea mua e hoʻomākaukau. E hoʻoholo i kā mākou e hana ai. No ka hana ʻana i kēia, kamaʻilio mākou, ʻimi i nā wahi pilikia a noʻonoʻo i nā ala e hoʻoponopono ai. Hoʻopaʻa mākou i nā manaʻo hopena i kekahi ʻano, no ka laʻana he ʻatikala i ka hui ʻana, a i ka wā e kū ai ka nīnau "he aha ka mea maikaʻi?" aiʻole "ʻo wai ka pololei?" ʻAʻole mākou i nalowale i ko mākou ala. I ko mākou hihia, pili mākou i ka manaʻo e mahele a e hooponopono: hoʻokaʻawale mākou i ka ʻoihana i nā ʻāpana liʻiliʻi / pōhaku. Hāʻawi kēia ala iā ʻoe e lawe i kahi ʻāpana kaʻawale, hoʻomaopopo i kāna hana, uhi iā ia me nā hoʻāʻo a hoʻololi iā ia me ka makaʻu ʻole i ka haki ʻana i kekahi mea.

Pehea e hoʻomaka ai e hoʻāʻo iā Ansible, e hoʻihoʻi hou i ka papahana i hoʻokahi makahiki a ʻaʻole hele pupule

ʻIke ʻia ʻo ka hoʻāʻo ʻana i ka ʻōnaehana i lilo i pōhaku kihi a eia ke kūpono e haʻi i ka pyramid hoʻāʻo ʻoihana. ʻO ka manaʻo like i ka hoʻomohala ʻana, akā no ka ʻoihana: ke neʻe nei mākou mai nā hoʻokolohua wikiwiki wikiwiki e nānā i nā mea maʻalahi, e like me ka indentation, a i nā hoʻokolohua piha piha e hoʻokau i ka ʻōnaehana holoʻokoʻa.

Nā hoʻāʻo hoʻāʻo ansible

Ma mua o ko mākou hele ʻana e wehewehe pehea mākou i uhi ai i nā hoʻokolohua Ansible ma ka papahana, e wehewehe wau i nā hoʻāʻo a me nā ala i loaʻa iaʻu ka manawa e hoʻohana ai ma mua i mea e hoʻomaopopo ai i ka pōʻaiapili o nā hoʻoholo i hana ʻia.

Lā helu -997: Hāʻawi SDS

Pehea e hoʻomaka ai e hoʻāʻo iā Ansible, e hoʻihoʻi hou i ka papahana i hoʻokahi makahiki a ʻaʻole hele pupule

ʻO ka manawa mua aʻu i hoʻāʻo ai iā Ansible ma kahi papahana e hoʻomohala i ka SDS (Software Defined Storage). Aia kekahi ʻatikala ʻokoʻa ma kēia kumuhana
Pehea e uhaki ai i nā paikikala ma luna o nā koʻokoʻo i ka wā e hoʻāʻo ai i kāu mahele, akā i ka pōkole, ua hoʻopau mākou i kahi pyramid hoʻāʻo hoʻohuli a me ka hoʻāʻo ʻana ua hoʻohana mākou i 60-90 mau minuke ma ka hana hoʻokahi, ʻo ia ka manawa lōʻihi. ʻO ke kumu nā hoʻokolohua e2e, ʻo ia hoʻi. ua kau mākou i kahi hoʻonohonoho piha a laila hoʻāʻo iā ia. ʻO ka mea ʻoi aku ka ʻoi aku o ka hōʻeha ʻana, ʻo ia ka hana ʻana o kāna kaʻa ponoʻī. Akā pono wau e ʻae, ua hana kēia hoʻonā a ʻae ʻia no ka hoʻokuʻu paʻa.

Lā # -701: Ansible a ho'āʻo lumi kuke

Pehea e hoʻomaka ai e hoʻāʻo iā Ansible, e hoʻihoʻi hou i ka papahana i hoʻokahi makahiki a ʻaʻole hele pupule

ʻO ka hoʻomohala ʻana i ka manaʻo hoʻāʻo Ansible ʻo ia ka hoʻohana ʻana i nā mea hana i hana ʻia, ʻo ia hoʻi ka kīhini hoʻāʻo / kīhini-ci a me ka inspec. Ua hoʻoholo ʻia ke koho e ka ʻike o Ruby (no nā kikoʻī hou aku, e ʻike i ka ʻatikala ma Habré: Manaʻo paha nā mea polokalamu YML i ka hoʻāʻo ʻana iā Ansible?) ʻoi aku ka wikiwiki, ma kahi o 40 mau minuke no 10 mau hana. Ua hana mākou i kahi pūʻulu o nā mīkini virtual a holo i nā hoʻokolohua i loko.

Pehea e hoʻomaka ai e hoʻāʻo iā Ansible, e hoʻihoʻi hou i ka papahana i hoʻokahi makahiki a ʻaʻole hele pupule

Ma keʻano laulā, ua hana ka hopena, akā aia kekahi sediment ma muli o ka heterogeneity. I ka hoʻonui ʻia ʻana o ka nui o ka poʻe i hoʻāʻo ʻia i 13 mau kuleana kumu a me 2 mau hana meta e hui pū ana i nā kuleana liʻiliʻi, a laila hoʻomaka koke nā hoʻāʻo e holo no 70 mau minuke, ʻo ia ka aneane 2 mau manawa lōʻihi. He mea paʻakikī ke kamaʻilio e pili ana i nā hana XP (extreme programming) no ka mea... ʻaʻohe mea makemake e kali i 70 mau minuke. ʻO kēia ke kumu o ka hoʻololi ʻana i ke ʻano

Lā # -601: Ansible a me ka mole

Pehea e hoʻomaka ai e hoʻāʻo iā Ansible, e hoʻihoʻi hou i ka papahana i hoʻokahi makahiki a ʻaʻole hele pupule

ʻO ka manaʻo, ua like kēia me ka testkitchen, ua neʻe wale mākou i ka hoʻāʻo ʻana i ka docker a hoʻololi i ka waihona. ʻO ka hopena, ua hoʻemi ʻia ka manawa i 20-25 mau minuke no 7 mau hana.

Pehea e hoʻomaka ai e hoʻāʻo iā Ansible, e hoʻihoʻi hou i ka papahana i hoʻokahi makahiki a ʻaʻole hele pupule

Ma ka hoʻonui ʻana i ka helu o nā hana i hoʻāʻo ʻia i 17 a me ka hoʻopaʻa ʻana i nā kuleana 45, ua holo mākou i kēia i 28 mau minuke ma 2 mau kauā jenkins.

Lā #167: Hoʻohui i nā hoʻokolohua Ansible i ka papahana

Pehea e hoʻomaka ai e hoʻāʻo iā Ansible, e hoʻihoʻi hou i ka papahana i hoʻokahi makahiki a ʻaʻole hele pupule

ʻO ka mea nui, ʻaʻole hiki ke hana i ka hana refactoring me ka wikiwiki. Pono e ana ʻia ka hana i hiki iā ʻoe ke wāwahi i nā ʻāpana liʻiliʻi a ʻai i ka ʻāpana elepani me kahi ʻāpana. Pono e hoʻomaopopo inā e neʻe ana ʻoe ma ke ala pololei, pehea ka lōʻihi e hele ai.

Pehea e hoʻomaka ai e hoʻāʻo iā Ansible, e hoʻihoʻi hou i ka papahana i hoʻokahi makahiki a ʻaʻole hele pupule

Ma keʻano laulā, ʻaʻole ia he mea nui pehea e hana ʻia ai, hiki iā ʻoe ke kākau ma kahi ʻāpana pepa, hiki iā ʻoe ke kau i nā mea hoʻopaʻa ma ka lumi lumi, hiki iā ʻoe ke hana i nā hana ma Jira, a i ʻole hiki iā ʻoe ke wehe i nā Google Docs a kākau i ke kūlana o kēia manawa. ma laila. Ke ulu nei nā wāwae mai ka ʻoiaʻiʻo ʻaʻole wikiwiki ka hana, e lōʻihi a paʻakikī. ʻAʻole paha makemake kekahi e hoʻopau ʻoe i nā manaʻo, luhi, a lilo i mea kaumaha i ka wā refactoring.

He mea maʻalahi ka refactoring:

  • Mea ʻai.
  • Moe.
  • Pāʻālua
  • hoao IaC.
  • hana hou

a ke hana hou nei mākou a hiki i ka pahuhopu i manaʻo ʻia.

Pehea e hoʻomaka ai e hoʻāʻo iā Ansible, e hoʻihoʻi hou i ka papahana i hoʻokahi makahiki a ʻaʻole hele pupule

ʻAʻole hiki ke hoʻomaka koke i ka hoʻāʻo ʻana i nā mea āpau, no laila ʻo kā mākou hana mua e hoʻomaka me ka linting a nānā i ka syntax.

Lā #181: Kumu kūkulu ʻōmaʻomaʻo

Pehea e hoʻomaka ai e hoʻāʻo iā Ansible, e hoʻihoʻi hou i ka papahana i hoʻokahi makahiki a ʻaʻole hele pupule

He wahi liʻiliʻi liʻiliʻi ʻo Linting i ka Green Build Master. ʻAʻole kēia e uhaʻi i kekahi mea, akā e ʻae iā ʻoe e hoʻopau i nā kaʻina hana a hana i nā kūkulu ʻōmaʻomaʻo ma Jenkins. ʻO ka manaʻo e hoʻomohala i nā maʻamau i waena o ka hui:

  • He ino na hoao ulaula.
  • Ua hele mai au e hoʻoponopono i kekahi mea a ma ka manawa like e hoʻomaikaʻi iki i ke code ma mua o kou.

Lā #193: Mai ka linting a hiki i nā hoʻokolohua ʻāpana

Pehea e hoʻomaka ai e hoʻāʻo iā Ansible, e hoʻihoʻi hou i ka papahana i hoʻokahi makahiki a ʻaʻole hele pupule

Ke kūkulu nei i ke kaʻina hana o ka hoʻokomo ʻana i ke code i loko o ka haku, hiki iā ʻoe ke hoʻomaka i ke kaʻina hana o ka hoʻomaikaʻi ʻana i kēlā me kēia ʻanuʻu - hoʻololi i ka linting me nā hana hoʻomaka, hiki iā ʻoe ke hana me ka ʻole o ka idempotency. Pono ʻoe e hoʻomaopopo pehea e hoʻohana ai i nā kuleana a pehea e hana ai lākou.

Lā #211: Mai ka ʻāpana a i nā hoʻokolohua hoʻohui

Pehea e hoʻomaka ai e hoʻāʻo iā Ansible, e hoʻihoʻi hou i ka papahana i hoʻokahi makahiki a ʻaʻole hele pupule

Ke uhi ʻia ka hapa nui o nā hana me nā hoʻāʻo ʻāpana a hoʻopaʻa ʻia nā mea a pau, hiki iā ʻoe ke neʻe i ka hoʻohui ʻana i nā hoʻokolohua hoʻohui. ʻO kēlā mau mea. ʻaʻole hoʻāʻo i kahi brick hoʻokahi i loko o ka ʻōnaehana, akā he hui pū ʻana o lākou, no ka laʻana, kahi hoʻonohonoho hoʻonohonoho piha.

Pehea e hoʻomaka ai e hoʻāʻo iā Ansible, e hoʻihoʻi hou i ka papahana i hoʻokahi makahiki a ʻaʻole hele pupule

Me ka hoʻohana ʻana i nā jenkins, ua hana mākou i nā pae he nui i hoʻopaʻa ʻia i nā kuleana/puke pāʻani i ka like, a laila hoʻāʻo ʻia i loko o nā ipu, a hope hoʻi nā hoʻāʻo hoʻohui.

Jenkins + Docker + Ansible = Nā hoʻāʻo

Pehea e hoʻomaka ai e hoʻāʻo iā Ansible, e hoʻihoʻi hou i ka papahana i hoʻokahi makahiki a ʻaʻole hele pupule

  1. E nānā i ka repo a hana i nā pae kūkulu.
  2. E holo like i nā ʻanuʻu lint playbook.
  3. E holo like i nā pae lint role.
  4. E holo like i nā ʻanuʻu hana syntax.
  5. E holo like i nā pae hoʻokolohua.
    1. Hana lint.
    2. E nānā i ka hilinaʻi ma nā kuleana ʻē aʻe.
    3. E nānā i ka syntax.
    4. E hana i ka laʻana docker
    5. Holo i ka mole/default/playbook.yml.
    6. Nānā idempotency.
  6. Holo i nā hoʻokolohua hoʻohui
  7. a pau

Lā #271: Kaʻa Kaʻa

Pehea e hoʻomaka ai e hoʻāʻo iā Ansible, e hoʻihoʻi hou i ka papahana i hoʻokahi makahiki a ʻaʻole hele pupule

I ka wā mua, ua hana ʻia ka refactoring e kahi hui liʻiliʻi o ʻelua a ʻekolu mau kānaka. Ua nānā lākou i ke code ma ka haku. I ka wā lōʻihi, ua hoʻomohala ka hui i ka ʻike e pili ana i ke kākau ʻana i ke code a me ka loiloi code i kōkua i ka hoʻolaha ʻana i ka ʻike e pili ana i ka ʻōnaehana a me ke ʻano o ka hana. ʻO ka mea koʻikoʻi ma ʻaneʻi ʻo ia ka mea i koho ʻia ka poʻe loiloi, e like me ka papa kuhikuhi, ʻo ia hoʻi. me kekahi degere o ka manaʻo e piʻi ʻoe i kahi ʻāpana hou o ka ʻōnaehana.

Pehea e hoʻomaka ai e hoʻāʻo iā Ansible, e hoʻihoʻi hou i ka papahana i hoʻokahi makahiki a ʻaʻole hele pupule

A pono e oluolu maanei. He mea maʻalahi ke hana i ka loiloi, e ʻike i loko o ka hoʻolālā o ka hana i hana ʻia, a me ka mōʻaukala o nā kūkākūkā. Ua hoʻohui mākou i nā jenkins + bitbucket + jira.

Akā ʻo ia, ʻaʻole he panacea ka loiloi; i kekahi mea, ua komo mākou i loko o ka master code, i hana ai mākou i nā hoʻokolohua 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 }}"

A laila hoʻoponopono lākou, akā mau ka sediment.

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

Lā #311: Hoʻomaʻamaʻa wikiwiki

Pehea e hoʻomaka ai e hoʻāʻo iā Ansible, e hoʻihoʻi hou i ka papahana i hoʻokahi makahiki a ʻaʻole hele pupule

I ka manawa lōʻihi, ua nui nā hoʻokolohua, ua holo mālie nā kūkulu, a hiki i hoʻokahi hola i ka hihia ʻino loa. Ma kekahi o nā retros aia kekahi ʻōlelo e like me "maikaʻi aia nā hoʻokolohua, akā lohi." ʻO ka hopena, ua haʻalele mākou i nā hoʻokolohua hoʻohui i nā mīkini virtual a hoʻololi iā lākou no Docker e wikiwiki. Ua hoʻololi pū mākou i ka testinfra me ka mea hōʻoia ansible e hōʻemi i ka nui o nā mea hana i hoʻohana ʻia.

Pehea e hoʻomaka ai e hoʻāʻo iā Ansible, e hoʻihoʻi hou i ka papahana i hoʻokahi makahiki a ʻaʻole hele pupule

ʻO ka ʻōlelo koʻikoʻi, aia kekahi mau ana:

  1. E hoʻololi i ka docker.
  2. Wehe i ka hoʻāʻo kuleana, i hoʻopaʻa ʻia ma muli o nā hilinaʻi.
  3. E hoʻonui i ka nui o nā kauā.
  4. Ke kauoha holo hoao.
  5. Ka hiki ke lint ALL kūloko me hoʻokahi kauoha.

Pehea e hoʻomaka ai e hoʻāʻo iā Ansible, e hoʻihoʻi hou i ka papahana i hoʻokahi makahiki a ʻaʻole hele pupule

ʻO ka hopena, ua hui pū ʻia ka Pipeline ma jenkins

  1. E hana i nā pae kūkulu.
  2. Hoʻopili i nā mea a pau i ka like.
  3. E holo like i nā pae hoʻokolohua.
  4. E hoʻopau.

Nā haʻawina i aʻoʻia

Hōʻalo i nā mea hoʻololi honua

Hoʻohana ʻo Ansible i nā ʻano hoʻololi honua, aia kahi ʻāpana hana i ke ʻano nā_role_vars, aka, aole keia he panacea.

E hāʻawi wau i kumu hoʻohālike. E loaʻa iā mākou 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}}

Pehea e hoʻomaka ai e hoʻāʻo iā Ansible, e hoʻihoʻi hou i ka papahana i hoʻokahi makahiki a ʻaʻole hele pupule

ʻO ka mea ʻakaʻaka, ʻo ka hopena o nā puke pāʻani e pili ana i nā mea i ʻike ʻole ʻia, e like me ke ʻano o ka papa inoa o nā kuleana. ʻO ka mea pōʻino, ʻo kēia ke ʻano o Ansible a ʻo ka mea maikaʻi loa e hiki ke hana ʻia ʻo ia ka hoʻohana ʻana i kekahi ʻano ʻaelike, no ka laʻana, i loko o kahi kuleana, e hoʻohana wale i ka mea hoʻololi i wehewehe ʻia i kēia kuleana.

hewa: hoʻohana i ka hoʻololi honua.

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

MAIKAʻI LOA: V defaults e wehewehe i nā mea hoʻololi kūpono a ma hope e hoʻohana wale iā lākou.

# 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

Nā mea hoʻololi kūlana prefix

hewa: hoʻohana i ka hoʻololi honua.

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

MAIKAʻI LOA: Ma nā kuleana no nā ʻano like ʻole, e hoʻohana i nā mea hoʻololi i kau mua ʻia me ka inoa kuleana; ʻo kēia, ma ka nānā ʻana i ka waihona, e maʻalahi ka hoʻomaopopo ʻana i ka mea e hana nei.

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

E hoʻohana i ka hoʻololi mana loop

hewa: E hoʻohana i ka hoʻololi maʻamau i nā puka lou item, inā hoʻokomo ʻia kēia haʻawina/puke pāʻani ma kekahi wahi, hiki i kēia ke alakaʻi i ka hana i manaʻo ʻole ʻia

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

MAIKAʻI LOA: E wehewehe hou i ka hoololi ma ka loop ma loop_var.

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

E nānā i nā mea hoʻololi hoʻokomo

Ua ʻae mākou e hoʻohana i nā prefix hoʻololi; ʻaʻole ia he mea nui ke nānā aku ua wehewehe ʻia lākou e like me kā mākou i manaʻo ai a, no ka laʻana, ʻaʻole i hoʻopau ʻia e kahi waiwai ʻole.

MAIKAʻI LOA: E nānā i nā mea hoʻololi.

- 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

E hōʻalo i nā puke wehewehe ʻōlelo hashes, e hoʻohana i ke ʻano pālahalaha

Inā manaʻo kekahi kuleana i ka hash/dictionary ma kekahi o kāna mau ʻāpana, a laila inā makemake mākou e hoʻololi i kekahi o nā ʻāpana keiki, pono mākou e hoʻopau i ka hash / puke wehewehe'ōlelo holoʻokoʻa, kahi e hoʻonui ai i ka paʻakikī o ka hoʻonohonoho.

hewa: E hoʻohana i ka hash/papaʻōlelo.

---
user:
  name: admin
  group: admin

MAIKAʻI LOA: E hoʻohana i kahi hoʻololi palahalaha.

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

E hana i nā puke pāʻani idempotent a me nā kuleana

Pono pono nā kuleana a me nā puke pāʻani, no ka mea e ho'ēmi ana i ka neʻe ʻana o ka hoʻonohonoho ʻana a me ka makaʻu i ka haki ʻana i kekahi mea. Akā inā ʻoe e hoʻohana i ka mole, a laila ʻo ia ke ʻano maʻamau.

E hōʻalo i ka hoʻohana ʻana i nā modula shell shell

ʻO ka hoʻohana ʻana i kahi module shell e hopena i kahi paradigm wehewehe pono, ma kahi o ka declarative, ʻo ia ke kumu o Ansible.

E ho'āʻo i kāu mau kuleana ma o ka mole

He mea maʻalahi loa ka Molecule, e nānā kākou i kekahi mau hiʻohiʻona.

Molecule He mau manawa

В molecule.yml ma ka pauku platforms hiki iā ʻoe ke wehewehe i nā pūʻali he nui āu e kau ai.

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

No laila, hiki i kēia mau mea hoʻokipa converge.yml hoʻohana:

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

Mea hōʻoia kūpono

Ma ka mole hiki ke hoʻohana i ka ansible e nānā i ka hoʻonohonoho pololei ʻana o ka hihia, ʻoi aku, ʻo ia ka mea paʻamau mai ka hoʻokuʻu ʻana 3. ʻAʻole hiki ke maʻalahi e like me testinfra/inspec, akā hiki iā mākou ke nānā i nā mea o ka faila i kūpono i kā mākou mau manaʻo:

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

A i ʻole e kau i ka lawelawe, e kali a loaʻa iā ia a hana i kahi hoʻāʻo uahi:

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

E hoʻokomo i nā loina paʻakikī i loko o nā modules & plugins

Kākoʻo ʻo Ansible i kahi ala hoʻolaha, no laila ke hana ʻoe i ka lālā code, ka hoʻololi ʻana i ka ʻikepili, nā modules shell, lilo ke code i mea paʻakikī ke heluhelu. No ka hoʻopaʻapaʻa ʻana i kēia a mālama i ka maʻalahi o ka hoʻomaopopo ʻana, ʻaʻole ia he mea nui ke hakakā ʻana i kēia paʻakikī ma ka hana ʻana i kāu mau modula ponoʻī.

E hōʻuluʻulu manaʻo a me nā mea hoʻopunipuni

  1. Hōʻalo i nā mea hoʻololi honua.
  2. Nā mea hoʻololi kūlana prefix.
  3. E hoʻohana i ka hoʻololi mana loop.
  4. E nānā i nā mea hoʻololi hoʻokomo.
  5. E hōʻalo i nā puke wehewehe ʻōlelo hashes, e hoʻohana i ke ʻano pālahalaha.
  6. E hana i nā puke pāʻani idempotent a me nā kuleana.
  7. E hōʻalo i ka hoʻohana ʻana i nā modula shell shell.
  8. E ho'āʻo i kāu mau kuleana ma o ka mole.
  9. E hoʻokomo i nā loina paʻakikī i loko o nā modules & plugins.

hopena

Pehea e hoʻomaka ai e hoʻāʻo iā Ansible, e hoʻihoʻi hou i ka papahana i hoʻokahi makahiki a ʻaʻole hele pupule

ʻAʻole hiki iā ʻoe ke hele wale a hoʻoponopono hou i ka ʻōnaehana ma kahi papahana, ʻoiai inā he IaC kāu. He hana lōʻihi kēia e pono ai ke ahonui, ka manawa a me ka ʻike.

UPD1 2020.05.01 20:30 - No ka hana mua ʻana i nā puke pāʻani hiki iā ʻoe ke hoʻohana callback_whitelist = profile_tasks e hoʻomaopopo i ka hana maoli no ka manawa lōʻihi. A laila hele mākou ma waena Ansible acceleration classics. Hiki iā ʻoe ke hoʻāʻo mitogen
UPD2 2020.05.03 16:34 - English mana

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka