Π’Ρ€ΠΈΠ»Π»Π΅Ρ€ ΠΎ настройкС сСрвСров Π±Π΅Π· чудСс с Configuration Management

Π”Π΅Π»ΠΎ близилось ΠΊ Новому Π³ΠΎΠ΄Ρƒ. Π”Π΅Ρ‚ΠΈ всСй страны ΡƒΠΆΠ΅ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ письма Π”Π΅Π΄Ρƒ ΠœΠΎΡ€ΠΎΠ·Ρƒ ΠΈΠ»ΠΈ Π·Π°Π³Π°Π΄Π°Π»ΠΈ сСбС ΠΏΠΎΠ΄Π°Ρ€ΠΊΠΈ, Π° Π³Π»Π°Π²Π½Ρ‹ΠΉ ΠΈΡ… ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒ β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… Ρ€ΠΈΡ‚Π΅ΠΉΠ»Π΅Ρ€ΠΎΠ² β€” готовился ΠΊ Π°ΠΏΠΎΡ„Π΅ΠΎΠ·Ρƒ ΠΏΡ€ΠΎΠ΄Π°ΠΆ. Π’ Π΄Π΅ΠΊΠ°Π±Ρ€Π΅ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π° Π΅Π³ΠΎ Π¦ΠžΠ” вырастаСт Π² нСсколько Ρ€Π°Π·. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ компания Ρ€Π΅ΡˆΠΈΠ»Π° ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€ ΠΈ ввСсти Π² строй нСсколько дСсятков Π½ΠΎΠ²Ρ‹Ρ… сСрвСров вмСсто оборудования, срок слуТбы ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π»ΡΡ. На этом присказка Π½Π° Ρ„ΠΎΠ½Π΅ круТащихся снСТинок заканчиваСтся, ΠΈ начинаСтся Ρ‚Ρ€ΠΈΠ»Π»Π΅Ρ€.

Π’Ρ€ΠΈΠ»Π»Π΅Ρ€ ΠΎ настройкС сСрвСров Π±Π΅Π· чудСс с Configuration Management
ΠžΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎ Π½Π° ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΊΡƒ Π·Π° нСсколько мСсяцСв Π΄ΠΎ ΠΏΠΈΠΊΠ° ΠΏΡ€ΠΎΠ΄Π°ΠΆ. Π‘Π»ΡƒΠΆΠ±Π° эксплуатации, разумССтся, Π·Π½Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΈ Ρ‡Ρ‚ΠΎ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Π½Π° сСрвСрах, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ввСсти ΠΈΡ… Π² production-ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅. Но Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ это ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ чСловСчСский Ρ„Π°ΠΊΡ‚ΠΎΡ€. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ сСрвСры замСняли ΠΏΠ΅Ρ€Π΅Π΄ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ Π½Π°Π±ΠΎΡ€Π° систСм SAP, критичСски Π²Π°ΠΆΠ½Ρ‹Ρ… для ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ.

Π’Π²ΠΎΠ΄ Π² дСйствиС Π½ΠΎΠ²Ρ‹Ρ… сСрвСров Π±Ρ‹Π» ТСстко привязан ΠΊ Π΄Π΅Π΄Π»Π°ΠΉΠ½Ρƒ. И ΡΠ΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ Π΅Π³ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π»ΠΎ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ ΡƒΠ³Ρ€ΠΎΠ·Ρƒ ΠΈ ΠΎΡ‚Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄Π° ΠΏΠΎΠ΄Π°Ρ€ΠΊΠΎΠ², ΠΈ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡŽ систСм. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΄Π°Ρ‚Ρƒ Π½Π΅ ΠΌΠΎΠ³Π»Π° Π±Ρ‹ Π΄Π°ΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π² составС Π”Π΅Π΄Π° ΠœΠΎΡ€ΠΎΠ·Π°, Π‘Π°Π½Ρ‚Π° ΠšΠ»Π°ΡƒΡΠ° β€” ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΡ‚ΡŒ систСму SAP для управлСния складом ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π· Π² Π³ΠΎΠ΄Ρƒ. Π‘ 31 дСкабря Π½Π° 1 января ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Π΅ склады Ρ€ΠΈΡ‚Π΅ΠΉΠ»Π΅Ρ€Π°, суммарно ΠΊΠ°ΠΊ 20 Ρ„ΡƒΡ‚Π±ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ, ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π° 15 часов. И это СдинствСнный ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ для ΠΏΠ΅Ρ€Π΅Π΅Π·Π΄Π° систСмы. ΠŸΡ€Π°Π²Π° Π½Π° ΠΎΡˆΠΈΠ±ΠΊΡƒ с Π²Π²ΠΎΠ΄ΠΎΠΌ сСрвСров Ρƒ нас Π½Π΅ Π±Ρ‹Π»ΠΎ.

Поясню сразу: ΠΌΠΎΠΉ рассказ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ инструмСнтарий ΠΈ процСсс управлСния конфигурациями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ примСняСт наша ΠΊΠΎΠΌΠ°Π½Π΄Π°.

КомплСкс управлСния конфигурациями состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ. ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ β€” CMS-систСма. ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠΉ эксплуатации отсутствиС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ Π±Ρ‹ ΠΊ нСприятным чудСсам.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ установкой ОБ

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ β€” это систСма управлСния установкой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм Π½Π° физичСскиС ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ сСрвСры. Она создаСт Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ОБ, избавляя ΠΎΡ‚ чСловСчСского Ρ„Π°ΠΊΡ‚ΠΎΡ€Π°.

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этой систСмы ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π»ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Π΅ ΠΈ ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹Π΅ для дальнСйшСй Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ экзСмпляры сСрвСров с ОБ. ΠŸΡ€ΠΈ Β«Ρ€Π°Π·Π»ΠΈΠ²ΠΊΠ΅Β» ΠΎΠ½ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π»ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ SSH, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ОБ. ΠœΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ сСрвСрами Ρ‡Π΅Ρ€Π΅Π· CMS ΠΈ Π±Ρ‹Π»ΠΈ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Β«Π²Π½ΠΈΠ·ΡƒΒ», Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ОБ, Π½Π΅Ρ‚ ΡΡŽΡ€ΠΏΡ€ΠΈΠ·ΠΎΠ².

Π—Π°Π΄Π°Ρ‡Π° «максимум» для систСмы управлСния установкой β€” автоматичСски Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ сСрвСры ΠΎΡ‚ уровня BIOS/Firmware Π΄ΠΎ ОБ. МногоС здСсь зависит ΠΎΡ‚ оборудования ΠΈ Π·Π°Π΄Π°Ρ‡ настройки. Для Ρ€Π°Π·Π½ΠΎΡ€ΠΎΠ΄Π½ΠΎΠ³ΠΎ оборудования ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ REDFISH API. Если всё Β«ΠΆΠ΅Π»Π΅Π·ΠΎΒ» ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²Π΅Π½Π΄ΠΎΡ€Π°, Ρ‚ΠΎ, Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ, ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ срСдства управлСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, HP ILO Amplifier, DELL OpenManage ΠΈ Ρ‚. ΠΏ.).

Для установки ОБ Π½Π° физичСских сСрвСрах ΠΌΡ‹ примСняли всСм Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΉ Cobbler, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½ Π½Π°Π±ΠΎΡ€ согласованных со слуТбой эксплуатации ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ΠΉ инсталляции. ΠŸΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ сСрвСра Π² инфраструктуру ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ привязывал MAC-адрСс сСрвСра ΠΊ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠΌΡƒ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŽ Π² Cobbler. ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ ΠΏΠΎ сСти сСрвСр ΠΏΠΎΠ»ΡƒΡ‡Π°Π» Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ адрСс ΠΈ ΡΠ²Π΅ΠΆΡƒΡŽ ОБ. Π—Π°Ρ‚Π΅ΠΌ Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠ»ΠΈ Π² Ρ†Π΅Π»Π΅Π²ΡƒΡŽ VLAN/IP-Π°Π΄Ρ€Π΅ΡΠ°Ρ†ΠΈΡŽ ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΡƒΠΆΠ΅ Ρ‚Π°ΠΌ. Π”Π°, смСна VLAN ΠΎΡ‚Π½ΠΈΠΌΠ°Π΅Ρ‚ врСмя ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ согласования, Π½ΠΎ Π·Π°Ρ‚ΠΎ это Π΄Π°Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΎΡ‚ случайной инсталляции сСрвСра Π² production-ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ.

Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ сСрвСры ΠΌΡ‹ создавали Π½Π° основС шаблонов, ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ HashiΠ‘orp Packer. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° Π±Ρ‹Π»Π° Ρ‚Π° ΠΆΠ΅: Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ чСловСчСскиС ошибки ΠΏΡ€ΠΈ установкС ОБ. Но, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ физичСских сСрвСров, Packer позволяСт Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ PXE, ΡΠ΅Ρ‚Π΅Π²ΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΈ смСну VLAN. Π­Ρ‚ΠΎ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΠ»ΠΎ ΠΈ упростило созданиС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… сСрвСров.

Π’Ρ€ΠΈΠ»Π»Π΅Ρ€ ΠΎ настройкС сСрвСров Π±Π΅Π· чудСс с Configuration Management
Рис. 1. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ установкой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ сСкрСтами

Π›ΡŽΠ±Π°Ρ систСма управлСния конфигурациями содСрТит Π² сСбС Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ скрыты ΠΎΡ‚ рядовых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π½ΠΎ Π½ΡƒΠΆΠ½Ρ‹ для ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ систСм. Π­Ρ‚ΠΎ ΠΏΠ°Ρ€ΠΎΠ»ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ сСрвисных ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… записСй, ΠΊΠ»ΡŽΡ‡ΠΈ сСртификатов, всСвозмоТныС API Tokens ΠΈ ΠΏΡ€. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡ… Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ «сСкрСтами».

Если с самого Π½Π°Ρ‡Π°Π»Π° Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π³Π΄Π΅ ΠΈ ΠΊΠ°ΠΊ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ эти сСкрСты, Ρ‚ΠΎ, Π² зависимости ΠΎΡ‚ строгости Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ Π˜Π‘, вСроятны Ρ‚Π°ΠΊΠΈΠ΅ способы хранСния:

  • прямо Π² ΠΊΠΎΠ΄Π΅ управлСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ Π² Ρ„Π°ΠΉΠ»Π°Ρ… Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ;
  • Π² спСциализированных инструмСнтах управлСния конфигурациями (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ansible Vault);
  • Π² систСмах Π‘I/CD (Jenkins/TeamCity/GitLab/ΠΈ Ρ‚. ΠΏ.) ΠΈΠ»ΠΈ Π² систСмах управлСния конфигурациями (Ansible Tower/Ansible AWX);
  • Ρ‚Π°ΠΊΠΆΠ΅ сСкрСты ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π° Β«Ρ€ΡƒΡ‡Π½ΠΎΠΌ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈΒ». НапримСр, Π²Ρ‹ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ Π² ΠΎΠ³ΠΎΠ²ΠΎΡ€Π΅Π½Π½ΠΎΠ΅ мСсто, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ систСмы управлСния конфигурациями;
  • Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ.

Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° свои нСдостатки. Π“Π»Π°Π²Π½Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… β€” отсутствиС ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊ доступа ΠΊ сСкрСтам: нСльзя ΠΈΠ»ΠΈ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Π΅ сСкрСты. Π•Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ минус β€” отсутствиС Π°ΡƒΠ΄ΠΈΡ‚Π° доступа ΠΈ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠ³ΠΎ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°. Как быстро Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прописан Π² ΠΊΠΎΠ΄Π΅ ΠΈ Π² рядС смСТных систСм?

ΠœΡ‹ использовали Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ сСкрСтов HashiCorp Vault. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π½Π°ΠΌ:

  • Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ сСкрСты бСзопасно. Они Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Ρ‹, ΠΈ Π΄Π°ΠΆΠ΅ Ссли ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ доступ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Vault (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, восстановив Π΅Ρ‘ ΠΈΠ· Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ), Ρ‚ΠΎ Π½Π΅ смоТСт ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ хранящиСся Ρ‚Π°ΠΌ сСкрСты;
  • ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ доступа ΠΊ сСкрСтам. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΈ прилоТСниям доступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Β«Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅Β» ΠΈΠΌ сСкрСты;
  • ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Π°ΡƒΠ΄ΠΈΡ‚ доступа ΠΊ сСкрСтам. Π›ΡŽΠ±Ρ‹Π΅ дСйствия с сСкрСтами Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² ΠΆΡƒΡ€Π½Π°Π» Π°ΡƒΠ΄ΠΈΡ‚Π° Vault;
  • ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ Β«ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ»Β» Ρ€Π°Π±ΠΎΡ‚Ρ‹ с сСкрСтами. Π˜Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ, ΠΎΡ‚Π·Ρ‹Π²Π°Ρ‚ΡŒ, Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ срок дСйствия ΠΈ Ρ‚. Π΄.
  • Π»Π΅Π³ΠΊΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ систСмами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½ΡƒΠΆΠ΅Π½ доступ ΠΊ сСкрСтам;
  • Π° Π΅Ρ‰Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ сквозноС ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΏΠ°Ρ€ΠΎΠ»ΠΈ для ОБ ΠΈ Π‘Π”, сСртификаты ΡƒΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡ‡Π΅Π½Π½Ρ‹Ρ… Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠ² ΠΈ Ρ‚.Π΄.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ систСмС Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ. МоТно Π±Ρ‹Π»ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ ΠΈ Π±Π΅Π· Π½Π΅Ρ‘, Π½ΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π²ΠΎ мноТСствС ΡΠΎΠΏΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… систСм слишком Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎ. ΠœΡ‹ настроили Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ‡Π΅Ρ€Π΅Π· слуТбу LDAP. Π˜Π½Π°Ρ‡Π΅ Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ Vault ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π±Ρ‹ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎ Π²Ρ‹ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΈ вСсти ΡƒΡ‡Π΅Ρ‚ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ Ρ‚ΠΎΠΊΠ΅Π½Π°ΠΌ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. А ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΠ»ΠΎΡΡŒ Π±Ρ‹ Π² квСст Β«Π° Π²Π΅Π·Π΄Π΅ Π»ΠΈ я создал/ΡƒΠ΄Π°Π»ΠΈΠ» эту Π£Π—?Β»

ДобавляСм Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π½Π°ΡˆΡƒ Π² систСму: ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ сСкрСтами ΠΈ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΡƒΡŽ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ/Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ:

Π’Ρ€ΠΈΠ»Π»Π΅Ρ€ ΠΎ настройкС сСрвСров Π±Π΅Π· чудСс с Configuration Management
Рис. 2. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ сСкрСтами.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ конфигурациями

Π”ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ Π΄ΠΎ сСрдцСвины β€” Π΄ΠΎ систСмы CMS. Π’ нашСм случаС это связка Ansible ΠΈ Red Hat Ansible AWX.

ВмСсто Ansible ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ Chef, Puppet, SaltStack. ΠœΡ‹ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ Ansible ΠΏΠΎ нСскольким критСриям.

  • Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, это ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Набор Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ для управлСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠ΅. А Ссли Π΅Π³ΠΎ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΈΡΠΊΠ°Ρ‚ΡŒ Π½Π° GitHub ΠΈ Galaxy.
  • Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π°Π³Π΅Π½Ρ‚Ρ‹ Π½Π° управляСмом ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ, Π΄ΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π½Π΅ ΠΌΠ΅ΡˆΠ°ΡŽΡ‚ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅, ΠΈ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Ρ‚ΡŒ отсутствиС Β«Π·Π°ΠΊΠ»Π°Π΄ΠΎΠΊΒ».
  • Π’-Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ…, Ρƒ Ansible Π½ΠΈΠ·ΠΊΠΈΠΉ ΠΏΠΎΡ€ΠΎΠ³ вхоТдСния. Π“Ρ€Π°ΠΌΠΎΡ‚Π½Ρ‹ΠΉ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ playbook Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ дСнь Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠΌ.

Но ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ansible Π² ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠΌ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ Π½Π°ΠΌ Π±Ρ‹Π»ΠΎ нСдостаточно. Π˜Π½Π°Ρ‡Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΎ Π±Ρ‹ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ доступа ΠΈ Π°ΡƒΠ΄ΠΈΡ‚ΠΎΠΌ дСйствий администраторов. Как Ρ€Π°Π·Π³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ доступ? Π’Π΅Π΄ΡŒ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ управляло (Ρ‡ΠΈΡ‚Π°ΠΉ β€” запускало Ansible playbook) «своим» Π½Π°Π±ΠΎΡ€ΠΎΠΌ сСрвСров. Как Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ запуск ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Ansible playbook Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ сотрудникам? Или ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ, ΠΊΡ‚ΠΎ запускал playbook, Π½Π΅ заводя мноТСство Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π£Π— Π½Π° сСрвСрах ΠΈ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Ansible?

Π›ΡŒΠ²ΠΈΠ½ΡƒΡŽ долю ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… вопросов Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Red Hat Ansible Tower, ΠΈΠ»ΠΈ Π΅Π³ΠΎ open-source upstream ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Ansible AWX. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ ΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Π»ΠΈ Π΅Π³ΠΎ для Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ°.

И Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΡˆΡ‚Ρ€ΠΈΡ… ΠΊ ΠΏΠΎΡ€Ρ‚Ρ€Π΅Ρ‚Ρƒ нашСй CMS-систСмы. Ansible playbook Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² систСмах управлСния Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ ΠΊΠΎΠ΄Π°. Π£ нас это GitLab CE.

Π˜Ρ‚Π°ΠΊ, самими конфигурациями управляСт связка ΠΈΠ· Ansible/Ansible AWX/GitLab (см. Рис. 3). РазумССтся, AWX/GitLab ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ с Π΅Π΄ΠΈΠ½ΠΎΠΉ систСмой Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Π° Ansible playbook β€” с HashiCorp Vault. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Π² production-ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· Ansible AWX, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π·Π°Π΄Π°Π½Ρ‹ всС Β«ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈΠ³Ρ€Ρ‹Β»: ΠΊΡ‚ΠΎ ΠΈ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΎΡ‚ΠΊΡƒΠ΄Π° Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ управлСния конфигурациями для CMS ΠΈ Ρ‚. Π΄.

Π’Ρ€ΠΈΠ»Π»Π΅Ρ€ ΠΎ настройкС сСрвСров Π±Π΅Π· чудСс с Configuration Management
Рис. 3. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ конфигурациями.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ тСстированиСм

Наша конфигурация прСдставлСна Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠ΄Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Ρ‹ ΠΈΠ³Ρ€Π°Ρ‚ΡŒ ΠΏΠΎ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ПО. Нам Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±Ρ‹Π»ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ процСссы Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ³ΠΎ тСстирования, доставки ΠΈ примСнСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° production-сСрвСры.

Если это Π½Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ сразу, Ρ‚ΠΎ написанныС Ρ€ΠΎΠ»ΠΈ для ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π»ΠΈΠ±ΠΎ пСрСстали Π±Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ, Π»ΠΈΠ±ΠΎ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΠ»ΠΈ Π±Ρ‹ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π² production. ЛСкарство ΠΎΡ‚ этой Π±ΠΎΠ»ΠΈ извСстно, ΠΈ ΠΎΠ½ΠΎ ΠΎΠΏΡ€Π°Π²Π΄Π°Π»ΠΎ сСбя Π² этом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅:

  • каТдая Ρ€ΠΎΠ»ΡŒ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚Π° ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΌΠΈ тСстами;
  • тСсты ΠΏΡ€ΠΎΠ³ΠΎΠ½ΡΡŽΡ‚ΡΡ автоматичСски ΠΏΡ€ΠΈ любом ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π² ΠΊΠΎΠ΄Π΅, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΌ конфигурациями;
  • измСнСния Π² ΠΊΠΎΠ΄Π΅ управлСния конфигурациями ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Π² production-ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ прохоТдСния всСх тСстов ΠΈ code review.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΊΠΎΠ΄Π° ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ конфигурациями стали спокойнСС ΠΈ прСдсказуСмСС. Для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ³ΠΎ тСстирования ΠΌΡ‹ использовали инструмСнтарий GitLab CI/CD, Π° Π² качСствС Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ тСстов взяли Ansible Molecule.

ΠŸΡ€ΠΈ любом ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π² ΠΊΠΎΠ΄Π΅ управлСния конфигурациями GitLab CI/CD Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Molecule:

  • Ρ‚Π° провСряСт синтаксис ΠΊΠΎΠ΄Π°,
  • ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π΅Ρ‚ Docker-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€,
  • примСняСт ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π² созданный ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€,
  • провСряСт Ρ€ΠΎΠ»ΡŒ Π½Π° ΠΈΠ΄Π΅ΠΌΠΏΠΎΡ‚Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ ΠΈ прогоняСт тСсты для этого ΠΊΠΎΠ΄Π° (Π³Ρ€Π°Π½ΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ здСсь Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ansible role, см. Рис. 4).

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π² production-ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΌΡ‹ доставляли с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ansible AWX. ΠžΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½Ρ‹Π΅ Π·Π° ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚Π°Ρ†ΠΈΡŽ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Ρ‹ примСняли измСнСния Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹. AWX ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Β«Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π»Β» послСднюю Π²Π΅Ρ€ΡΠΈΡŽ ΠΊΠΎΠ΄Π° с мастСр-Π²Π΅Ρ‚ΠΊΠΈ GitLab. Π’Π°ΠΊ ΠΌΡ‹ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π»ΠΈ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π² production-ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ. ЕстСствСнно, ΠΊΠΎΠ΄ Π² мастСр-Π²Π΅Ρ‚ΠΊΡƒ ΠΏΠΎΠΏΠ°Π΄Π°Π» Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС тСстирования, просмотра ΠΈ согласования.

Π’Ρ€ΠΈΠ»Π»Π΅Ρ€ ΠΎ настройкС сСрвСров Π±Π΅Π· чудСс с Configuration Management
Рис. 4. АвтоматичСскоС тСстированиС Ρ€ΠΎΠ»Π΅ΠΉ Π² GitLab CI/CD.

Π•ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, связанная с эксплуатациСй production-систСм. Π’ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ ΠΎΡ‡Π΅Π½ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π²Π½ΠΎΡΠΈΡ‚ΡŒ измСнСния Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ΄ CMS. Π’ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Π²Π½Π΅ΡˆΡ‚Π°Ρ‚Π½Ρ‹Π΅ ситуации, ΠΊΠΎΠ³Π΄Π° ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ «здСсь ΠΈ сСйчас», Π½Π΅ доТидаясь ΠΏΡ€Π°Π²ΠΊΠΈ ΠΊΠΎΠ΄Π°, тСстирования, согласования ΠΈ Ρ‚. ΠΏ.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΈΠ·-Π·Π° Ρ€ΡƒΡ‡Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ расхоТдСния Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π½Π° ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½ΠΎΠΌ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° ΡƒΠ·Π»Π°Ρ… HA-кластСра разная конфигурация настроСк sysctl). Или Ρ€Π΅Π°Π»ΡŒΠ½Π°Ρ конфигурация Π½Π° ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ отличаСтся ΠΎΡ‚ Ρ‚ΠΎΠΉ, которая Π·Π°Π΄Π°Π½Π° Π² ΠΊΠΎΠ΄Π΅ CMS.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΌΡƒ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΌΡ‹ провСряСм production-окруТСния Π½Π° расхоТдСниС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ. Π’Ρ‹Π±Ρ€Π°Π»ΠΈ самый простой Π²Π°Ρ€ΠΈΠ°Π½Ρ‚: запуск ΠΊΠΎΠ΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π‘MS Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Β«dry runΒ», Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π±Π΅Π· примСнСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π½ΠΎ с ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΠΎ всСх расхоТдСниях ΠΌΠ΅ΠΆΠ΄Ρƒ Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΈ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ. ΠœΡ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ это с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ пСриодичСских запусков всСх Ansible playbook с ΠΎΠΏΡ†ΠΈΠ΅ΠΉ Β«—checkΒ» Π½Π° production-сСрвСрах. Π—Π° запуск ΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ playbook, ΠΊΠ°ΠΊ всСгда, ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Ansible AWX (см. Рис. 5):

Π’Ρ€ΠΈΠ»Π»Π΅Ρ€ ΠΎ настройкС сСрвСров Π±Π΅Π· чудСс с Configuration Management
Рис. 5. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° расхоТдСниС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ Π² Ansible AWX.

ПослС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ AWX отправляСт ΠΎΡ‚Ρ‡Π΅Ρ‚ ΠΎ расхоТдСниях администраторам. Они ΠΈΠ·ΡƒΡ‡Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ Π΅Ρ‘ Ρ‡Π΅Ρ€Π΅Π· скоррСктированныС playbook. Π’Π°ΠΊ ΠΌΡ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Π² production-ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ ΠΈ CMS всСгда находится Π² Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ ΠΈ синхронизированном состоянии. Π­Ρ‚ΠΎ избавляСт ΠΎΡ‚ нСприятных «чудСс», ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ΄ CMS примСняСтся Π½Π° Β«Π±ΠΎΠ΅Π²Ρ‹Ρ…Β» сСрвСрах.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ нас появился Π²Π°ΠΆΠ½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ тСстирования, состоящий ΠΈΠ· Ansible AWX/GitLab/Molecule (Рис. 6).

Π’Ρ€ΠΈΠ»Π»Π΅Ρ€ ΠΎ настройкС сСрвСров Π±Π΅Π· чудСс с Configuration Management
Рис. 6. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ тСстированиСм.

Π‘Π»ΠΎΠΆΠ½ΠΎ? НС ΡΠΏΠΎΡ€ΡŽ. Но Ρ‚Π°ΠΊΠΎΠΉ комплСкс управлСния конфигурациями стал ΠΈΡΡ‡Π΅Ρ€ΠΏΡ‹Π²Π°ΡŽΡ‰ΠΈΠΌ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠΌ Π½Π° мноТСство вопросов, связанных с Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ настройки сСрвСров. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ Ρ€ΠΈΡ‚Π΅ΠΉΠ»Π΅Ρ€Π° Ρƒ Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… сСрвСров всСгда строго опрСдСлСнная конфигурация. Π‘MS, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π°, Π½Π΅ Π·Π°Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ настройки, ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ дСсятки ΠΈΠ»ΠΈ сотни Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Ρ… настроСк.

Π’ настройках сСрвСров ΠΈ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΉ сСгодня ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Β«Ρ‚Π°ΠΉΠ½Ρ‹Π΅ знания». ВсС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ особСнности ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½Ρ‹ Π² playbook. Π‘ΠΎΠ»ΡŒΡˆΠ΅ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ творчСства ΠΈ Ρ‚ΡƒΠΌΠ°Π½Π½Ρ‹Ρ… инструкций: Β«ΡΡ‚Π°Π²ΡŒ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Oracle, Π½ΠΎ Ρ‚Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ°Ρ€Ρƒ настроСк sysctl ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ, ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ с Π½ΡƒΠΆΠ½Ρ‹ΠΌ UID Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ. Бпроси Ρƒ рСбят ΠΈΠ· эксплуатации, ΠΎΠ½ΠΈ Π·Π½Π°ΡŽΡ‚Β».

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ расхоТдСниС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ ΠΈ Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΈΡ… ΠΈΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ΄Π°Ρ‘Ρ‚ спокойствия. Π‘Π΅Π· систСмы управлСния конфигурациям это ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ выглядит ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ Π½Π΅ Β«Π²Ρ‹ΡΡ‚Ρ€Π΅Π»ΠΈΠ²Π°ΡŽΡ‚Β» Π² production. ΠŸΠΎΡ‚ΠΎΠΌ проводится Ρ€Π°Π·Π±ΠΎΡ€ ΠΏΠΎΠ»Π΅Ρ‚ΠΎΠ², ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ ΠΈ ΠΈΡΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. И Ρ†ΠΈΠΊΠ» повторяСтся снова

И ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΡ‹ ускорили запуск сСрвСров Π² ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚Π°Ρ†ΠΈΡŽ с Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π΄Π½Π΅ΠΉ Π΄ΠΎ часов.

Ну Π° Π² саму новогоднюю Π½ΠΎΡ‡ΡŒ, ΠΊΠΎΠ³Π΄Π° Π΄Π΅Ρ‚ΠΈ радостно Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π»ΠΈ ΠΏΠΎΠ΄Π°Ρ€ΠΊΠΈ ΠΈ взрослыС Π·Π°Π³Π°Π΄Ρ‹Π²Π°Π»ΠΈ ТСлания ΠΏΠΎΠ΄ Π±ΠΎΠΉ ΠΊΡƒΡ€Π°Π½Ρ‚ΠΎΠ², наши ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Ρ‹ ΠΌΠΈΠ³Ρ€ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ SAP-систСму Π½Π° Π½ΠΎΠ²Ρ‹Π΅ сСрвСры. Π”Π°ΠΆΠ΅ Π”Π΅Π΄ ΠœΠΎΡ€ΠΎΠ· скаТСт, Ρ‡Ρ‚ΠΎ самыС Π»ΡƒΡ‡ΡˆΠΈΠ΅ чудСса – Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅.

P.S. Наша ΠΊΠΎΠΌΠ°Π½Π΄Π° часто сталкиваСтся с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΈ хотят ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ управлСния конфигурациями. Π’ ΠΈΠ΄Π΅Π°Π»Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΊ ΠΏΠΎ Π²ΠΎΠ»ΡˆΠ΅Π±ΡΡ‚Π²Ρƒ β€” ΠΎΠ΄Π½ΠΈΠΌ инструмСнтом. Но Π² ΠΆΠΈΠ·Π½ΠΈ всё слоТнСС (Π΄Π°, ΠΎΠΏΡΡ‚ΡŒ Π½Π΅ Π·Π°Π²Π΅Π·Π»ΠΈ сСрСбряныС ΠΏΡƒΠ»ΠΈ): приходится ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ†Π΅Π»Ρ‹ΠΉ процСсс с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Ρ… для ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ° инструмСнтов.

Автор: Π‘Π΅Ρ€Π³Π΅ΠΉ АртСмов, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΎΡ€ ΠΎΡ‚Π΄Π΅Π»Π° DevOps-Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Β«Π˜Π½Ρ„ΠΎΡΠΈΡΡ‚Π΅ΠΌΡ‹ Π”ΠΆΠ΅Ρ‚Β»

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com