Soti nan yon "demaraj" a dè milye de serveurs nan yon douzèn sant done. Ki jan nou te kouri dèyè kwasans lan nan enfrastrikti Linux

Si enfrastrikti IT ou a grandi twò vit, ou pral fè fas ak yon chwa pi bonè oswa pita: lineyèman ogmante resous imen pou sipòte li oswa kòmanse automatisation. Jiska kèk pwen, nou te viv nan premye paradigm, ak Lè sa a, chemen an long nan Enfrastrikti-as-Kod te kòmanse.

Soti nan yon "demaraj" a dè milye de serveurs nan yon douzèn sant done. Ki jan nou te kouri dèyè kwasans lan nan enfrastrikti Linux

Natirèlman, NSPK se pa yon demaraj, men tankou yon atmosfè te gouvènen nan konpayi an nan premye ane yo nan egzistans li yo, ak sa yo te ane trè enteresan. Non mwen se Kornyakov Dmitry, Mwen te sipòte enfrastrikti Linux ak kondisyon disponiblite segondè pou plis pase 10 ane. Li te antre nan ekip NSPK nan mwa janvye 2016 epi, malerezman, pa t 'wè kòmansman an nan egzistans konpayi an, men li te vini nan yon etap nan gwo chanjman.

An jeneral, nou ka di ke ekip nou an bay 2 pwodwi pou konpayi an. Premye a se enfrastrikti. Mail ta dwe travay, DNS ta dwe travay, ak contrôleur domèn yo ta dwe kite ou antre nan sèvè ki pa ta dwe aksidan. Peyizaj IT konpayi an gwo! Sa yo se biznis & misyon sistèm kritik, kondisyon yo disponiblite pou kèk se 99,999. Dezyèm pwodwi a se sèvè yo tèt yo, fizik ak vityèl. Moun ki deja egziste yo dwe kontwole, epi yo dwe regilyèman delivre yo bay kliyan ki soti nan plizyè depatman. Nan atik sa a mwen vle konsantre sou ki jan nou devlope enfrastrikti ki responsab pou sik lavi sèvè a.

Apati nan yon vwayaj

Nan kòmansman vwayaj nou an, pil teknoloji nou an te sanble ak sa a:
OS CentOS 7
FreeIPA Domèn Kontwolè
Automatisation - Ansible(+Tower), Cobbler

Tout bagay sa a te lokalize nan 3 domèn, gaye nan plizyè sant done. Nan yon sant done gen sistèm biwo ak sit tès, nan rès la gen PROD.

Kreye sèvè nan yon pwen te sanble ak sa a:

Soti nan yon "demaraj" a dè milye de serveurs nan yon douzèn sant done. Ki jan nou te kouri dèyè kwasans lan nan enfrastrikti Linux

Nan modèl la VM, CentOS se minim ak minimòm obligatwa a se tankou kòrèk /etc/resolv.conf, rès la vini nan Ansible.

CMDB - Excel.

Si sèvè a se fizik, Lè sa a, olye pou yo kopye machin vityèl la, eksplwatasyon an te enstale sou li lè l sèvi avèk Cobbler - adrès MAC yo nan sèvè a sib yo ajoute nan konfigirasyon an Cobbler, sèvè a resevwa yon adrès IP atravè DHCP, ak Lè sa a, OS la. se ajoute.

Nan premye nou menm te eseye fè kèk kalite jesyon konfigirasyon nan Cobbler. Men, apre yon sèten tan, sa a te kòmanse pote pwoblèm ak portabilite nan konfigirasyon tou de nan lòt sant done ak nan kòd la Ansible pou prepare VMs.

Nan epòk sa a, anpil nan nou te konnen Ansible kòm yon ekstansyon pratik nan Bash epi yo pa t ekonomize sou desen lè l sèvi avèk shell ak sed. An jeneral Bashsible. Sa a finalman mennen nan lefèt ke si playbook a pou kèk rezon pa t 'travay sou sèvè a, li te pi fasil yo efase sèvè a, ranje playbook a epi kouri li ankò. Te gen esansyèlman pa gen vèsyon nan scripts, pa gen okenn portabilite nan konfigirasyon.

Pou egzanp, nou te vle chanje kèk konfigirasyon sou tout sèvè:

  1. Nou chanje konfigirasyon an sou serveurs ki deja egziste nan segman lojik / sant done yo. Pafwa pa nan yon sèl jou - kondisyon aksè ak lalwa gwo kantite pa pèmèt tout chanjman yo dwe aplike nan yon fwa. Ak kèk chanjman yo potansyèlman destriktif epi yo mande pou rekòmanse yon bagay - soti nan sèvis nan eksplwatasyon an tèt li.
  2. Ranje li nan Ansible
  3. Nou ranje li nan Cobbler
  4. Repete N fwa pou chak segman lojik/sant done

Nan lòd pou tout chanjman yo ale san pwoblèm, li te nesesè yo pran an kont anpil faktè, ak chanjman yo fèt toujou.

  • Refactoring kòd ansible, dosye konfigirasyon
  • Chanje meyè pratik entèn yo
  • Chanjman ki baze sou rezilta analiz de ensidan/aksidan
  • Chanje estanda sekirite, tou de entèn ak ekstèn. Pa egzanp, PCI DSS mete ajou ak nouvo kondisyon chak ane

Kwasans enfrastrikti ak kòmansman vwayaj la

Kantite serveurs/domèn lojik/sant done yo te grandi, e avèk yo kantite erè nan konfigirasyon yo. Nan kèk pwen, nou rive nan twa direksyon kote jesyon konfigirasyon bezwen devlope:

  1. Otomatik. Yo ta dwe evite erè imen nan operasyon repetitif yo otank posib.
  2. Repetebilite. Li pi fasil pou jere enfrastrikti lè li previzib. Konfigirasyon an nan serveurs ak zouti pou preparasyon yo ta dwe menm bagay la tou toupatou. Sa a enpòtan tou pou ekip pwodwi yo - apre tès la, aplikasyon an dwe garanti pou l fini nan yon anviwònman pwodiksyon konfigirasyon menm jan ak anviwònman tès la.
  3. Senplisite ak transparans nan fè chanjman nan jesyon konfigirasyon.

Li rete pou ajoute yon koup zouti.

Nou te chwazi GitLab CE kòm repozitwa kòd nou an, pa pi piti pou modil CI/CD entegre li yo.

Vault nan sekrè - Hashicorp Vault, incl. pou gwo API a.

Tès konfigirasyon ak wòl ansible - Molecule + Testinfra. Tès yo ale pi vit si ou konekte ak mitogen ansible. An menm tan an, nou te kòmanse ekri pwòp pa nou CMDB ak orchestrator pou deplwaman otomatik (nan foto ki pi wo a Cobbler), men sa a se yon istwa konplètman diferan, ki kòlèg mwen an ak pwomotè prensipal sistèm sa yo pral di nan lavni.

Chwa nou:

Molekil + Testinfra
Ansible + Tower + AWX
World of Servers + DITNET (Pwòp devlopman)
Kòdonye
Gitlab + GitLab kourè
Hashicorp vout

Soti nan yon "demaraj" a dè milye de serveurs nan yon douzèn sant done. Ki jan nou te kouri dèyè kwasans lan nan enfrastrikti Linux

By wout la, sou wòl ansible. Okòmansman te gen yon sèl, men apre plizyè refactoring te gen 17 nan yo mwen rekòmande pou kraze monolit la nan wòl idempotent, ki ka Lè sa a, dwe lanse separeman, ou ka ajoute tags. Nou divize wòl yo pa fonksyonalite - rezo, antre, pakè, pyès ki nan konpitè, molekil elatriye. An jeneral, nou te swiv estrateji ki anba a. Mwen pa ensiste ke sa a se verite a sèlman, men li te travay pou nou.

  • Kopye sèvè soti nan "imaj an lò" se sa ki mal!Dezavantaj prensipal la se ke ou pa konnen egzakteman nan ki eta imaj yo kounye a, e ke tout chanjman ap vini nan tout imaj nan tout fèm Virtualization.
  • Sèvi ak fichye konfigirasyon default yo nan yon minimòm epi dakò ak lòt depatman ke ou responsab pou dosye sistèm prensipal yopa egzanp:
    1. Kite /etc/sysctl.conf vid, paramèt yo ta dwe sèlman nan /etc/sysctl.d/. Defo ou nan yon dosye, koutim pou aplikasyon an nan yon lòt.
    2. Sèvi ak dosye override pou edite inite systemd yo.
  • Modèl tout konfigirasyon epi enkli yo nèt si sa posib, pa gen okenn sed oswa analogue li yo nan liv playbooks
  • Refactoring kòd sistèm jesyon konfigirasyon an:
    1. Kraze travay yo an antite ki lojik epi reekri monolit la an wòl
    2. Sèvi ak linters! Ansible-lint, yaml-lint, elatriye
    3. Chanje apwòch ou! Pa gen bashsible. Li nesesè pou dekri eta sistèm lan
  • Pou tout wòl Ansible ou bezwen ekri tès nan molekil ak jenere rapò yon fwa pa jou.
  • Nan ka nou an, apre yo fin prepare tès yo (ki gen plis pase 100), yo te jwenn apeprè 70000 erè. Li te pran plizyè mwa pou ranje li.Soti nan yon "demaraj" a dè milye de serveurs nan yon douzèn sant done. Ki jan nou te kouri dèyè kwasans lan nan enfrastrikti Linux

Enplimantasyon nou

Se konsa, wòl yo ansible yo te pare, modèl ak tcheke pa linters. E menm git yo leve toupatou. Men, kesyon an nan livrezon kòd serye nan diferan segman rete louvri. Nou deside senkronize ak scripts. Sanble sa:

Soti nan yon "demaraj" a dè milye de serveurs nan yon douzèn sant done. Ki jan nou te kouri dèyè kwasans lan nan enfrastrikti Linux

Apre chanjman an rive, CI lanse, yo kreye yon sèvè tès, wòl yo woule, epi molekil la teste. Si tout bagay anfòm, kòd la ale nan branch prod la. Men, nou pa aplike nouvo kòd pou serveurs ki ekziste nan machin lan. Sa a se yon kalite bouchon ki nesesè pou disponiblite segondè nan sistèm nou yo. Epi lè enfrastrikti a vin gwo, lwa sou gwo kantite antre nan jwèt - menm si ou sèten ke chanjman an pa inofansif, li ka mennen nan konsekans terib.

Genyen tou anpil opsyon pou kreye serveurs. Nou te fini chwazi scripts Python koutim. Ak pou 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}}"

Se sa nou rive, sistèm nan kontinye ap viv ak devlope.

  • 17 Wòl Ansible pou mete kanpe sèvè a. Chak nan wòl yo fèt pou rezoud yon travay lojik separe (enregistrement, odit, otorizasyon itilizatè, siveyans, elatriye).
  • Tès wòl. Molekil + TestInfra.
  • Pwòp devlopman: CMDB + Orchestrator.
  • Tan kreyasyon sèvè a se ~ 30 minit, otomatik epi pratikman endepandan de keu travay la.
  • Menm eta a / nonmen nan enfrastrikti a nan tout segman - playbooks, depo, eleman Virtualization.
  • Tcheke chak jou nan estati sèvè ak jenerasyon rapò sou dezakò ak estanda a.

Mwen espere istwa mwen an ap itil moun ki nan kòmansman vwayaj yo. Ki pil automatisation ou itilize?

Sous: www.habr.com