Lati “ibẹrẹ” si ẹgbẹẹgbẹrun awọn olupin ni awọn ile-iṣẹ data mejila kan. Bii a ṣe lepa idagbasoke ti awọn amayederun Linux

Ti awọn amayederun IT rẹ ba dagba ni iyara pupọ, iwọ yoo pẹ tabi ya yoo dojuko yiyan: laini mu awọn orisun eniyan pọ si lati ṣe atilẹyin tabi bẹrẹ adaṣe. Titi di aaye diẹ, a gbe ni apẹrẹ akọkọ, ati lẹhinna ọna gigun si Awọn amayederun-bi-koodu bẹrẹ.

Lati “ibẹrẹ” si ẹgbẹẹgbẹrun awọn olupin ni awọn ile-iṣẹ data mejila kan. Bii a ṣe lepa idagbasoke ti awọn amayederun Linux

Nitoribẹẹ, NSPK kii ṣe ibẹrẹ, ṣugbọn iru afẹfẹ bẹ jọba ni ile-iṣẹ ni awọn ọdun akọkọ ti aye rẹ, ati pe awọn ọdun ti o nifẹ pupọ. Orukọ mi ni Kornyakov Dmitry, Mo ti ṣe atilẹyin awọn amayederun Linux pẹlu awọn ibeere wiwa giga fun ọdun 10 ju. O darapọ mọ ẹgbẹ NSPK ni Oṣu Kini ọdun 2016 ati, laanu, ko rii ibẹrẹ ibẹrẹ ti ile-iṣẹ naa, ṣugbọn o wa ni ipele ti awọn ayipada nla.

Ni gbogbogbo, a le sọ pe ẹgbẹ wa pese awọn ọja 2 fun ile-iṣẹ naa. Ni igba akọkọ ti ni amayederun. Mail yẹ ki o ṣiṣẹ, DNS yẹ ki o ṣiṣẹ, ati awọn oludari agbegbe yẹ ki o jẹ ki o wọ awọn olupin ti ko yẹ ki o ṣubu. Ala-ilẹ IT ti ile-iṣẹ naa tobi! Iwọnyi jẹ awọn eto iṣowo ati iṣẹ apinfunni, awọn ibeere wiwa fun diẹ ninu jẹ 99,999. Ọja keji jẹ awọn olupin funrararẹ, ti ara ati foju. Awọn ti o wa tẹlẹ nilo lati ṣe abojuto, ati pe awọn tuntun gbọdọ wa ni jiṣẹ nigbagbogbo si awọn alabara lati ọpọlọpọ awọn ẹka. Ninu nkan yii Mo fẹ lati dojukọ lori bii a ṣe dagbasoke awọn amayederun ti o jẹ iduro fun igbesi-aye igbesi aye olupin.

Ibẹrẹ ọna

Ni ibẹrẹ irin-ajo wa, akopọ imọ-ẹrọ wa dabi eyi:
OS CentOS 7
Awọn oludari Aṣẹ FreeIPA
Automation – Ansible(+ Tower), Cobbler

Gbogbo eyi wa ni awọn ibugbe 3, ti o tan kaakiri awọn ile-iṣẹ data pupọ. Ninu ile-iṣẹ data kan awọn eto ọfiisi ati awọn aaye idanwo wa, ninu iyokù PROD wa.

Ṣiṣẹda awọn olupin ni aaye kan dabi eyi:

Lati “ibẹrẹ” si ẹgbẹẹgbẹrun awọn olupin ni awọn ile-iṣẹ data mejila kan. Bii a ṣe lepa idagbasoke ti awọn amayederun Linux

Ninu awoṣe VM, CentOS jẹ iwonba ati pe o kere julọ ti o nilo jẹ bi deede /etc/resolv.conf, iyokù wa nipasẹ Ansible.

CMDB - Tayo.

Ti olupin naa ba jẹ ti ara, lẹhinna dipo didakọ ẹrọ foju, OS ti fi sii lori rẹ nipa lilo Cobbler - awọn adirẹsi MAC ti olupin ibi-afẹde ti wa ni afikun si atunto Cobbler, olupin naa gba adirẹsi IP nipasẹ DHCP, ati lẹhinna OS. ti wa ni afikun.

Ni akọkọ a paapaa gbiyanju lati ṣe iru iṣakoso iṣeto ni Cobbler. Ṣugbọn lẹhin akoko, eyi bẹrẹ lati mu awọn iṣoro wa pẹlu gbigbe awọn atunto mejeeji si awọn ile-iṣẹ data miiran ati si koodu Ansible fun ngbaradi awọn VM.

Ni akoko yẹn, ọpọlọpọ awọn ti wa woye Ansible bi a rọrun itẹsiwaju ti Bash ati ki o ko skimp lori awọn aṣa lilo ikarahun ati sed. ìwò Bashsible. Eyi nikẹhin yori si otitọ pe ti iwe-iṣere fun idi kan ko ṣiṣẹ lori olupin naa, o rọrun lati paarẹ olupin naa, ṣatunṣe iwe-iṣere naa ki o tun ṣiṣẹ lẹẹkansi. Nibẹ je pataki ko si versioning ti awọn iwe afọwọkọ, ko si portability ti awọn atunto.

Fun apẹẹrẹ, a fẹ lati yi atunto kan pada lori gbogbo awọn olupin:

  1. A yipada iṣeto ni lori awọn olupin ti o wa ni apakan mogbonwa / ile-iṣẹ data. Nigba miiran kii ṣe ni ọjọ kan - awọn ibeere iraye si ati ofin ti awọn nọmba nla ko gba gbogbo awọn ayipada laaye lati lo ni ẹẹkan. Ati pe diẹ ninu awọn ayipada jẹ apanirun ati pe o nilo lati tun nkan bẹrẹ - lati awọn iṣẹ si OS funrararẹ.
  2. Ojoro o ni Ansible
  3. A ṣe atunṣe ni Cobbler
  4. Tun N igba fun kọọkan mogbonwa apa/data aarin

Ni ibere fun gbogbo awọn ayipada lati lọ laisiyonu, o jẹ dandan lati ṣe akiyesi ọpọlọpọ awọn okunfa, ati awọn ayipada waye nigbagbogbo.

  • Refactoring ansible koodu, iṣeto ni awọn faili
  • Iyipada ti abẹnu ti o dara ju ise
  • Awọn iyipada ti o da lori awọn abajade ti itupalẹ awọn iṣẹlẹ / awọn ijamba
  • Iyipada aabo awọn ajohunše, mejeeji inu ati ita. Fun apẹẹrẹ, PCI DSS ti ni imudojuiwọn pẹlu awọn ibeere titun ni gbogbo ọdun

Idagba awọn amayederun ati ibẹrẹ irin-ajo naa

Nọmba awọn olupin / awọn ibugbe ọgbọn / awọn ile-iṣẹ data dagba, ati pẹlu wọn nọmba awọn aṣiṣe ni awọn atunto. Ni aaye kan, a wa si awọn itọnisọna mẹta ninu eyiti iṣakoso iṣeto ni lati ni idagbasoke:

  1. Adaṣiṣẹ. Aṣiṣe eniyan ni awọn iṣẹ atunwi yẹ ki o yago fun bi o ti ṣee ṣe.
  2. Atunṣe. O rọrun pupọ lati ṣakoso awọn amayederun nigbati o jẹ asọtẹlẹ. Iṣeto ti awọn olupin ati awọn irinṣẹ fun igbaradi wọn yẹ ki o jẹ kanna nibi gbogbo. Eyi tun ṣe pataki fun awọn ẹgbẹ ọja - lẹhin idanwo, ohun elo gbọdọ jẹ iṣeduro lati pari ni agbegbe iṣelọpọ ti a tunto bakanna si agbegbe idanwo naa.
  3. Простота и прозрачность внесения изменений в configuration management.

O wa lati ṣafikun awọn irinṣẹ meji.

A yan GitLab CE gẹgẹbi ibi ipamọ koodu wa, kii ṣe o kere ju fun awọn modulu CI/CD ti a ṣe sinu rẹ.

Ifinkan ti asiri - Hashicorp ifinkan, pẹlu. fun API nla.

Awọn atunto idanwo ati awọn ipa ti o ṣeeṣe - Molecule + Testinfra. Awọn idanwo lọ yiyara pupọ ti o ba sopọ si mitogen ti o ṣeeṣe. Ni akoko kanna, a bẹrẹ lati kọ CMDB tiwa ati orchestrator fun imuṣiṣẹ laifọwọyi (ni aworan loke Cobbler), ṣugbọn eyi jẹ itan ti o yatọ patapata, eyiti ẹlẹgbẹ mi ati olupilẹṣẹ akọkọ ti awọn eto wọnyi yoo sọ ni ọjọ iwaju.

Aṣayan wa:

Molecule + Testinfra
Ansible + Tower + AWX
Aye ti Awọn olupin + DITNET (idagbasoke ti ara)
Onidan
Gitlab + GitLab olusare
Hashicorp ifinkan

Lati “ibẹrẹ” si ẹgbẹẹgbẹrun awọn olupin ni awọn ile-iṣẹ data mejila kan. Bii a ṣe lepa idagbasoke ti awọn amayederun Linux

Nipa ọna, nipa awọn ipa ti o ṣeeṣe. Ni akọkọ ọkan nikan ni o wa, ṣugbọn lẹhin ọpọlọpọ awọn atunṣe jẹ 17 ninu wọn. Mo ṣeduro ni iyanju lati fọ monolith sinu awọn ipa agbara, eyiti o le ṣe ifilọlẹ lọtọ; ni afikun, o le ṣafikun awọn afi. A pin awọn ipa nipasẹ iṣẹ ṣiṣe - nẹtiwọọki, gedu, awọn idii, ohun elo, moleku ati bẹbẹ lọ. Ni gbogbogbo, a tẹle ilana ni isalẹ. Emi ko tẹnumọ pe eyi nikan ni otitọ, ṣugbọn o ṣiṣẹ fun wa.

  • Didaakọ awọn olupin lati “aworan goolu” jẹ ibi!Aila-nfani akọkọ ni pe o ko mọ pato iru ipo ti awọn aworan wa ni bayi, ati pe gbogbo awọn ayipada yoo wa si gbogbo awọn aworan ni gbogbo awọn oko agbara agbara.
  • Lo awọn faili iṣeto aiyipada si o kere ju ati gba pẹlu awọn apa miiran pe o ni iduro fun awọn faili eto akọkọfun apẹẹrẹ:
    1. Fi /etc/sysctl.conf sofo, awọn eto yẹ ki o wa nikan ni /etc/sysctl.d/. Aiyipada rẹ ninu faili kan, aṣa fun ohun elo ni omiiran.
    2. Lo awọn faili danu lati ṣatunkọ awọn ẹya eto.
  • Ṣe apẹrẹ gbogbo awọn atunto ki o si fi wọn kun patapata; ti o ba ṣeeṣe, ko si sed tabi awọn afọwọṣe rẹ ninu awọn iwe-iṣere
  • Ṣiṣe atunṣe koodu eto iṣakoso iṣeto ni:
    1. Fọ awọn iṣẹ-ṣiṣe si isalẹ sinu awọn nkan ọgbọn ki o tun kọ monolith sinu awọn ipa
    2. Lo linters! Ansible-lint, yaml-lint, ati be be lo
    3. Yi ọna rẹ pada! Ko si bashsible. O jẹ dandan lati ṣe apejuwe ipo ti eto naa
  • Fun gbogbo awọn ipa ti o ni anfani o nilo lati kọ awọn idanwo ni moleku ati ṣe agbekalẹ awọn ijabọ lẹẹkan ni ọjọ kan.
  • Ninu ọran wa, lẹhin igbaradi awọn idanwo (eyiti o wa diẹ sii ju 100), nipa awọn aṣiṣe 70000 ni a rii. O gba ọpọlọpọ awọn oṣu lati ṣatunṣe.Lati “ibẹrẹ” si ẹgbẹẹgbẹrun awọn olupin ni awọn ile-iṣẹ data mejila kan. Bii a ṣe lepa idagbasoke ti awọn amayederun Linux

Wa imuse

Nitorinaa, awọn ipa ti o ṣeeṣe ti ṣetan, awoṣe ati ṣayẹwo nipasẹ awọn linters. Ati paapaa gits ti wa ni dide nibi gbogbo. Ṣugbọn ibeere ti ifijiṣẹ koodu igbẹkẹle si awọn apakan oriṣiriṣi wa ni ṣiṣi. A pinnu lati muṣiṣẹpọ pẹlu awọn iwe afọwọkọ. O dabi iyẹn:

Lati “ibẹrẹ” si ẹgbẹẹgbẹrun awọn olupin ni awọn ile-iṣẹ data mejila kan. Bii a ṣe lepa idagbasoke ti awọn amayederun Linux

Lẹhin iyipada ti de, CI ti ṣe ifilọlẹ, a ṣẹda olupin idanwo, awọn ipa ti yiyi, ati idanwo nipasẹ moleku. Ti ohun gbogbo ba dara, koodu naa lọ si ẹka prod. Ṣugbọn a ko lo koodu titun si awọn olupin ti o wa ninu ẹrọ naa. Eyi jẹ iru iduro ti o jẹ pataki fun wiwa giga ti awọn eto wa. Ati pe nigbati awọn amayederun ba tobi, ofin awọn nọmba nla wa sinu ere - paapaa ti o ba ni idaniloju pe iyipada ko lewu, o le ja si awọn abajade to buruju.

Awọn aṣayan pupọ tun wa fun ṣiṣẹda olupin. A pari yiyan awọn iwe afọwọkọ Python aṣa. Ati fun CI ṣee ṣe:

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

Eyi ni ohun ti a ti de, eto naa tẹsiwaju lati gbe ati idagbasoke.

  • 17 Awọn ipa ti o ṣeeṣe fun eto olupin naa. Ọkọọkan awọn ipa jẹ apẹrẹ lati yanju iṣẹ-ṣiṣe ọgbọn lọtọ (gidu, iṣatunṣe, aṣẹ olumulo, ibojuwo, ati bẹbẹ lọ).
  • Idanwo ipa. Molecule + TestInfra.
  • Idagbasoke ti ara: CMDB + Orchestrator.
  • Akoko ẹda olupin jẹ ~ iṣẹju 30, adaṣe ati adaṣe adaṣe ti isinyi iṣẹ-ṣiṣe.
  • Ipo kanna / orukọ orukọ ti awọn amayederun ni gbogbo awọn apakan - awọn iwe-iṣere, awọn ibi ipamọ, awọn eroja agbara ipa.
  • Ayẹwo ojoojumọ ti ipo olupin pẹlu iran ti awọn ijabọ lori awọn aiṣedeede pẹlu boṣewa.

Mo nireti pe itan mi yoo wulo fun awọn ti o wa ni ibẹrẹ irin-ajo wọn. Apapọ adaṣiṣẹ wo ni o lo?

orisun: www.habr.com