Mai kahi "hoʻomaka" a hiki i nā kaukani o nā kikowaena ma nā kikowaena data he ʻumi. Pehea mākou i alualu ai i ka ulu ʻana o Linux Infrastructure

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.

Mai kahi "hoʻomaka" a hiki i nā kaukani o nā kikowaena ma nā kikowaena data he ʻumi. Pehea mākou i alualu ai i ka ulu ʻana o Linux Infrastructure

ʻ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. Kornyakov Dmitry, Ke kākoʻo nei au i nā ʻōnaehana Linux me nā koi loaʻa kiʻekiʻe ma mua o 10 mau makahiki. Ua komo ʻo ia i ka hui NSPK ma Ianuali 2016 a, ʻaʻole naʻe i ʻike i ka hoʻomaka mua o ka noho ʻana o ka ʻoihana, akā hele mai i kahi pae o nā loli nui.

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:

Mai kahi "hoʻomaka" a hiki i nā kaukani o nā kikowaena ma nā kikowaena data he ʻumi. Pehea mākou i alualu ai i ka ulu ʻana o Linux Infrastructure

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:

  1. 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ʻī.
  2. Hoʻoponopono iā ia ma Ansible
  3. Hoʻoponopono mākou iā Cobbler
  4. 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:

  1. ʻOtometi. Pono e pale 'ia ka hewa kanaka i ka hana hou e like me ka hiki.
  2. 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.
  3. ʻ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

Mai kahi "hoʻomaka" a hiki i nā kaukani o nā kikowaena ma nā kikowaena data he ʻumi. Pehea mākou i alualu ai i ka ulu ʻana o Linux Infrastructure

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:
    1. 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.
    2. 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:
    1. E hoʻokaʻawale i nā hana i loko o nā hui kūpono a kākau hou i ka monolith i mau kuleana
    2. E hoʻohana i nā linters! Ansible-lint, yaml-lint, etc
    3. 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.Mai kahi "hoʻomaka" a hiki i nā kaukani o nā kikowaena ma nā kikowaena data he ʻumi. Pehea mākou i alualu ai i ka ulu ʻana o Linux Infrastructure

ʻ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ā:

Mai kahi "hoʻomaka" a hiki i nā kaukani o nā kikowaena ma nā kikowaena data he ʻumi. Pehea mākou i alualu ai i ka ulu ʻana o Linux Infrastructure

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