Inā ulu wikiwiki kāu ʻōnaehana IT, e ʻike koke ʻoe i kahi koho: hoʻonui laina laina i nā kumuwaiwai kanaka e kākoʻo iā ia a hoʻomaka paha i ka automation. A hiki i kekahi manawa, noho mākou i ka paradigm mua, a laila hoʻomaka ke ala lōʻihi i Infrastructure-as-Code.
ʻOiaʻiʻo, ʻaʻole hoʻomaka ka NSPK, akā ua noho aliʻi kēlā ʻano lewa i ka hui i nā makahiki mua o kona ola ʻana, a he mau makahiki hoihoi loa ia. ʻO_____ koʻu inoa.
Ma keʻano laulā, hiki iā mākou ke'ōlelo e hoʻolako kā mākou hui i nā huahana 2 no ka hui. ʻO ka mea mua, ʻo ia ka ʻōnaehana. Pono e hana ka leka, pono e hana ʻo DNS, a pono e hoʻokuʻu nā mea hoʻokele domain iā ʻoe i loko o nā kikowaena pono ʻole e hāʻule. Nui ka ʻāina IT o ka hui! ʻO kēia nā ʻōnaehana koʻikoʻi ʻoihana a me nā misionari, ʻo ka loaʻa ʻana o nā koi no kekahi he 99,999. ʻO ka huahana ʻelua ʻo nā kikowaena ponoʻī, kino a me ka virtual. Pono e nānā ʻia nā mea e kū nei, a pono e hāʻawi mau ʻia nā mea hou i nā mea kūʻai mai nā keʻena he nui. Ma kēia ʻatikala makemake wau e nānā i ke ʻano o kā mākou hoʻomohala ʻana i ka ʻōnaehana i kuleana no ka pōʻai ola o ka server.
Ka hoomaka ana o ke ala
I ka hoʻomaka ʻana o kā mākou huakaʻi, ua like ko mākou ʻenehana ʻenehana penei:
OS CentOS 7
Nā Mea Mana Domain FreeIPA
Automation - Ansible(+Tower), Cobbler
Aia kēia mau mea a pau i loko o 3 mau kāʻei kapu, hoʻolaha ʻia ma nā kikowaena ʻikepili. I loko o hoʻokahi kikowaena ʻikepili aia nā ʻōnaehana keʻena a me nā kahua hoʻāʻo, ma ke koena he PROD.
ʻO ka hana ʻana i nā kikowaena i kahi manawa e like me kēia:
Ma ka VM template, he liʻiliʻi ʻo CentOS a ʻo ka palena liʻiliʻi e like me ka pololei /etc/resolv.conf, ke koena e hele mai ma o Ansible.
CMDB - Excel.
Inā kino ke kikowaena, a laila ma mua o ke kope ʻana i ka mīkini virtual, ua hoʻokomo ʻia ka OS ma luna o ia me ka hoʻohana ʻana iā Cobbler - ua hoʻohui ʻia nā helu MAC o ka kikowaena kikowaena i ka Cobbler config, loaʻa i ka server kahi IP address ma o DHCP, a laila ka OS. hoʻohui ʻia.
I ka wā mua ua hoʻāʻo mākou e hana i kekahi ʻano hoʻokele hoʻonohonoho ma Cobbler. Akā i ka wā lōʻihi, hoʻomaka kēia e lawe mai i nā pilikia me ka portability o nā hoʻonohonoho i nā kikowaena data ʻē aʻe a i ka code Ansible no ka hoʻomākaukau ʻana i nā VM.
I kēlā manawa, manaʻo ka hapa nui o mākou iā Ansible ma ke ʻano he hoʻonui maʻalahi o Bash a ʻaʻole i ʻimi i nā hoʻolālā e hoʻohana ana i ka shell a me ka sed. ʻO Bashsible holoʻokoʻa. ʻO kēia ka mea i alakaʻi i ka ʻoiaʻiʻo inā ʻaʻole i hana ka playbook no kekahi kumu ma ke kikowaena, ʻoi aku ka maʻalahi o ka holoi ʻana i ke kikowaena, hoʻoponopono i ka playbook a holo hou. ʻAʻohe hoʻololi o nā palapala, ʻaʻohe hiki ke lawe i nā hoʻonohonoho.
No ka laʻana, makemake mākou e hoʻololi i kekahi config ma nā kikowaena āpau:
- Hoʻololi mākou i ka hoʻonohonoho ʻana ma nā kikowaena i loaʻa i ka ʻāpana logical / kikowaena data. I kekahi manawa ʻaʻole i ka lā hoʻokahi - ʻaʻole ʻae ke kānāwai o nā helu nui i nā hoʻololi āpau i ka manawa hoʻokahi. A hiki i kekahi mau hoʻololi ke hoʻopau a koi ʻia e hoʻomaka hou i kekahi mea - mai nā lawelawe i ka OS ponoʻī.
- Hoʻoponopono iā ia ma Ansible
- Hoʻoponopono mākou iā Cobbler
- E hana hou i N mau manawa no kēlā me kēia māhele moʻolelo / kikowaena ʻikepili
I mea e holo mālie ai nā hoʻololi a pau, pono e noʻonoʻo i nā kumu he nui, a ke hoʻololi mau nei nā loli.
- Hoʻoponopono hou i nā code ansible, nā faila hoʻonohonoho
- Ke hoʻololi nei i nā hana maikaʻi o loko
- Nā hoʻololi e pili ana i nā hopena o ka nānā ʻana i nā hanana / ulia
- Ke hoʻololi nei i nā kūlana palekana, i loko a me waho. No ka laʻana, hōʻano hou ʻia ʻo PCI DSS me nā koi hou i kēlā me kēia makahiki
ʻO ka ulu ʻana o nā ʻoihana a me ka hoʻomaka ʻana o ka huakaʻi
Ua ulu ka helu o nā kikowaena / logical domain / kikowaena data, a me lākou ka helu o nā hewa i nā hoʻonohonoho. I kekahi manawa, ua hele mākou i ʻekolu ʻaoʻao e pono ai e hoʻomohala i ka hoʻokele hoʻonohonoho:
- ʻOtometi. Pono e pale 'ia ka hewa kanaka i ka hana hou e like me ka hiki.
- Hiki hou. ʻOi aku ka maʻalahi o ka hoʻokele ʻana i nā ʻōnaehana inā hiki ke wānana. Pono ka hoʻonohonoho ʻana o nā kikowaena a me nā mea hana no kā lākou hoʻomākaukau ʻana ma nā wahi āpau. He mea koʻikoʻi kēia no nā hui huahana - ma hope o ka hoʻāʻo ʻana, pono e hōʻoia ʻia ka noi e hoʻopau i kahi ʻenehana hana i hoʻonohonoho like ʻia me ka ʻenehana hoʻāʻo.
- ʻO ka maʻalahi a me ka maopopo o ka hana ʻana i nā loli i ka hoʻokele hoʻonohonoho.
Ke hoʻomau nei e hoʻohui i ʻelua mau mea hana.
Ua koho mākou iā GitLab CE i kā mākou waihona code, ʻaʻole liʻiliʻi loa no kāna mau modula CI/CD i kūkulu ʻia.
Vault o nā mea huna - Hashicorp Vault, me. no ka API nui.
Nā hoʻonohonoho hoʻāʻo a me nā kuleana kūpono - Molecule+Testinfra. ʻOi aku ka wikiwiki o nā hoʻokolohua inā pili ʻoe i ka mitogen ansible. I ka manawa like, ua hoʻomaka mākou e kākau i kā mākou CMDB a me ka mea hoʻokani pila no ka hoʻokuʻu maʻalahi (ma ke kiʻi ma luna o Cobbler), akā he moʻolelo ʻokoʻa loa kēia, a koʻu hoa hana a me ka mea hoʻomohala nui o kēia mau ʻōnaehana e haʻi i ka wā e hiki mai ana.
Ko mākou koho:
Molekula + Testinfra
Ansible + Hale kiaʻi + AWX
Ka Honua o nā kikowaena + DITNET (Hoʻomohala ponoʻī)
ʻO Cobbler
ʻO ke kukini Gitlab + GitLab
Hashicorp Vault
Ma ke ala, e pili ana i nā kuleana ansible. I ka wā mua he hoʻokahi wale nō, akā ma hope o kekahi mau refactorings aia he 17. Manaʻo nui wau e wāwahi i ka monolith i nā kuleana idempotent, a laila hiki ke hoʻokuʻu ʻokoʻa ʻia, a laila hiki iā ʻoe ke hoʻohui i nā hōʻailona. Ua hoʻokaʻawale mākou i nā kuleana ma o ka hana - network, logging, packages, hardware, molecule etc. Ma keʻano laulā, ua hahai mākou i ka hoʻolālā ma lalo nei. ʻAʻole wau e koi ʻo ia wale nō ka ʻoiaʻiʻo, akā ua hana ia no mākou.
- He hewa ke kope ʻana i nā kikowaena mai ke "kiʻi gula"!ʻO ka hemahema nui, ʻaʻole ʻoe i ʻike pololei i ke kūlana o nā kiʻi i kēia manawa, a hiki mai nā hoʻololi āpau i nā kiʻi āpau ma nā māla virtualization āpau.
- E hoʻohana i nā faila hoʻonohonoho paʻamau i ka liʻiliʻi a ʻae me nā keʻena ʻē aʻe iā ʻoe ke kuleana no nā faila ʻōnaehana nuino ka laʻana:
- E waiho i /etc/sysctl.conf me ka nele, pono nā hoʻonohonoho ma /etc/sysctl.d/. ʻO kāu paʻamau i hoʻokahi faila, maʻamau no ka noi ma kekahi.
- E hoʻohana i nā faila e hoʻoponopono i nā ʻāpana systemd.
- E hoʻopili i nā config a pau a hoʻokomo iā lākou holoʻokoʻa; inā hiki, ʻaʻohe sed a i ʻole nā mea like i loko o nā puke pāʻani
- Hoʻololi hou i ke code ʻōnaehana hoʻonohonoho hoʻonohonoho:
- E hoʻokaʻawale i nā hana i loko o nā hui kūpono a kākau hou i ka monolith i mau kuleana
- E hoʻohana i nā linters! Ansible-lint, yaml-lint, etc
- E hoʻololi i kāu ala! ʻAʻohe haʻahaʻa. Pono e wehewehe i ke kūlana o ka ʻōnaehana
- No nā kuleana Ansible a pau, pono ʻoe e kākau i nā hoʻokolohua ma ka mole a hoʻopuka i nā hōʻike i hoʻokahi manawa i ka lā.
- I kā mākou hihia, ma hope o ka hoʻomākaukau ʻana i nā hoʻokolohua (ʻoi aku ma mua o 100), ma kahi o 70000 mau hewa i loaʻa. Ua hala kekahi mau mahina e hoʻoponopono ai.
ʻO kā mākou hoʻokō
No laila, ua mākaukau nā hana ansible, hoʻohālikelike ʻia a nānā ʻia e nā linters. A hoʻonui ʻia nā gits ma nā wahi āpau. Akā ua wehe ʻia ka nīnau no ka hāʻawi ʻana i nā code hilinaʻi i nā ʻāpana like ʻole. Ua hoʻoholo mākou e hui pū me nā palapala. Me he mea lā:
Ma hope o ka hiki ʻana mai o ka hoʻololi, hoʻomaka ʻia ʻo CI, hana ʻia kahi kikowaena hoʻāʻo, ʻōwili ʻia nā kuleana, a hoʻāʻo ʻia e ka mole. Inā maikaʻi nā mea a pau, hele ke code i ka lālā prod. Akā ʻaʻole mākou e hoʻopili i nā code hou i nā kikowaena i loaʻa i ka mīkini. He ʻano pani kēia e pono ai no ka loaʻa kiʻekiʻe o kā mākou ʻōnaehana. A i ka wā e nui ai ka ʻōnaehana, hoʻomaka ke kānāwai o nā helu nui - ʻoiai inā maopopo ʻoe ʻaʻole ʻino ka loli, hiki ke alakaʻi i nā hopena weliweli.
Nui nā koho no ka hana ʻana i nā kikowaena. Ua hoʻopau mākou i ke koho ʻana i nā palapala Python maʻamau. A no CI ansible:
- name: create1.yml - Create a VM from a template
vmware_guest:
hostname: "{{datacenter}}".domain.ru
username: "{{ username_vc }}"
password: "{{ password_vc }}"
validate_certs: no
cluster: "{{cluster}}"
datacenter: "{{datacenter}}"
name: "{{ name }}"
state: poweredon
folder: "/{{folder}}"
template: "{{template}}"
customization:
hostname: "{{ name }}"
domain: domain.ru
dns_servers:
- "{{ ipa1_dns }}"
- "{{ ipa2_dns }}"
networks:
- name: "{{ network }}"
type: static
ip: "{{ip}}"
netmask: "{{netmask}}"
gateway: "{{gateway}}"
wake_on_lan: True
start_connected: True
allow_guest_control: True
wait_for_ip_address: yes
disk:
- size_gb: 1
type: thin
datastore: "{{datastore}}"
- size_gb: 20
type: thin
datastore: "{{datastore}}"
ʻO kēia ka mea a mākou i hele mai ai, ke hoʻomau nei ka ʻōnaehana e ola a hoʻomohala.
- 17 Nā kuleana kūpono no ka hoʻonohonoho ʻana i ke kikowaena. Hoʻolālā ʻia kēlā me kēia kuleana e hoʻoponopono i kahi hana loiloi ʻokoʻa (ka hoʻopaʻa inoa ʻana, ka loiloi, ka ʻae o ka mea hoʻohana, ka nānā ʻana, etc.).
- Hoʻāʻo kuleana. Molecule + TestInfra.
- Hoʻomohala ponoʻī: CMDB + Orchestrator.
- ʻO ka manawa hana kikowaena he ~ 30 mau minuke, automated a kūʻokoʻa kūʻokoʻa i ka pila hana.
- ʻO ka moku'āina / inoa like o ka ʻōnaehana ma nā ʻāpana āpau - nā puke pāʻani, nā waihona, nā mea virtualization.
- Ka nānā ʻana i kēlā me kēia lā i ke kūlana server me ka hana ʻana i nā hōʻike e pili ana i nā ʻokoʻa me ka maʻamau.
Manaʻo wau e pono kaʻu moʻolelo i ka poʻe i ka hoʻomaka ʻana o kā lākou huakaʻi. He aha ka puʻu automation āu e hoʻohana ai?
Source: www.habr.com