Gikan sa usa ka "pagsugod" hangtod sa libu-libo nga mga server sa usa ka dosena nga mga sentro sa datos. Giunsa Nato Gigukod ang Pag-uswag sa Linux Infrastructure

Kung ang imong imprastraktura sa IT dali nga motubo, sa madugay o sa madali mag-atubang ka sa usa ka kapilian: linearly nga pagdugang sa mga kapanguhaan sa tawo aron masuportahan kini o magsugod sa automation. Hangtud sa pila ka punto, nagpuyo kami sa una nga paradigm, ug pagkahuman nagsugod ang taas nga agianan padulong sa Infrastructure-as-Code.

Gikan sa usa ka "pagsugod" hangtod sa libu-libo nga mga server sa usa ka dosena nga mga sentro sa datos. Giunsa Nato Gigukod ang Pag-uswag sa Linux Infrastructure

Siyempre, ang NSPK dili usa ka pagsugod, apan ang ingon nga atmospera naghari sa kompanya sa unang mga tuig sa paglungtad niini, ug kadto mga makapaikag kaayo nga mga tuig. Akong ngalan Kornyakov Dmitry, Gisuportahan nako ang imprastraktura sa Linux nga adunay taas nga kinahanglanon nga magamit sa sobra sa 10 ka tuig. Miapil siya sa NSPK team niadtong Enero 2016 ug, sa kasubo, wala makakita sa sinugdanan sa paglungtad sa kompanya, apan miabut sa usa ka yugto sa dagkong kausaban.

Sa kinatibuk-an, makaingon kita nga ang among team nagsuplay ug 2 ka produkto para sa kompanya. Ang una mao ang imprastraktura. Ang mail kinahanglan nga molihok, ang DNS kinahanglan nga molihok, ug ang mga tigkontrol sa domain kinahanglan nga tugutan ka sa mga server nga dili kinahanglan mag-crash. Ang talan-awon sa IT sa kompanya dako kaayo! Kini ang mga kritikal nga sistema sa negosyo ug misyon, ang mga kinahanglanon nga magamit alang sa pipila mao ang 99,999. Ang ikaduha nga produkto mao ang mga server mismo, pisikal ug virtual. Ang mga naa na kinahanglan nga bantayan, ug ang mga bag-o kinahanglan nga kanunay nga ihatud sa mga kostumer gikan sa daghang mga departamento. Niini nga artikulo gusto nako nga ipunting kung giunsa namon naugmad ang imprastraktura nga responsable sa siklo sa kinabuhi sa server.

Pagsugod sa panaw

Sa sinugdanan sa among panaw, ang among teknolohiya stack ingon niini:
OS CentOS 7
Mga Kontroler sa Domain sa FreeIPA
Automation - Ansible(+Tower), Cobbler

Ang tanan nga kini nahimutang sa 3 nga mga dominyo, mikaylap sa daghang mga sentro sa datos. Sa usa ka sentro sa datos adunay mga sistema sa opisina ug mga site sa pagsulay, sa nahabilin adunay PROD.

Ang paghimo sa mga server sa usa ka punto ingon niini:

Gikan sa usa ka "pagsugod" hangtod sa libu-libo nga mga server sa usa ka dosena nga mga sentro sa datos. Giunsa Nato Gigukod ang Pag-uswag sa Linux Infrastructure

Sa template sa VM, gamay ra ang CentOS ug ang gikinahanglan nga minimum sama sa husto /etc/resolv.conf, ang nahabilin moabut pinaagi sa Ansible.

CMDB - Excel.

Kung pisikal ang server, nan imbes nga kopyahon ang virtual machine, ang OS gi-install niini gamit ang Cobbler - ang mga MAC address sa target nga server gidugang sa Cobbler config, ang server nakadawat usa ka IP address pinaagi sa DHCP, ug dayon ang OS gidugang.

Sa sinugdan misulay pa gani kami sa paghimo og usa ka matang sa pagdumala sa pag-configure sa Cobbler. Apan sa paglabay sa panahon, nagsugod kini sa pagdala sa mga problema sa pagdala sa mga pag-configure sa ubang mga sentro sa datos ug sa Ansible code alang sa pag-andam sa mga VM.

Niadtong panahona, daghan kanamo ang nakasabut sa Ansible nga usa ka sayon ​​​​nga extension sa Bash ug wala mag-skim sa mga disenyo gamit ang shell ug sed. Kinatibuk-ang Bashsible. Kini sa katapusan misangpot sa kamatuoran nga kung ang playbook sa usa ka rason wala magtrabaho sa server, mas sayon ​​​​ang pagtangtang sa server, ayohon ang playbook ug ipadagan kini pag-usab. Sa tinuud wala’y pag-bersyon sa mga script, wala’y kadali nga madala sa mga pag-configure.

Pananglitan, gusto namong usbon ang pipila ka config sa tanang server:

  1. Gibag-o namon ang pagsumpo sa mga naglungtad nga server sa lohikal nga bahin / sentro sa datos. Usahay dili sa usa ka adlaw - ang mga kinahanglanon sa pag-access ug ang balaod sa daghang mga numero wala magtugot sa tanan nga mga pagbag-o nga magamit sa usa ka higayon. Ug ang pipila ka mga pagbag-o mahimo’g makadaot ug kinahanglan nga i-restart ang usa ka butang - gikan sa mga serbisyo hangtod sa OS mismo.
  2. Pag-ayo niini sa Ansible
  3. Giayo namo kini sa Cobbler
  4. Balika ang N ka beses para sa matag lohikal nga bahin/data center

Aron ang tanan nga mga pagbag-o mahimong hapsay, kinahanglan nga tagdon ang daghang mga hinungdan, ug ang mga pagbag-o kanunay nga mahitabo.

  • Refactoring ansible code, configuration files
  • Pag-usab sa internal nga labing maayong gawi
  • Mga pagbag-o base sa mga resulta sa pagtuki sa mga insidente/aksidente
  • Pag-usab sa mga sumbanan sa seguridad, sa sulod ug sa gawas. Pananglitan, ang PCI DSS gi-update sa bag-ong mga kinahanglanon matag tuig

Pag-uswag sa imprastraktura ug pagsugod sa panaw

Ang gidaghanon sa mga server / lohikal nga mga dominyo / data center mitubo, ug uban kanila ang gidaghanon sa mga sayup sa mga pag-configure. Sa pila ka punto, nakaabot kami sa tulo ka mga direksyon diin kinahanglan nga pauswagon ang pagdumala sa pag-configure:

  1. Automation. Ang sayop sa tawo sa nagbalikbalik nga mga operasyon kinahanglan nga likayan kutob sa mahimo.
  2. Pagkabalikbalik. Mas sayon ​​ang pagdumala sa imprastraktura kung kini matag-an. Ang pag-configure sa mga server ug mga himan alang sa ilang pag-andam kinahanglan parehas bisan diin. Importante usab kini alang sa mga team sa produkto - pagkahuman sa pagsulay, ang aplikasyon kinahanglan nga garantiya nga matapos sa usa ka palibot sa produksiyon nga gi-configure nga parehas sa palibot sa pagsulay.
  3. Ang kayano ug transparency sa paghimo og mga kausaban sa pagdumala sa configuration.

Kini nagpabilin sa pagdugang sa usa ka magtiayon nga sa mga himan.

Gipili namo ang GitLab CE isip among code repository, labing menos alang sa iyang built-in nga CI/CD modules.

Vault sa mga sekreto - Hashicorp Vault, apil. para sa dakong API.

Pagsulay sa mga pagsumpo ug ansible nga mga tahas - Molecule+Testinfra. Mas paspas ang mga pagsulay kung magkonektar ka sa usa ka mitogen. Sa samang higayon, nagsugod kami sa pagsulat sa among kaugalingong CMDB ug orkestra alang sa awtomatik nga pag-deploy (sa hulagway sa ibabaw sa Cobbler), apan kini usa ka hingpit nga lahi nga istorya, nga isulti sa akong kauban ug ang nag-unang developer niini nga mga sistema sa umaabot.

Ang among kapilian:

Molecule + Testinfra
Ansible + Tower + AWX
Kalibutan sa mga Server + DITNET (Kaugalingon nga kalamboan)
Cobbler
Gitlab + GitLab runner
Hashicorp Vault

Gikan sa usa ka "pagsugod" hangtod sa libu-libo nga mga server sa usa ka dosena nga mga sentro sa datos. Giunsa Nato Gigukod ang Pag-uswag sa Linux Infrastructure

Pinaagi sa dalan, mahitungod sa ansible nga mga papel. Sa sinugdan adunay usa ra, apan pagkahuman sa daghang mga refactorings adunay mga 17. Kusganon nako nga girekomenda ang pagbungkag sa monolith sa mga idempotent nga mga tahas, nga mahimo’g ilunsad nga gilain; dugang pa, mahimo nimong idugang ang mga tag. Gibahin namon ang mga tahas pinaagi sa pag-andar - network, pag-log, mga pakete, hardware, molekula ug uban pa. Sa kinatibuk-an, gisunod namo ang estratehiya sa ubos. Wala ako moinsistir nga kini ra ang kamatuoran, apan kini nagtrabaho alang kanamo.

  • Ang pagkopya sa mga server gikan sa "bulawan nga imahe" daotan!Ang nag-unang disbentaha mao nga wala ka mahibal-an kung unsa ang kahimtang sa mga imahe karon, ug nga ang tanan nga mga pagbag-o moabut sa tanan nga mga imahe sa tanan nga mga umahan sa virtualization.
  • Gamita ang default nga mga file sa pag-configure sa labing gamay ug pag-uyon sa ubang mga departamento nga ikaw ang responsable sa mga nag-unang file sa sistemasama pananglit:
    1. Biyai ang /etc/sysctl.conf nga walay sulod, ang mga setting kinahanglan ra sa /etc/sysctl.d/. Ang imong default sa usa ka file, custom alang sa aplikasyon sa lain.
    2. Gamita ang mga override nga mga file aron ma-edit ang systemd units.
  • I-template ang tanan nga mga config ug iapil kini sa hingpit; kung mahimo, walay sed o mga analogue niini sa mga playbook
  • Pag-refactor sa configuration management system code:
    1. Gub-a ang mga buluhaton ngadto sa lohikal nga mga entidad ug isulat pag-usab ang monolith ngadto sa mga tahas
    2. Gamit ug linters! Ansible-lint, yaml-lint, ug uban pa
    3. Usba ang imong pamaagi! Walay bashible. Kinahanglan nga ihulagway ang kahimtang sa sistema
  • Alang sa tanan nga mga tahas nga Ansible kinahanglan nimo nga isulat ang mga pagsulay sa molekula ug maghimo mga taho kausa sa usa ka adlaw.
  • Sa among kaso, pagkahuman sa pag-andam sa mga pagsulay (nga adunay labaw pa sa 100), mga 70000 nga mga sayup ang nakit-an. Nagkinahanglan kini og pipila ka bulan aron ayohon kini.Gikan sa usa ka "pagsugod" hangtod sa libu-libo nga mga server sa usa ka dosena nga mga sentro sa datos. Giunsa Nato Gigukod ang Pag-uswag sa Linux Infrastructure

Atong implementasyon

Mao nga, ang mga mahimo nga mga tahas andam na, templated ug gisusi sa mga linter. Ug bisan ang mga gits gipataas bisan asa. Apan ang pangutana sa kasaligan nga paghatud sa code sa lainlaing mga bahin nagpabilin nga bukas. Nakahukom kami nga mag-synchronize sa mga script. Murag mao ni:

Gikan sa usa ka "pagsugod" hangtod sa libu-libo nga mga server sa usa ka dosena nga mga sentro sa datos. Giunsa Nato Gigukod ang Pag-uswag sa Linux Infrastructure

Pagkahuman sa pagbag-o, gilansad ang CI, gihimo ang usa ka server sa pagsulay, gilukot ang mga tahas, ug gisulayan sa molekula. Kung ok ang tanan, ang code moadto sa prod branch. Apan wala kami mag-aplay og bag-ong code sa kasamtangan nga mga server sa makina. Kini usa ka matang sa stopper nga gikinahanglan alang sa taas nga pagkaanaa sa atong mga sistema. Ug kung ang imprastraktura mahimong dako, ang balaod sa daghang mga numero molihok - bisan kung sigurado ka nga ang pagbag-o dili makadaot, mahimo’g mosangput sa grabe nga mga sangputanan.

Adunay usab daghang mga kapilian alang sa paghimo og mga server. Natapos namon ang pagpili sa naandan nga mga script sa Python. Ug para sa 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}}"

Mao kini ang atong naabot, ang sistema nagpadayon sa pagkinabuhi ug paglambo.

  • 17 Masaligan nga mga tahas sa pag-set up sa server. Ang matag usa sa mga tahas gilaraw aron masulbad ang usa ka lahi nga lohikal nga buluhaton (pag-log, pag-awdit, pagtugot sa tiggamit, pag-monitor, ug uban pa).
  • Pagsulay sa papel. Molecule + TestInfra.
  • Kaugalingong kalamboan: CMDB + Orchestrator.
  • Ang oras sa paghimo sa server mao ang ~ 30 minuto, awtomatiko ug halos independente sa pila sa buluhaton.
  • Ang parehas nga estado / pagngalan sa imprastraktura sa tanan nga mga bahin - mga playbook, mga repositoryo, mga elemento sa virtualization.
  • Adlaw-adlaw nga pagsusi sa kahimtang sa server nga adunay henerasyon sa mga taho sa mga kalainan sa sumbanan.

Nanghinaut ko nga ang akong istorya mahimong mapuslanon sa mga naa sa sinugdanan sa ilang panaw. Unsa nga automation stack ang imong gigamit?

Source: www.habr.com