Автоматизация Π½Π° замяната Π½Π° дисковС с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ansible

Автоматизация Π½Π° замяната Π½Π° дисковС с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ansible

Π—Π΄Ρ€Π°Π²Π΅ΠΉΡ‚Π΅ Π½Π° всички. Работя ΠΊΠ°Ρ‚ΠΎ ΡΡ‚Π°Ρ€ΡˆΠΈ систСмСн администратор Π² ОК ΠΈ съм ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π΅Π½ Π·Π° стабилната Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° ΠΏΠΎΡ€Ρ‚Π°Π»Π°. Искам Π΄Π° сподСля ΠΊΠ°ΠΊ ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΡ…ΠΌΠ΅ процСса Π½Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½Π° смяна Π½Π° дисковСтС ΠΈ ΠΊΠ°ΠΊ впослСдствиС ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ…ΠΌΠ΅ администратора ΠΎΡ‚ Ρ‚ΠΎΠ·ΠΈ процСс, замСствайки Π³ΠΎ с Π±ΠΎΡ‚.

Π’Π°Π·ΠΈ статия прСдставлява Π½Π΅Ρ‰ΠΎ ΠΊΠ°Ρ‚ΠΎ транслитСрация Π½Π° прСзСнтацията Π½Π° HighLoad+ 2018

Π˜Π·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° процСс Π·Π° смяна Π½Π° дисковС

ΠŸΡŠΡ€Π²ΠΎ, ΠΌΠ°Π»ΠΊΠΎ Ρ†ΠΈΡ„Ρ€ΠΈ

ОК Π΅ ΠΎΠ³Ρ€ΠΎΠΌΠ΅Π½ сСрвис, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΌΠΈΠ»ΠΈΠΎΠ½ΠΈ Ρ…ΠΎΡ€Π°. ΠžΠ±ΡΠ»ΡƒΠΆΠ²Π° сС ΠΎΡ‚ ΠΎΠΊΠΎΠ»ΠΎ 7000 ΡΡŠΡ€Π²ΡŠΡ€Π°, Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈ Π² 4 Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π΄Π°Ρ‚Π° Ρ†Π΅Π½Ρ‚ΡŠΡ€Π°. Π’ ΡΡŠΡ€Π²ΡŠΡ€ΠΈΡ‚Π΅ ΠΈΠΌΠ° Π½Π°Π΄ 70 000 диска. Ако Π³ΠΈ ΠΏΠΎΠ΄Ρ€Π΅Π΄ΠΈΠΌ Π΅Π΄ΠΈΠ½ Π²ΡŠΡ€Ρ…Ρƒ Π΄Ρ€ΡƒΠ³, Ρ‰Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ структура с височина Π½Π°Π΄ 1 ΠΊΠΌ.

Π₯Π°Ρ€Π΄ дисковСтС са ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°, ΠΊΠΎΠΉΡ‚ΠΎ чСсто сС ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π°. ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΈΠ²Π° ΠΎΠ±Π΅ΠΌΠΈ трябва Π΄Π° смСнямС ΠΎΠΊΠΎΠ»ΠΎ 30 диска сСдмично, Π° Ρ‚Π°Π·ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° сС Π΅ ΠΏΡ€Π΅Π²ΡŠΡ€Π½Π°Π»Π° Π² нСприятна Ρ€ΡƒΡ‚ΠΈΠ½Π°.

Автоматизация Π½Π° замяната Π½Π° дисковС с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ansible

Π˜Π½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ΠΈ

ΠŸΡ€ΠΈ нас Π² компанията Π΅ Π²Π½Π΅Π΄Ρ€Π΅Π½ пълСн ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚-ΠΌΠ΅Π½ΠΈΠ΄ΠΆΠΌΡŠΠ½Ρ‚. ВсСки ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ сС рСгистрира Π² Jira, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ сС Ρ€Π΅ΡˆΠ°Π²Π° ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°. Ако ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ΡŠΡ‚ Π΅ ΠΈΠΌΠ°Π» влияниС Π·Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅, Π½Π΅ΠΏΡ€Π΅ΠΌΠ΅Π½Π½ΠΎ сС ΡΡŠΠ±ΠΈΡ€Π°ΠΌΠ΅ ΠΈ обсъТдамС ΠΊΠ°ΠΊ Π΄Π° Ρ€Π΅Π°Π³ΠΈΡ€Π°ΠΌΠ΅ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ Π² Ρ‚Π°ΠΊΠΈΠ²Π° случаи, ΠΊΠ°ΠΊ Π΄Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ Π΅Ρ„Π΅ΠΊΡ‚Π° ΠΈ, Ρ€Π°Π·Π±ΠΈΡ€Π° сС, ΠΊΠ°ΠΊ Π΄Π° ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠ΅.

НакопитСлитС Π½Π΅ са ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. Π—Π° тяхното ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ слСди Zabbix. ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠΌ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡΡ‚Π° Π² Syslog Π·Π° Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΏΡ€ΠΈ запис/Ρ‡Π΅Ρ‚Π΅Π½Π΅, Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° HW/SW-Ρ€Π΅Π²Π΅ΠΉΠ΄ΠΈΡ‚Π΅, слСдим SMART, Π° Π·Π° SSD изчислявамС износванСто.

Как дисковСтС сС смСняха ΠΏΡ€Π΅Π΄ΠΈ

ΠšΠΎΠ³Π°Ρ‚ΠΎ Π² Zabbix сС задСйства някакъв Ρ‚Ρ€ΠΈΠ³Π΅Ρ€, Π² Jira сС създава ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚, ΠΊΠΎΠΉΡ‚ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ сС Π½Π°Π·Π½Π°Ρ‡Π°Π²Π° Π½Π° ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ‚Π΅ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈ Π² Π΄Π°Ρ‚Π° Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠ²Π΅Ρ‚Π΅. ΠŸΡ€Π°Π²ΠΈΠΌ Ρ‚ΠΎΠ²Π° Π·Π° всички HW-ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ΠΈ, Ρ‚.Π΅. Ρ‚Π΅Π·ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ изискват някаква физичСска Ρ€Π°Π±ΠΎΡ‚Π° с ΠΎΠ±ΠΎΡ€ΡƒΠ΄Π²Π°Π½Π΅Ρ‚ΠΎ Π² Π΄Π°Ρ‚Π° Ρ†Π΅Π½Ρ‚ΡŠΡ€Π°.
Π˜Π½ΠΆΠ΅Π½Π΅Ρ€ΡŠΡ‚ Π² Π΄Π°Ρ‚Π° Ρ†Π΅Π½Ρ‚ΡŠΡ€Π° Π΅ Ρ‡ΠΎΠ²Π΅ΠΊ, ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π΅ΡˆΠ°Π²Π° Π²ΡŠΠΏΡ€ΠΎΡΠΈ, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π°, отговаря Π·Π° инсталацията, обслуТванСто ΠΈ Π΄Π΅ΠΌΠΎΠ½Ρ‚Π°ΠΆΠ° Π½Π° ΡΡŠΡ€Π²ΡŠΡ€ΠΈΡ‚Π΅. Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ Ρ‚ΠΈΠΊΠ΅Ρ‚, ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΡŠΡ‚ Π·Π°ΠΏΠΎΡ‡Π²Π° Ρ€Π°Π±ΠΎΡ‚Π°. Π’ дисковитС ΡˆΠΊΠ°Ρ„ΠΈ Ρ‚ΠΎΠΉ самостоятСлно смСня дисковСтС. Но Π°ΠΊΠΎ няма Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡ‚ΠΎ устройство, ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΡŠΡ‚ сС ΠΎΠ±Ρ€ΡŠΡ‰Π° към Π΄Π΅ΠΆΡƒΡ€Π½ΠΈΡ‚Π΅ систСмни администратори Π·Π° ΠΏΠΎΠΌΠΎΡ‰. ΠŸΡŠΡ€Π²ΠΎ трябва Π΄Π° ΠΈΠ·ΠΊΠ°Ρ€Π°Ρ‚ диска ΠΎΡ‚ ротацията. Π—Π° Ρ‚ΠΎΠ²Π° Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС направят ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°, Π΄Π° сС спрат прилоТСнията ΠΈ Π΄Π° сС Π΄Π΅ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π° диска.

ДСТурният систСмСн администратор ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π½Π°Ρ‚Π° смяна отговаря Π·Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° цСлия ΠΏΠΎΡ€Ρ‚Π°Π». Π’ΠΎΠΉ разслСдва ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ΠΈ, ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° Ρ€Π΅ΠΌΠΎΠ½Ρ‚ΠΈ ΠΈ ΠΏΠΎΠΌΠ°Π³Π° Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ с ΠΌΠ°Π»ΠΊΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ. НС сС Π·Π°Π½ΠΈΠΌΠ°Π²Π° само с Ρ‚Π²ΡŠΡ€Π΄ΠΈΡ‚Π΅ дисковС.

ΠŸΡ€Π΅Π΄ΠΈ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΡ‚Π΅ Π½Π° Π΄Π°Ρ‚Π° Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠ²Π΅Ρ‚Π΅ ΠΎΠ±Ρ‰ΡƒΠ²Π°Ρ…Π° със систСмния администратор Π² Ρ‡Π°Ρ‚Π°. Π˜Π½ΠΆΠ΅Π½Π΅Ρ€ΠΈΡ‚Π΅ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ…Π° Π»ΠΈΠ½ΠΊΠΎΠ²Π΅ към Jira Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ, Π°Π΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Π³ΠΈ ΠΏΡ€Π΅Π³Π»Π΅ΠΆΠ΄Π°ΡˆΠ΅ ΠΈ водСшС Π»ΠΎΠ³ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π² някакъв Π±Π΅Π»Π΅ΠΆΠ½ΠΈΠΊ. Но Π·Π° Ρ‚Π°ΠΊΠΈΠ²Π° Π·Π°Π΄Π°Ρ‡ΠΈ Ρ‡Π°Ρ‚ΡŠΡ‚ Π΅ Π½Π΅ΡƒΠ΄ΠΎΠ±Π΅Π½: информацията Ρ‚Π°ΠΌ Π½Π΅ Π΅ структурирана ΠΈ Π±ΡŠΡ€Π·ΠΎ сС Π³ΡƒΠ±ΠΈ. А ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚ моТСшС просто Π΄Π° сС ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡ΠΈ ΠΎΡ‚ ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€Π° ΠΈ извСстно Π²Ρ€Π΅ΠΌΠ΅ Π΄Π° Π½Π΅ отговаря Π½Π° запитвания, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΡŠΡ‚ ΡΡ‚ΠΎΠ΅ΡˆΠ΅ Π΄ΠΎ ΡΡŠΡ€Π²ΡŠΡ€Π° с ΠΏΠ°ΠΊΠ΅Ρ‚ дисковС ΠΈ Ρ‡Π°ΠΊΠ°ΡˆΠ΅.

Но Π½Π°ΠΉ-Π»ΠΎΡˆΠΎΡ‚ΠΎ бСшС, Ρ‡Π΅ администраторитС Π½Π΅ Π²ΠΈΠΆΠ΄Π°Ρ…Π° ΠΎΠ±Ρ‰Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π°: ΠΊΠ°ΠΊΠ²ΠΈ дискови ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ΠΈ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‚, къдС ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° възникнС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π’ΠΎΠ²Π° Π΅ ΡΠ²ΡŠΡ€Π·Π°Π½ΠΎ с Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ всички HW ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ΠΈ ΠΏΡ€Π΅Π΄Π°Π²Π°ΠΌΠ΅ Π½Π° ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΡ‚Π΅. Π”Π°, моТСшС Π΄Π° сС Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚ всички ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ΠΈ Π½Π° Π΄Π°ΡˆΠ±ΠΎΡ€Π΄Π° Π½Π° администратора. Но Ρ‚Π΅ са ΠΌΠ½ΠΎΠ³ΠΎ ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚ сС Π°Π½Π³Π°ΠΆΠΈΡ€Π°ΡˆΠ΅ само с някои ΠΎΡ‚ тях.

ОсвСн Ρ‚ΠΎΠ²Π° ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΡŠΡ‚ Π½Π΅ моТСшС ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ Π΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΈ, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π½Π΅ Π·Π½Π°Π΅ Π½ΠΈΡ‰ΠΎ Π·Π° ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈΡ‚Π΅ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ ΠΈ Π·Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° информацията ΠΏΠΎ носитСли.

Нова ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π·Π° замяна

ΠŸΡŠΡ€Π²ΠΎΡ‚ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ…ΠΌΠ΅, Π΅ Π΄Π° ΠΈΠ·Π²Π°Π΄ΠΈΠΌ всички дискови ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ΠΈ Π² ΠΎΡ‚Π΄Π΅Π»Π΅Π½ Ρ‚ΠΈΠΏ "HW-диск" ΠΈ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΠΎΠ»Π΅Ρ‚Π° "ΠΈΠΌΠ΅ Π½Π° Π±Π»ΠΎΡ‡Π½ΠΎ устройство", "Ρ€Π°Π·ΠΌΠ΅Ρ€" ΠΈ "Ρ‚ΠΈΠΏ диск", Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Ρ‚Π°Π·ΠΈ информация Π΄Π° сС Π·Π°ΠΏΠ°Π·ΠΈ Π² Ρ‚ΠΈΠΊΠ΅Ρ‚Π° ΠΈ Π΄Π° Π½Π΅ сС Π½Π°Π»Π°Π³Π° постоянно Π΄Π° я обмСнямС Π² Ρ‡Π°Ρ‚Π°.

Автоматизация Π½Π° замяната Π½Π° дисковС с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ansible
ОсвСн Ρ‚ΠΎΠ²Π° сС споразумяхмС, Ρ‡Π΅ Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° Π΅Π΄ΠΈΠ½ ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ Ρ‰Π΅ смСнямС само Π΅Π΄ΠΈΠ½ диск. Π’ΠΎΠ²Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ улСсни ΠΏΠΎ-късно процСса Π½Π° автоматизация, ΡΡŠΠ±ΠΈΡ€Π°Π½Π΅ Π½Π° статистика ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°.

Π’ допълнСниС Π΄ΠΎΠ±Π°Π²ΠΈΡ…ΠΌΠ΅ ΠΏΠΎΠ»Π΅ "ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π΅Π½ администратор". Π’Π°ΠΌ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ сС поставя дСТурният систСмСн администратор. Π’ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Π·Π°Ρ‰ΠΎΡ‚ΠΎ сСга ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΡŠΡ‚ Π²ΠΈΠ½Π°Π³ΠΈ Π²ΠΈΠΆΠ΄Π° ΠΊΠΎΠΉ Π΅ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π΅Π½. НС Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄Π° ΠΎΡ‚ΠΈΠ²Π° Π² ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€Π° ΠΈ Π΄Π° Ρ‚ΡŠΡ€ΡΠΈ. ИмСнно Ρ‚ΠΎΠ²Π° ΠΏΠΎΠ»Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π΄Π° сС изнСсат Π½Π° Π΄Π°ΡˆΠ±ΠΎΡ€Π΄Π° Π½Π° администратора Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈΡ‚Π΅, Π² ΠΊΠΎΠΈΡ‚ΠΎ Π΅Π²Π΅Π½Ρ‚ΡƒΠ°Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°Π»ΠΎΠΆΠΈ Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° ΠΏΠΎΠΌΠΎΡ‰.

Автоматизация Π½Π° замяната Π½Π° дисковС с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ansible
Π—Π° Π΄Π° ΠΌΠΎΠ³Π°Ρ‚ всички участници Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚ максимални ΠΏΠΎΠ»Π·ΠΈ ΠΎΡ‚ Π½ΠΎΠ²ΠΎΠ²ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΡΡ‚Π°, ΡΡŠΠ·Π΄Π°Π΄ΠΎΡ…ΠΌΠ΅ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ ΠΈ Ρ‚Π°Π±Π»Π°, ΠΈ Π³ΠΈ обяснихмС Π½Π° Π΅ΠΊΠΈΠΏΠ°. ΠšΠΎΠ³Π°Ρ‚ΠΎ Ρ…ΠΎΡ€Π°Ρ‚Π° Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅, Ρ‚Π΅ Π½Π΅ сС дистанцират ΠΎΡ‚ тях, ΠΊΠ°Ρ‚ΠΎ ΠΎΡ‚ Π½Π΅Ρ‰ΠΎ Π½Π΅Π½ΡƒΠΆΠ½ΠΎ. На ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΡ‚Π΅ Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° знаят Π½ΠΎΠΌΠ΅Ρ€Π° Π½Π° стСлаТа, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ сС Π½Π°ΠΌΠΈΡ€Π° ΡΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚, Ρ€Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ ΠΈ Ρ‚ΠΈΠΏΡŠΡ‚ Π½Π° диска. На администратора ΠΌΡƒ Π΅ Π½ΡƒΠΆΠ½ΠΎ, ΠΏΡ€Π΅Π΄ΠΈ всичко, Π΄Π° Ρ€Π°Π·Π±ΠΈΡ€Π° ΠΊΠ°ΠΊΠ²Π° Π΅ Π³Ρ€ΡƒΠΏΠ°Ρ‚Π° ΠΎΡ‚ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ ΠΈ какъв ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π΅Ρ„Π΅ΠΊΡ‚ΡŠΡ‚ ΠΎΡ‚ подмяната Π½Π° диска.

НаличиСто Π½Π° ΠΏΠΎΠ»Π΅Ρ‚Π° ΠΈ тяхното ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Π½ΠΎ Π½Π΅ Π½ΠΈ освободи ΠΎΡ‚ нСобходимостта Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Ρ‡Π°Ρ‚ΠΎΠ²Π΅. Π—Π° Ρ‚ΠΎΠ²Π° сС Π½Π°Π»ΠΎΠΆΠΈ Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΠΌ работния процСс.

ΠŸΡ€Π΅Π΄ΠΈ Ρ‚ΠΎΠΉ бСшС Ρ‚Π°ΠΊΡŠΠ²:

Автоматизация Π½Π° замяната Π½Π° дисковС с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ansible
ДнСс ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π°Ρ‚ Π΄Π° работят Ρ‚Π°ΠΊΠ°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π½Π΅ ΠΈΠΌ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° ΠΏΠΎΠΌΠΎΡ‰ ΠΎΡ‚ администратора.

ΠŸΡŠΡ€Π²ΠΎΡ‚ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ…ΠΌΠ΅, Π΅ Π΄Π° въвСдСм Π½ΠΎΠ² статус Investigate. Π’ Ρ‚ΠΎΠ·ΠΈ статус Ρ‚ΠΈΠΊΠ΅Ρ‚ΡŠΡ‚ сС Π½Π°ΠΌΠΈΡ€Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΡŠΡ‚ всС ΠΎΡ‰Π΅ Π½Π΅ Π΅ Ρ€Π΅ΡˆΠΈΠ» Π΄Π°Π»ΠΈ Ρ‰Π΅ ΠΌΡƒ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ администратор ΠΈΠ»ΠΈ Π½Π΅. ΠŸΡ€Π΅Π· Ρ‚ΠΎΠ·ΠΈ статус ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€Π΅Π΄Π°Π΄Π΅ Ρ‚ΠΈΠΊΠ΅Ρ‚Π° Π½Π° администратора. ОсвСн Ρ‚ΠΎΠ²Π° с Ρ‚ΠΎΠ·ΠΈ статус ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°ΠΌΠ΅ Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈΡ‚Π΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° подмяна Π½Π° диска, Π½ΠΎ самият диск Π½Π΅ Π΅ Π½Π°Π»ΠΈΡ‡Π΅Π½ Π² ΠΎΠ±Π΅ΠΊΡ‚Π°. Π’Π°ΠΊΠΎΠ²Π° Π½Π΅Ρ‰ΠΎ сС случва ΠΏΡ€ΠΈ CDN ΠΈ ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ.

Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π΄ΠΎΠ±Π°Π²ΠΈΡ…ΠΌΠ΅ статус Π“ΠΎΡ‚ΠΎΠ². Π’ Π½Π΅Π³ΠΎ Ρ‚ΠΈΠΊΠ΅Ρ‚ΡŠΡ‚ сС ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»Ρ слСд подмяна Π½Π° диска. ВоСст всичко Π²Π΅Ρ‡Π΅ Π΅ Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΎ, Π½ΠΎ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π° сС синхронизира HW/SW RAID. Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΡ‚Π½Π΅ΠΌΠ΅ доста Π²Ρ€Π΅ΠΌΠ΅.

Ако сС Π²ΠΊΠ»ΡŽΡ‡ΠΈ администратор Π² Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π°, схСмата сС услоТнява ΠΌΠ°Π»ΠΊΠΎ.

Автоматизация Π½Π° замяната Π½Π° дисковС с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ansible
ΠžΡ‚ статус Open Ρ‚ΠΈΠΊΠ΅Ρ‚ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΠΈ ΠΊΠ°ΠΊΡ‚ΠΎ систСмСн администратор, Ρ‚Π°ΠΊΠ° ΠΈ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€. Π’ статус In progress Π°Π΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π²Π° диска ΠΎΡ‚ ротацията, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΡŠΡ‚ Π΄Π° Π³ΠΎ ΠΈΠ·Π²Π°Π΄ΠΈ: Π²ΠΊΠ»ΡŽΡ‡Π²Π° освСтлСниСто, Π΄Π΅ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π° диска, спира прилоТСния, Π² зависимост ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π°Ρ‚Π° Π³Ρ€ΡƒΠΏΠ° ΡΡŠΡ€Π²ΡŠΡ€ΠΈ.

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Ρ‚ΠΈΠΊΠ΅Ρ‚ΡŠΡ‚ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π° Π² Ready to change: Ρ‚ΠΎΠ²Π° Π΅ сигнал Π½Π° ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π°, Ρ‡Π΅ диска ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·Π²Π°Π΄ΠΈ. Всички ΠΏΠΎΠ»Π΅Ρ‚Π° Π² Jira Π²Π΅Ρ‡Π΅ са попълнСни, ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΡŠΡ‚ Π·Π½Π°Π΅ какъв Ρ‚ΠΈΠΏ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π΅ диска. Π’Π΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ сС Π²ΡŠΠ²Π΅ΠΆΠ΄Π°Ρ‚ ΠΈΠ»ΠΈ Π² прСдходния статус Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ, ΠΈΠ»ΠΈ ΠΎΡ‚ администратора.

Π‘Π»Π΅Π΄ подмяната Π½Π° диска Ρ‚ΠΈΠΊΠ΅Ρ‚ΡŠΡ‚ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π° Π² статус Changed. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ²Π° сС Π΄Π°Π»ΠΈ Π΅ поставСн нСобходимият диск, ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° сС Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ°, стартира сС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΈ сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ някои Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎ Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ. Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Ρ‚ΠΈΠΊΠ΅Ρ‚ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»Π΅Π½ Π² статус Π“ΠΎΡ‚ΠΎΠ², Π² Ρ‚ΠΎΠ·ΠΈ случай отговорният остава Π°Π΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Ρ‚ΠΎΠΉ Π΅ въвСл диска Π² ротация. Цялата схСма ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ‚Π°ΠΊΠ°.

Автоматизация Π½Π° замяната Π½Π° дисковС с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ansible
ДобавянСто Π½Π° Π½ΠΎΠ²ΠΈ ΠΏΠΎΠ»Π΅Ρ‚Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π½ΠΈ улСсни. Π₯ΠΎΡ€Π°Ρ‚Π° Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ…Π° Π΄Π° работят с ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½Π° информация, стана ясно ΠΊΠ°ΠΊΠ²ΠΎ ΠΈ Π½Π° ΠΊΠΎΠΉ Π΅Ρ‚Π°ΠΏ трябва Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ. ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΈΡ‚Π΅ станаха ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½ΠΈ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ сСга Π³ΠΈ Π·Π°Π΄Π°Π²Π° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚.

НСобходимостта ΠΎΡ‚ Ρ‡Π°Ρ‚ΠΎΠ²Π΅ ΠΎΡ‚ΠΏΠ°Π΄Π½Π°. Π Π°Π·Π±ΠΈΡ€Π° сС, Π°Π΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° пишС Π½Π° ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π° "Ρ‚ΡƒΠΊ трябва Π΄Π° сС Π·Π°ΠΌΠ΅Π½ΠΈ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ" ΠΈΠ»ΠΈ "Π²Π΅Ρ‡Π΅ Π΅ Π²Π΅Ρ‡Π΅Ρ€, ΡƒΡΠΏΡΠ²Π°Ρˆ Π»ΠΈ Π΄Π° замСниш?". Но Π²Π΅Ρ‡Π΅ Π½Π΅ ΠΎΠ±Ρ‰ΡƒΠ²Π°ΠΌΠ΅ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ Π² Ρ‡Π°Ρ‚ΠΎΠ²Π΅ ΠΏΠΎ Ρ‚Π΅Π·ΠΈ Π²ΡŠΠΏΡ€ΠΎΡΠΈ.

ДискСтС Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ…Π° Π΄Π° сС замСнят Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ. Ако Π°Π΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Π΄ΠΎΠΉΠ΄Π΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-Ρ€Π°Π½ΠΎ, Ρ‚ΠΎΠΉ ΠΈΠΌΠ° свободно Π²Ρ€Π΅ΠΌΠ΅, ΠΈ Π°ΠΊΠΎ Π½ΠΈΡ‰ΠΎ Π½Π΅ сС Π΅ случило, ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²ΠΈ Ρ€Π΅Π΄ΠΈΡ†Π° ΡΡŠΡ€Π²ΡŠΡ€ΠΈ Π·Π° замяна: Π΄Π° Π·Π°Π΄Π°Π΄Π΅ ΠΏΠΎΠ»Π΅Ρ‚Π°, Π΄Π° ΠΈΠ·Π²Π°Π΄ΠΈ дисковСтС ΠΎΡ‚ ротация ΠΈ Π΄Π° ΠΏΡ€Π΅Π΄Π°Π΄Π΅ Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π° Π½Π° ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π°. Π˜Π½ΠΆΠ΅Π½Π΅Ρ€ΡŠΡ‚ ΠΈΠ΄Π²Π° ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-късно Π² Π΄Π°Ρ‚Π° Ρ†Π΅Π½Ρ‚ΡŠΡ€Π°, Π²ΠΈΠΆΠ΄Π° Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π°, Π²Π·Π΅ΠΌΠ° Π½ΡƒΠΆΠ½ΠΈΡ‚Π΅ носитСли ΠΎΡ‚ склада ΠΈ Π²Π΅Π΄Π½Π°Π³Π° смСня. Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ скоростта Π½Π° замяна сС ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈ.

ИзнСсСн ΠΎΠΏΠΈΡ‚ ΠΏΡ€ΠΈ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° Workflow

  • ΠŸΡ€ΠΈ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Ρ‚Π° Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС ΡΡŠΠ±ΠΈΡ€Π° информация ΠΎΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΡ†ΠΈ.
    Някои ΠΎΡ‚ Π½Π°ΡˆΠΈΡ‚Π΅ администратори Π½Π΅ Π·Π½Π°Π΅Ρ…Π°, Ρ‡Π΅ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΡŠΡ‚ сам смСня дисковСтС. Някои смятаха, Ρ‡Π΅ Π·Π° синхронизацията Π½Π° MD RAID слСдят ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈ, Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ някои ΠΎΡ‚ тях Π΄ΠΎΡ€ΠΈ нямахмС Π΄ΠΎΡΡ‚ΡŠΠΏ Π·Π° Ρ‚ΠΎΠ²Π°. Някои Π²ΠΎΠ΄Π΅Ρ‰ΠΈ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈ Π³ΠΎ ΠΏΡ€Π°Π²Π΅Ρ…Π°, Π½ΠΎ Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ, Π·Π°Ρ‰ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΡ†Π΅ΡΡŠΡ‚ Π½Π΅ бСшС описан никъдС.
  • ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Ρ‚Π° трябва Π΄Π° бъдС проста ΠΈ ясна.
    На Ρ‡ΠΎΠ²Π΅ΠΊ ΠΌΡƒ Π΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π΄Π° Π΄ΡŠΡ€ΠΆΠΈ Π² Π³Π»Π°Π²Π°Ρ‚Π° мноТСство ΡΡ‚ΡŠΠΏΠΊΠΈ. Най-Π²Π°ΠΆΠ½ΠΈΡ‚Π΅ съсСдни статуси Π² Jira Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ изнСсСни Π½Π° главния Π΅ΠΊΡ€Π°Π½. МоТСм Π΄Π° Π³ΠΈ ΠΏΡ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠ²Π°ΠΌΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, In progress Π³ΠΎ Π½Π°Ρ€ΠΈΡ‡Π°ΠΌΠ΅ Ready to change. А останалитС статуси ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° скриСм Π² ΠΏΠ°Π΄Π°Ρ‰ΠΎ мСню, Π·Π° Π΄Π° Π½Π΅ дразнят ΠΎΠΊΠΎΡ‚ΠΎ. Но ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ Π΅ Π΄Π° Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°ΠΌΠ΅ Ρ…ΠΎΡ€Π°Ρ‚Π°, Π΄Π° ΠΈΠΌ Π΄Π°Π΄Π΅ΠΌ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π΄Π° направят ΠΏΡ€Π΅Ρ…ΠΎΠ΄Π°.
    ΠžΠ±ΡΡΠ½ΡΠ²Π°ΠΉΡ‚Π΅ стойността Π½Π° Π½ΠΎΠ²ΠΎΠ²ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΡΡ‚Π°. ΠšΠΎΠ³Π°Ρ‚ΠΎ Ρ…ΠΎΡ€Π°Ρ‚Π° Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚, Ρ‚Π΅ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ°Ρ‚ Π½ΠΎΠ²Π°Ρ‚Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°. Π—Π° нас бСшС ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°ΠΆΠ½ΠΎ Ρ…ΠΎΡ€Π°Ρ‚Π° Π΄Π° Π½Π΅ ΠΊΠ»ΠΈΠΊΠ°Ρ‚ Π½Π° цСлия процСс, Π° Π΄Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Ρ‚ ΠΏΡ€Π΅Π· Π½Π΅Π³ΠΎ. ПослС ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΡ…ΠΌΠ΅ автоматизация Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° Ρ‚ΠΎΠ²Π°.
  • Π”Π° сС ΠΈΠ·Ρ‡Π°ΠΊΠ²Π°, Π΄Π° сС Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°, Π΄Π° сС Ρ€Π°Π·Π±ΠΈΡ€Π°.
    НиС ΠΎΡ‚Π΄Π΅Π»ΠΈΡ…ΠΌΠ΅ ΠΎΠΊΠΎΠ»ΠΎ мСсСц Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Ρ‚Π°, тСхничСската рСализация, срСщи ΠΈ обсъТдания. А Π·Π° внСдряванСто - ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ Ρ‚Ρ€ΠΈ мСсСца. Видях ΠΊΠ°ΠΊ Ρ…ΠΎΡ€Π°Ρ‚Π° постСпСнно Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ…Π° Π΄Π° ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π½ΠΎΠ²ΠΎΠ²ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ. Π’ Π½Π°Ρ‡Π°Π»Π½ΠΈΡ‚Π΅ Π΅Ρ‚Π°ΠΏΠΈ имашС ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅Π³Π°Ρ‚ΠΈΠ²ΠΈΠ·ΡŠΠΌ. Но Ρ‚ΠΎΠΉ Π½Π΅ зависСшС ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ ΠΎΡ‚ самата ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°, Π½ΠΈΡ‚ΠΎ ΠΎΡ‚ тСхничСската ΠΉ рСализация. НапримСр, Π΅Π΄ΠΈΠ½ администратор използвашС Π½Π΅ Jira, Π° Jira-плъгин Π² Confluence, ΠΈ някои Π½Π΅Ρ‰Π° ΠΌΡƒ бяха Π½Π΅Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΈ. ΠŸΠΎΠΊΠ°Π·Π°Ρ…ΠΌΠ΅ ΠΌΡƒ Jira, продуктивността Π½Π° администратора сС ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈ ΠΊΠ°ΠΊΡ‚ΠΎ ΠΏΠΎ ΠΎΠ±Ρ‰ΠΈΡ‚Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ, Ρ‚Π°ΠΊΠ° ΠΈ ΠΏΠΎ подмяната Π½Π° дисковС.

Автоматизация Π½Π° подмяната Π½Π° дисковС

Към автоматизацията Π½Π° подмяната Π½Π° дисковС сС ΠΎΠΏΠΈΡ‚Π²Π°Ρ…ΠΌΠ΅ Π΄Π° сС ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠΈΠΌΠ΅ няколко ΠΏΡŠΡ‚ΠΈ. Π’Π΅Ρ‡Π΅ ΠΈΠΌΠ°Ρ…ΠΌΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, скриптовС, Π½ΠΎ всички Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π΅Ρ…Π° ΠΈΠ»ΠΈ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π΅Π½, ΠΈΠ»ΠΈ Π² Ρ€ΡŠΡ‡Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ ΠΈ изискваха стартиранС. И Π΅Π΄Π²Π° слСд внСдряванСто Π½Π° Π½ΠΎΠ²Π°Ρ‚Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΎΡΡŠΠ·Π½Π°Ρ…ΠΌΠ΅, Ρ‡Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ нСя Π½ΠΈ липсвашС.

Въй ΠΊΠ°Ρ‚ΠΎ сСга ΠΏΡ€ΠΎΡ†Π΅ΡΡŠΡ‚ Π½Π° подмяна Π΅ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ Π½Π° Π΅Ρ‚Π°ΠΏΠΈ, Π·Π° всСки ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠΌΠ° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΈΠ·ΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π» ΠΈ списък с дСйствия, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π²ΠΊΠ»ΡŽΡ‡Π²Π°ΠΌΠ΅ автоматизацията ΠΏΠΎΠ΅Ρ‚Π°ΠΏΠ½ΠΎ, Π° Π½Π΅ Π²Π΅Π΄Π½Π°Π³Π° цялата. НапримСр, Π½Π°ΠΉ-простият Π΅Ρ‚Π°ΠΏ - Ready (ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π·Π° синхронизация Π½Π° RAID/Π΄Π°Π½Π½ΠΈ) ΠΌΠΎΠΆΠ΅ лСсно Π΄Π° бъдС Π΄Π΅Π»Π΅Π³ΠΈΡ€Π°Π½ Π½Π° Π±ΠΎΡ‚Π°. ΠšΠΎΠ³Π°Ρ‚ΠΎ Π±ΠΎΡ‚ΡŠΡ‚ сС Π½Π°ΡƒΡ‡ΠΈ ΠΌΠ°Π»ΠΊΠΎ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΌΡƒ Π΄Π°Π΄Π΅ΠΌ ΠΏΠΎ-ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π½Π° Π·Π°Π΄Π°Ρ‡Π° - въвСТданС Π½Π° диска Π² ротация ΠΈ Ρ‚.Π½.

Π—ΠΎΠΎΠΏΠ°Ρ€ΠΊ Π½Π° сСтапитС

ΠŸΡ€Π΅Π΄ΠΈ Π΄Π° Ρ€Π°Π·ΠΊΠ°ΠΆΠ° Π·Π° Π±ΠΎΡ‚Π°, Ρ‰Π΅ Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ малък Скскурс Π² нашия Π·ΠΎΠΎΠΏΠ°Ρ€ΠΊ ΠΎΡ‚ инсталации. На ΠΏΡŠΡ€Π²ΠΎ място, Ρ‚ΠΎΠΉ Π΅ обуславян ΠΎΡ‚ огромния Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° Π½Π°ΡˆΠ°Ρ‚Π° инфраструктура. На Π²Ρ‚ΠΎΡ€ΠΎ място, Π·Π° всяка услуга сС ΠΎΠΏΠΈΡ‚Π²Π°ΠΌΠ΅ Π΄Π° ΠΏΠΎΠ΄Π±Π΅Ρ€Π΅ΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π½Π° конфигурация Π½Π° Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π°. ИмамС ΠΎΠΊΠΎΠ»ΠΎ 20 ΠΌΠΎΠ΄Π΅Π»Π° Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½ΠΈ RAID, основно LSI ΠΈ Adaptec, Π½ΠΎ срСщат сС ΠΈ HP, ΠΈ DELL Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ вСрсии. ВсСки RAID-ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ ΠΈΠΌΠ° своята ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅. ΠΠ°Π±ΠΎΡ€ΡŠΡ‚ ΠΎΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΈ ΠΈΠ·Ρ…ΠΎΠ΄ΡŠΡ‚ ΠΎΡ‚ тях ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС Ρ€Π°Π·Π»ΠΈΡ‡Π°Π²Π°Ρ‚ ΠΎΡ‚ вСрсия Π½Π° вСрсия Π·Π° всСки RAID-ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€. Π’Π°ΠΌ, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π½Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ HW-RAID, ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° mdraid.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ всички Π½ΠΎΠ²ΠΈ инсталации ΠΏΡ€Π°Π²ΠΈΠΌ Π±Π΅Π· дисково Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€Π°Π½Π΅. ΠžΠΏΠΈΡ‚Π²Π°ΠΌΠ΅ сС Π΄Π° Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½ΠΈ ΠΈ софтуСрни RAID, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€Π°ΠΌΠ΅ Π½Π°ΡˆΠΈΡ‚Π΅ систСми Π½Π° Π½ΠΈΠ²ΠΎ Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠ²Π΅, Π° Π½Π΅ Π½Π° Π½ΠΈΠ²ΠΎ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ. Но Ρ€Π°Π·Π±ΠΈΡ€Π° сС, ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ наслСдствСни ΡΡŠΡ€Π²ΡŠΡ€ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ трябва Π΄Π° ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°ΠΌΠ΅.

НякъдС дисковСтС Π² RAID ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΠΈΡ‚Π΅ сС ΡΠ²ΡŠΡ€Π·Π²Π°Ρ‚ ΠΊΠ°Ρ‚ΠΎ raw устройства, Π° някъдС сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° JBOD. Има ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ с Π΅Π΄ΠΈΠ½ систСмСн диск Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°, ΠΈ Π°ΠΊΠΎ трябва Π΄Π° бъдС Π·Π°ΠΌΠ΅Π½Π΅Π½, сС Π½Π°Π»Π°Π³Π° Π΄Π° сС прСинсталира ΡΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ с инсталиранС Π½Π° ОБ ΠΈ прилоТСния, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΡΡŠΡ‰ΠΈΡ‚Π΅ вСрсии, послС Π΄Π° сС добавят ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ Π΄Π° сС стартират прилоТСния. Π‘ΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π° ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π³Ρ€ΡƒΠΏΠΈ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ, ΠΏΡ€ΠΈ ΠΊΠΎΠΈΡ‚ΠΎ Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ сС ΠΎΡΡŠΡ‰Π΅ΡΡ‚Π²ΡΠ²Π° Π½Π΅ Π½Π° Π½ΠΈΠ²ΠΎ дискова подсистСма, Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π² самитС прилоТСния.

ΠžΠ±Ρ‰ΠΎ Π²Π·Π΅Ρ‚ΠΎ, ΠΈΠΌΠ°ΠΌΠ΅ Π½Π°Π΄ 400 ΡƒΠ½ΠΈΠΊΠ°Π»Π½ΠΈ Π³Ρ€ΡƒΠΏΠΈ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ, Π½Π° ΠΊΠΎΠΈΡ‚ΠΎ работят ΠΎΠΊΠΎΠ»ΠΎ 100 Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ прилоТСния. Π—Π° Π΄Π° ΠΏΠΎΠΊΡ€ΠΈΠ΅ΠΌ Ρ‚Π°ΠΊΠΎΠ²Π° ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎ количСство Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΈ, Π½ΠΈ Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π΅Π½ инструмСнт Π·Π° автоматизация. Π–Π΅Π»Π°Ρ‚Π΅Π»Π½ΠΎ Π΅ Π΄Π° ΠΈΠΌΠ° прост DSL, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π½Π΅ само ΠΎΠ½Π·ΠΈ, ΠΊΠΎΠΉΡ‚ΠΎ Π³ΠΎ Π΅ написал, Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° систСмата.

Π˜Π·Π±Ρ€Π°Ρ…ΠΌΠ΅ Ansible, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π΅ Π±Π΅Π· Π°Π³Π΅Π½Ρ‚: Π½Π΅ бСшС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° подготвямС инфраструктура, Π° Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π΅ Π±ΡŠΡ€Π·ΠΎ. ОсвСн Ρ‚ΠΎΠ²Π° Π΅ написан Π½Π° Python, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ ΠΏΡ€ΠΈΠ΅Ρ‚ ΠΊΠ°Ρ‚ΠΎ стандарт Π² Π΅ΠΊΠΈΠΏΠ°.

ΠžΠ±Ρ‰Π°Ρ‚Π° схСма

НСка Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΎΠ±Ρ‰Π°Ρ‚Π° схСма Π·Π° автоматизация Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π° Π΅Π΄ΠΈΠ½ ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚. Zabbix ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°, Ρ‡Π΅ диск sdb Π΅ ΠΏΠΎΠ²Ρ€Π΅Π΄Π΅Π½, Ρ‚Ρ€ΠΈΠ³Π΅Ρ€ΡŠΡ‚ сС задСйства, ΠΈ сС създава Ρ‚ΠΈΠΊΠ΅Ρ‚ Π² Jira. ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Π³ΠΎ ΠΏΡ€Π΅Π³Π»Π΅ΠΆΠ΄Π°, Ρ€Π°Π·Π±ΠΈΡ€Π°, Ρ‡Π΅ Π½Π΅ Π΅ Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ ΠΈ Π½Π΅ Π΅ false positive, тоСст трябва Π΄Π° сС смСни Π΄ΠΈΡΠΊΡŠΡ‚, ΠΈ прСмСства Ρ‚ΠΈΠΊΠ΅Ρ‚Π° Π² In progress.

Автоматизация Π½Π° замяната Π½Π° дисковС с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ansible
ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ DiskoBot, написано Π½Π° Python, ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎ провСрява Jira Π·Π° Π½ΠΎΠ²ΠΈ Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ. Π’ΠΎ забСлязва, Ρ‡Π΅ ΠΈΠΌΠ° Π½ΠΎΠ² Ρ‚ΠΈΠΊΠ΅Ρ‚ In progress, задСйства сС ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡΡ‚ thread, ΠΊΠΎΠΉΡ‚ΠΎ стартира playbook Π² Ansible (Ρ‚ΠΎΠ²Π° сС ΠΏΡ€Π°Π²ΠΈ Π·Π° всСки статус Π² Jira). Π’ Ρ‚ΠΎΠ·ΠΈ случай сС стартира Prepare2change.

Ansible сС ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° Π½Π° хоста, ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π²Π° диска ΠΎΡ‚ ротация ΠΈ ΠΎΡ‚Ρ‡ΠΈΡ‚Π° статуса Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Ρ‡Ρ€Π΅Π· Callbacks.

Автоматизация Π½Π° замяната Π½Π° дисковС с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ansible
По Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ Π±ΠΎΡ‚ΡŠΡ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ прСмСства Ρ‚ΠΈΠΊΠ΅Ρ‚Π° Π² Ready to change. Π˜Π½ΠΆΠ΅Π½Π΅Ρ€ΡŠΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΈ сС отправя Π΄Π° смСни диска, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ прСмСства Ρ‚ΠΈΠΊΠ΅Ρ‚Π° Π² Changed.

Автоматизация Π½Π° замяната Π½Π° дисковС с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ansible
Π‘ΠΏΠΎΡ€Π΅Π΄ описаната схСма Ρ‚ΠΈΠΊΠ΅Ρ‚ΡŠΡ‚ ΠΏΠΎΠΏΠ°Π΄Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΏΡ€ΠΈ Π±ΠΎΡ‚Π°, ΠΊΠΎΠΉΡ‚ΠΎ стартира Π΄Ρ€ΡƒΠ³ playbook, ΠΎΡ‚ΠΈΠ²Π° Π½Π° хоста ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π²Π° диска Π² ротация. Π‘ΠΎΡ‚ΡŠΡ‚ затваря Ρ‚ΠΈΠΊΠ΅Ρ‚Π°. Π£Ρ€Π°!

Автоматизация Π½Π° замяната Π½Π° дисковС с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ansible
Π‘Π΅Π³Π° Π½Π΅ΠΊΠ° ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π·Π° някои ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π½Π° систСмата.

Diskobot

Π’ΠΎΠ²Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΅ написано Π½Π° Python. Π’ΠΎ ΠΈΠ·Π±ΠΈΡ€Π° Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ ΠΎΡ‚ Jira Π² ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅ с JQL. Π’ зависимост ΠΎΡ‚ статуса Π½Π° Ρ‚ΠΈΠΊΠ΅Ρ‚Π°, послСдният ΠΏΠΎΠΏΠ°Π΄Π° ΠΏΡ€ΠΈ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, ΠΊΠΎΠΉΡ‚ΠΎ ΠΎΡ‚ своя страна стартира ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π°Ρ‰ΠΈΡ Π½Π° статуса Ansible playbook.

JQL ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΈΡ‚Π΅ Π·Π° Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅ са ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ Π² конфигурационния Ρ„Π°ΠΉΠ» Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ.

jira_states:
  investigate:
    jql: '… статус = Open ΠΈ "Disk Size" Π΅ EMPTY'
    interval: 180

  inprogress:
    jql: '…  ΠΈ "Disk Size" Π½Π΅ Π΅ EMPTY ΠΈ "Device Name" Π½Π΅ Π΅ EMPTY'
 
  ready:
    jql: '… ΠΈ (labels Π½Π΅ са Π² ("dbot_ignore") ΠΈΠ»ΠΈ labels Π΅ EMPTY)'
    interval: 7200

НапримСр, срСд Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈΡ‚Π΅ Π² статус In progress, сС ΠΈΠ·Π±ΠΈΡ€Π°Ρ‚ само Ρ‚Π΅Π·ΠΈ, ΠΏΡ€ΠΈ ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎΠ»Π΅Ρ‚Π°Ρ‚Π° Disk size ΠΈ Device name са запълнСни. Device name Π΅ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° Π±Π»ΠΎΠΊΠΎΠ²ΠΎΡ‚ΠΎ устройство, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° playbook-Π°. Disk size Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΡŠΡ‚ Π΄Π° Π·Π½Π°Π΅ какъв Ρ€Π°Π·ΠΌΠ΅Ρ€ диск Π΅ Π½ΡƒΠΆΠ΅Π½.

А срСд Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈΡ‚Π΅ със статус Ready сС Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Ρ‚ Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈΡ‚Π΅ с Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ dbot_ignore. Π—Π° справка, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ JIRA Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ ΠΊΠ°ΠΊΡ‚ΠΎ Π·Π° ΠΏΠΎΠ΄ΠΎΠ±Π½Π° филтрация, Ρ‚Π°ΠΊΠ° ΠΈ Π·Π° ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Π½Π΅ Π½Π° Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΈ ΠΈ ΡΡŠΠ±ΠΈΡ€Π°Π½Π΅ Π½Π° статистика.

Π’ случай Π½Π° нСуспСх Π½Π° playbook-Π°, JIRA ΠΏΡ€ΠΈΠ»Π°Π³Π° Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ dbot_failed, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ ΠΏΠΎ-късно Π΄Π° сС Ρ€Π°Π·Π±Π΅Ρ€Π΅ ΠΊΠ°ΠΊΠ²ΠΎ сС Π΅ случило.

ВзаимодСйствиС с Ansible

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ взаимодСйства с Ansible Ρ‡Ρ€Π΅Π· Ansible Python API. Π’ playbook_executor ΠΏΡ€Π΅Π΄Π°Π²Π°ΠΌΠ΅ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° Ρ„Π°ΠΉΠ»Π° ΠΈ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ. Π’ΠΎΠ²Π° позволява Ansible ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ Π΄Π° бъдС Π² ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ yml Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, Π° Π½Π΅ Π΄Π° сС описва Π² Python ΠΊΠΎΠ΄.

Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π² Ansible Ρ‡Ρ€Π΅Π· *extra_vars* сС ΠΏΡ€Π΅Π΄Π°Π²Π°Ρ‚ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° Π±Π»ΠΎΠΊΠΎΠ²ΠΎΡ‚ΠΎ устройство, ΡΡ‚Π°Ρ‚ΡƒΡΡŠΡ‚ Π½Π° Ρ‚ΠΈΠΊΠ΅Ρ‚Π°, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ callback_url, Π² ΠΊΠΎΠΉΡ‚ΠΎ Π΅ Π²Π³Ρ€Π°Π΄Π΅Π½ issue key β€” Ρ‚ΠΎΠΉ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° callback Π² HTTP.

Π—Π° всяко изпълнСниС сС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π΅Π½ inventory, прСдставляващ Π΅Π΄ΠΈΠ½ хост ΠΈ Π³Ρ€ΡƒΠΏΠ°, Π² която Π²Π»ΠΈΠ·Π° Ρ‚ΠΎΠ·ΠΈ хост, Π·Π° Π΄Π° сС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ°Ρ‚ group_vars.

Π•Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° таск, Π² ΠΊΠΎΠΉΡ‚ΠΎ Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ HTTP callback.

Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΡŠΡ‚ ΠΎΡ‚ ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° playbook-ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ Ρ‡Ρ€Π΅Π· callback-ΠΎΠ²Π΅. Π’Π΅ са ΠΎΡ‚ Π΄Π²Π° Ρ‚ΠΈΠΏΠ°:

  • Ansible callback plugin, прСдоставя Π΄Π°Π½Π½ΠΈ Π·Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΡ‚ ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° playbook-Π°. Π’Π°ΠΌ са описани Π·Π°Π΄Π°Ρ‡ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ са Π±ΠΈΠ»ΠΈ стартирани, ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π·Π°Π²ΡŠΡ€ΡˆΠ΅Π½ΠΈ. Π’ΠΎΠ·ΠΈ callback сС ΠΈΠ·Π²ΠΈΠΊΠ²Π° Π² края Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° playbook-Π°.
  • HTTP callback Π·Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° информация ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° playbook-Π°. Π’ Ansible таска изпълнявамС POST/GET Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅ Π² посока Π½Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Π§Ρ€Π΅Π· HTTP callback-ΠΎΠ²Π΅Ρ‚Π΅ сС ΠΏΡ€Π΅Π΄Π°Π²Π°Ρ‚ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ са Π±ΠΈΠ»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° playbook-Π° ΠΈ ΠΊΠΎΠΈΡ‚ΠΎ искамС Π΄Π° Π·Π°ΠΏΠ°Π·ΠΈΠΌ ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π² слСдващи стартирания. Π’Π΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ записвамС Π² sqlite.

Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Ρ‡Ρ€Π΅Π· HTTP callback оставямС ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈ ΠΈ промСнямС статуса Π½Π° Ρ‚ΠΈΠΊΠ΅Ρ‚Π°.

HTTP callback

# Make callback to Diskobot App
# Variables:
#    callback_post_body: # A dict with follow keys. All keys are optional
#       msg: If exist it would be posted to Jira as comment
#       data: If exist it would be saved in Incident.variables
#       desire_state: Set desire_state for incident
#       status: If exist Proceed issue to that status

  - name: Callback to Diskobot app (jira comment/status)
    uri:
      url: "{{ callback_url }}/{{ devname }}"
      user: "{{ diskobot_user }}"
      password: "{{ diskobot_pass }}"
      force_basic_auth: True
      method: POST
      body: "{{ callback_post_body | to_json }}"
      body_format: json
    delegate_to: 127.0.0.1

ΠšΠ°ΠΊΡ‚ΠΎ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ сходни Π·Π°Π΄Π°Ρ‡ΠΈ, Π½ΠΈΠ΅ я прСмСстихмС Π² ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΠΎΠ±Ρ‰ Ρ„Π°ΠΉΠ» ΠΈ я Π²ΠΊΠ»ΡŽΡ‡Π²Π°ΠΌΠ΅ ΠΏΡ€ΠΈ нСобходимост, Π·Π° Π΄Π° Π½Π΅ я повтарямС постоянно Π² playbook-ΠΈΡ‚Π΅. Π’ΡƒΠΊ Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π° callback_url, Π² ΠΊΠΎΠΉΡ‚ΠΎ са Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ issue key ΠΈ host name. ΠšΠΎΠ³Π°Ρ‚ΠΎ Ansible изпълни Ρ‚ΠΎΠ·ΠΈ POST-запрос, Π±ΠΎΡ‚ΡŠΡ‚ Ρ€Π°Π·Π±ΠΈΡ€Π°, Ρ‡Π΅ Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅ Π² контСкста Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚.

Π•Ρ‚ΠΎ Π΅Π΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‚ playbook-Π°, Π² ΠΊΠΎΠΉΡ‚ΠΎ изнСсохмС диск ΠΎΡ‚ MD-устройство:

  # Save mdadm configuration
  - include: common/callback.yml
    vars:
      callback_post_body:
        status: 'Ready to change'
        msg: "Removed disk from mdraid {{ mdadm_remove_disk.msg | comment_jira }}"
        data:
          mdadm_data: "{{ mdadm_remove_disk.removed }}"
          parted_info: "{{ parted_info | default() }}"
    when:
      - mdadm_remove_disk | changed
      - mdadm_remove_disk.removed

Π’Π°Π·ΠΈ Π·Π°Π΄Π°Ρ‡Π° промСня статусa Π½Π° Jira Ρ‚ΠΈΠΊΠ΅Ρ‚Π° Π½Π° "Π“ΠΎΡ‚ΠΎΠ² Π·Π° промяна" ΠΈ добавя ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€. Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π² ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°Ρ‚Π° mdam_data сС Π·Π°ΠΏΠ°Π·Π²Π° списък с md-устройства, ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ Π΅ Π±ΠΈΠ» ΠΈΠ·Π²Π°Π΄Π΅Π½ диск, Π° Π² parted_info β€” Π΄Π°ΠΌΠΏ Π½Π° партицията ΠΎΡ‚ parted.

ΠšΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΡŠΡ‚ постави Π½ΠΎΠ² диск, Ρ‰Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Ρ‚Π΅Π·ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, Π·Π° Π΄Π° Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΠΈΠΌ Π΄Π°ΠΌΠΏΠ° Π½Π° ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ, Π° ΡΡŠΡ‰ΠΎ ΠΈ Π΄Π° рСгистрирамС диска Π² Ρ‚Π΅Π·ΠΈ md-устройства, ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ Π΅ Π±ΠΈΠ» ΠΈΠ·Π²Π°Π΄Π΅Π½.

Ansible Ρ€Π΅ΠΆΠΈΠΌ Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°

Π‘Π΅ΡˆΠ΅ ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎ Π΄Π° Π²ΠΊΠ»ΡŽΡ‡Π²Π°ΠΌΠ΅ автоматизацията. Π—Π°Ρ‚ΠΎΠ²Π° Ρ€Π΅ΡˆΠΈΡ…ΠΌΠ΅ Π΄Π° стартирамС всички playbook-ΠΈ Π² Ρ€Π΅ΠΆΠΈΠΌ
dry run, Π² ΠΊΠΎΠΉΡ‚ΠΎ Ansible Π½Π΅ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ дСйствия Π½Π° ΡΡŠΡ€Π²ΡŠΡ€ΠΈΡ‚Π΅, Π° само Π³ΠΈ Π΅ΠΌΡƒΠ»ΠΈΡ€Π°.

Вакъв старт ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡ€Π΅Π· ΠΎΡ‚Π΄Π΅Π»Π΅Π½ callback ΠΌΠΎΠ΄ΡƒΠ», Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΡŠΡ‚ ΠΎΡ‚ ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° playbook-Π° сС Π·Π°ΠΏΠ°Π·Π²Π° Π² Jira ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€.

Автоматизация Π½Π° замяната Π½Π° дисковС с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ansible

На ΠΏΡŠΡ€Π²ΠΎ място, Ρ‚ΠΎΠ²Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π΄Π° Π²Π°Π»ΠΈΠ΄ΠΈΡ€Π°ΠΌΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° Π±ΠΎΡ‚Π° ΠΈ playbook-ΠΈΡ‚Π΅. На Π²Ρ‚ΠΎΡ€ΠΎ място, повиши Π΄ΠΎΠ²Π΅Ρ€ΠΈΠ΅Ρ‚ΠΎ Π½Π° администраторитС към Π±ΠΎΡ‚Π°.

Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Ρ…ΠΌΠ΅ валидацията ΠΈ Ρ€Π°Π·Π±Ρ€Π°Ρ…ΠΌΠ΅, Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° стартирамС Ansible Π½Π΅ само Π² Ρ€Π΅ΠΆΠΈΠΌ dry run, Π½Π°ΠΏΡ€Π°Π²ΠΈΡ…ΠΌΠ΅ Π² Jira Π±ΡƒΡ‚ΠΎΠ½ Run Diskobot Π·Π° стартиранС Π½Π° ΡΡŠΡ‰ΠΈΡ playbook със ΡΡŠΡ‰ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° ΡΡŠΡ‰ΠΈΡ хост, Π½ΠΎ Π² Π½ΠΎΡ€ΠΌΠ°Π»Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ.

ОсвСн Ρ‚ΠΎΠ²Π°, Π±ΡƒΡ‚ΠΎΠ½ΡŠΡ‚ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ стартиранС Π½Π° playbook-Π° Π² случай Π½Π° Π½Π΅ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ изпълнСниС.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π½Π° Playbooks

Π’Π΅Ρ‡Π΅ спомСнах, Ρ‡Π΅ Π² зависимост ΠΎΡ‚ статуса Π½Π° Jira Ρ‚ΠΈΠΊΠ΅Ρ‚Π°, Π±ΠΎΡ‚ΡŠΡ‚ стартира Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ playbook-ΠΈ.

На ΠΏΡŠΡ€Π²ΠΎ място, Ρ‚Π°ΠΊΠ° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-лСсно Π΄Π° сС ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π° Π²Ρ…ΠΎΠ΄ΡŠΡ‚.
На Π²Ρ‚ΠΎΡ€ΠΎ място, Π² някои случаи Ρ‚ΠΎΠ²Π° Π΅ просто Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.

НапримСр, ΠΏΡ€ΠΈ замяна Π½Π° систСмния диск, ΠΏΡŠΡ€Π²ΠΎ трябва Π΄Π° ΠΎΡ‚ΠΈΠ΄Π΅ΠΌ Π² систСмата Π·Π° Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅, Π΄Π° създадСм Π·Π°Π΄Π°Ρ‡Π° ΠΈ слСд ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅, ΡΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ Ρ‰Π΅ станС Π΄ΠΎΡΡ‚ΡŠΠΏΠ΅Π½ ΠΏΠΎ ssh ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° инсталирамС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ. Ако всичко Ρ‚ΠΎΠ²Π° бСшС Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΎ Π² Π΅Π΄ΠΈΠ½ playbook, Ansible нямашС Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΎ изпълни ΠΏΠΎΡ€Π°Π΄ΠΈ Π½Π΅Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΎΡΡ‚Ρ‚Π° Π½Π° хоста.

ИзползвамС Ansible Ρ€ΠΎΠ»ΠΈ Π·Π° всяка Π³Ρ€ΡƒΠΏΠ° ΡΡŠΡ€Π²ΡŠΡ€ΠΈ. Π’ΡƒΠΊ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΊΠ°ΠΊ са ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ playbook-ΠΈΡ‚Π΅ Π² Π΅Π΄Π½Π° ΠΎΡ‚ тях.

Автоматизация Π½Π° замяната Π½Π° дисковС с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ansible

Π’ΠΎΠ²Π° Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π²Π΅Π΄Π½Π°Π³Π° става ясно къдС са Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈΡ‚Π΅. Π’ main.yml, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ Π²Ρ…ΠΎΠ΄ Π·Π° Ansible ролята, ΠΌΠΎΠΆΠ΅ просто Π΄Π° ΠΈΠΌΠ°ΠΌΠ΅ include ΠΏΠΎ статус Π½Π° Ρ‚ΠΈΠΊΠ΅Ρ‚Π° ΠΈΠ»ΠΈ ΠΎΠ±Ρ‰ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ, Π½ΡƒΠΆΠ½ΠΈ Π·Π° всички, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ ΠΏΡ€Π΅Π· идСнтификация ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° Ρ‚ΠΎΠΊΠ΅Π½.

Investigation.yml

Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π° сС Π·Π° Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ със статус Investigation ΠΈ Open. Най-Π²Π°ΠΆΠ½ΠΎΡ‚ΠΎ Π·Π° Ρ‚ΠΎΠ·ΠΈ playbook Π΅ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° Π±Π»ΠΎΡ‡Π½ΠΎΡ‚ΠΎ устройство. Π’Π°Π·ΠΈ информация Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ Π΅ Π½Π°Π»ΠΈΡ‡Π½Π°.

Π—Π° Π΄Π° я ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ, Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ Ρ€Π΅Π·ΡŽΠΌΠ΅Ρ‚ΠΎ Π² Jira, послСдната стойност ΠΎΡ‚ Zabbix Ρ‚Ρ€ΠΈΠ³Π΅Ρ€Π°. Π’Π°ΠΌ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° Π±Π»ΠΎΡ‡Π½ΠΎΡ‚ΠΎ устройство β€” ΠΊΡŠΡΠΌΠ΅Ρ‚. МоТС Π΄Π° Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΈ Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π΅, β€” Π² Ρ‚Π°ΠΊΡŠΠ² случай трябва Π΄Π° ΠΎΡ‚ΠΈΠ΄Π΅ΠΌ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°, Π΄Π° я парсирамС ΠΈ Π΄Π° изчислим нуТния диск. Π’Ρ€ΠΈΠ³Π΅Ρ€Π° ΡΡŠΡ‰ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€Π΅Π΄Π°Π΄Π΅ scsi адрСс ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³Π° информация. Но сС случва ΠΈ Π΄Π° няма Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ подсказки ΠΈ Π΄Π° сС Π½Π°Π»ΠΎΠΆΠΈ Π°Π½Π°Π»ΠΈΠ·.

Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ установим ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° Π±Π»ΠΎΡ‡Π½ΠΎΡ‚ΠΎ устройство, ΡΡŠΠ±ΠΈΡ€Π°ΠΌΠ΅ информация Π·Π° Ρ‚ΠΈΠΏΠ° ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° диска, Π·Π° Π΄Π° попълним ΠΏΠΎΠ»Π΅Ρ‚Π°Ρ‚Π° Π² Jira. Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΈΠ·Π²Π»ΠΈΡ‡Π°ΠΌΠ΅ информация Π·Π° производитСля, ΠΌΠΎΠ΄Π΅Π»Π°, Ρ„ΡŠΡ€ΠΌΡƒΠ΅Ρ€Π°, ID, SMART ΠΈ всичко Ρ‚ΠΎΠ²Π° Π³ΠΎ поставямС Π² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ Π² Jira Ρ‚ΠΈΠΊΠ΅Ρ‚Π°. ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚ ΠΈ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΡŠΡ‚ Π²Π΅Ρ‡Π΅ Π½Π΅ трябва Π΄Π° Ρ‚ΡŠΡ€ΡΡΡ‚ Ρ‚Π΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ. πŸ™‚

Автоматизация Π½Π° замяната Π½Π° дисковС с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ansible

prepare2change.yml

Π˜Π·ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° диска ΠΎΡ‚ ротация, ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Π·Π° замяна. Най-слоТният ΠΈ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π΅Π½ Π΅Ρ‚Π°ΠΏ. Π’ΡƒΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° спрСтС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π½Π΅ трябва Π΄Π° спира. Или Π΄Π° ΠΈΠ·Π²Π°Π΄ΠΈΡ‚Π΅ диск, Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ липсват Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ, ΠΈ ΠΏΠΎ Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ Π΄Π° повлияСтС Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅, Π΄Π° Π·Π°Π³ΡƒΠ±ΠΈΡ‚Π΅ някакви Π΄Π°Π½Π½ΠΈ. Π’ΡƒΠΊ ΠΈΠΌΠ°ΠΌΠ΅ Π½Π°ΠΉ-ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΈ Π½ΠΎΡ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Ρ‡Π°Ρ‚Π°.

Π’ Π½Π°ΠΉ-простия случай става Π΄ΡƒΠΌΠ° Π·Π° ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅ Π½Π° диска ΠΎΡ‚ HW/MD RAID.

Π’ ΠΏΠΎ-слоТни ситуации (Π² Π½Π°ΡˆΠΈΡ‚Π΅ систСми Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅), ΠΊΠΎΠ³Π°Ρ‚ΠΎ Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° Π½Π° Π½ΠΈΠ²ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС ΠΎΡ‚ΠΈΠ΄Π΅Ρ‚Π΅ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΏΠΎ API, Π΄Π° ΡƒΠ²Π΅Π΄ΠΎΠΌΠΈΡ‚Π΅ Π·Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° диска, Π΄Π° Π³ΠΎ Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ ΠΈ Π΄Π° стартиратС Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅Ρ‚ΠΎ.

Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΌΠΈΠ³Ρ€ΠΈΡ€Π°ΠΌΠ΅ масово Π² ΠΎΠ±Π»Π°ΠΊΠ°, ΠΈ Π°ΠΊΠΎ ΡΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ Π΅ ΠΎΠ±Π»Π°Ρ‡Π΅Π½, Diskobot сС ΠΎΠ±Ρ€ΡŠΡ‰Π° към API-Ρ‚ΠΎ Π½Π° ΠΎΠ±Π»Π°ΠΊΠ°, ΠΊΠ°Π·Π²Π°ΠΉΠΊΠΈ, Ρ‡Π΅ Ρ‰Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ с Ρ‚ΠΎΠ·ΠΈ миньон β€” ΡΡŠΡ€Π²ΡŠΡ€, Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ са стартирани ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ β€” ΠΈ ΠΌΠΎΠ»ΠΈ "ΠΌΠΈΠ³Ρ€ΠΈΡ€Π°ΠΉ всички ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ ΠΎΡ‚ Ρ‚ΠΎΠ·ΠΈ миньон". И Π·Π°Π΅Π΄Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π° подсвСтката Π½Π° диска, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΡŠΡ‚ Π²Π΅Π΄Π½Π°Π³Π° Π΄Π° Π²ΠΈΠ΄ΠΈ ΠΊΠΎΠΉ трябва Π΄Π° ΠΈΠ·Π²Π°Π΄ΠΈ.

changed.yml

Π‘Π»Π΅Π΄ замяната Π½Π° диска, ΠΏΡŠΡ€Π²ΠΎ провСрявамС Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° наличност.

Π˜Π½ΠΆΠ΅Π½Π΅Ρ€ΠΈΡ‚Π΅ Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ поставят Π½ΠΎΠ²ΠΈ дисковС, Π·Π°Ρ‚ΠΎΠ²Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ…ΠΌΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚Π΅Π»Π½ΠΈ стойности Π½Π° SMART.

Какви Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈ Π½Π°Π±Π»ΡŽΠ΄Π°Π²Π°ΠΌΠ΅Π‘Ρ€ΠΎΠΉ ΠΏΡ€Π΅Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ сСктори (5) < 100
Π’Π΅ΠΊΡƒΡ‰ Π±Ρ€ΠΎΠΉ Ρ‡Π°ΠΊΠ°Ρ‰ΠΈ сСктори (107) == 0

Ако Π΄ΠΈΡΠΊΡŠΡ‚ Π½Π΅ ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°Ρ‚Π°, ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΡŠΡ‚ сС увСдомява Π·Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Π° замяна. Ако всичко Π΅ Π½Π°Ρ€Π΅Π΄, ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΡŠΡ‚ сС ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π²Π°, нанася сС ΠΌΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΈ Π΄ΠΈΡΠΊΡŠΡ‚ сС въвСТда Π² ротация.

ready.yml

Най-простият случай: ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° синхронизацията Π½Π° HW/SW raid ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° синхронизацията Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ.

API Π½Π° прилоТСнията

Няколко ΠΏΡŠΡ‚ΠΈ спомСнах, Ρ‡Π΅ Π±ΠΎΡ‚ΡŠΡ‚ чСсто сС ΡΠ²ΡŠΡ€Π·Π²Π° с API Π½Π° прилоТСнията. Π Π°Π·Π±ΠΈΡ€Π° сС, Π½Π΅ ΠΏΡ€ΠΈ всички прилоТСния имашС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ, Π·Π°Ρ‚ΠΎΠ²Π° Π³ΠΈ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΈΡ…ΠΌΠ΅. Π•Ρ‚ΠΎ Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅:

  • Status. Бтатус Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° ΠΈΠ»ΠΈ диска, Π·Π° Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Π΄Π°Π»ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ с Π½Π΅Π³ΠΎ;
  • Start/stop. АктивиранС-Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° диска;
  • Migrate/restore. ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΡ ΠΈ Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ ΠΈ слСд замяна.

Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ ΠΎΠΏΠΈΡ‚ ΠΎΡ‚ Ansible

Много ΠΎΠ±ΠΈΡ‡Π°ΠΌ Ansible. Но чСсто, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π³Π»Π΅Π΄Π°ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ opensource ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ ΠΈ Π²ΠΈΠΆΠ΄Π°ΠΌ ΠΊΠ°ΠΊ Ρ…ΠΎΡ€Π°Ρ‚Π° ΠΏΠΈΡˆΠ°Ρ‚ playbook-ΠΈ, ΠΌΠΈ става ΠΌΠ°Π»ΠΊΠΎ ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎ. Π‘Π»ΠΎΠΆΠ½ΠΈ логичСски Π²Π·Π°ΠΈΠΌΠΎΠ²Ρ€ΡŠΠ·ΠΊΠΈ ΠΎΡ‚ when/loop, липса Π½Π° Π³ΡŠΠ²ΠΊΠ°Π²ΠΎΡΡ‚ ΠΈ идСмпотСнтност ΠΏΠΎΡ€Π°Π΄ΠΈ чСсто ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° shell/command.

Π Π΅ΡˆΠΈΡ…ΠΌΠ΅ Π΄Π° опростим всичко максимално, ΠΊΠ°Ρ‚ΠΎ сС възползвамС ΠΎΡ‚ прСдимството Π½Π° Ansible β€” модулността. На Π½Π°ΠΉ-високото Π½ΠΈΠ²ΠΎ са playbook-ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° пишС всСки администратор ΠΈΠ»ΠΈ външСн Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠ°Π»ΠΊΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π° ΠΎΡ‚ Ansible.

- name: Blink disk
  become: True
  register: locate_action
  disk_locate:
      locate: '{{ locate }}'
      devname: '{{ devname }}'
      ids: '{{ locate_ids | default(pd_id) | default(omit) }}'

Ако някаква Π»ΠΎΠ³ΠΈΠΊΠ° Π΅ Ρ‚Ρ€ΡƒΠ΄Π½Π° Π·Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π² playbook-ΠΈΡ‚Π΅, я ΠΈΠ·Π²Π΅ΠΆΠ΄Π°ΠΌΠ΅ Π² Ansible-ΠΌΠΎΠ΄ΡƒΠ» ΠΈΠ»ΠΈ Ρ„ΠΈΠ»Ρ‚ΡŠΡ€. Π‘ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ²Π΅Ρ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ написани ΠΊΠ°ΠΊΡ‚ΠΎ Π½Π° Python, Ρ‚Π°ΠΊΠ° ΠΈ Π½Π° всСки Π΄Ρ€ΡƒΠ³ Π΅Π·ΠΈΠΊ.

ЛСсно ΠΈ Π±ΡŠΡ€Π·ΠΎ Π΅ Π΄Π° сС ΠΏΠΈΡˆΠ°Ρ‚. НапримСр, ΠΌΠΎΠ΄ΡƒΠ»ΡŠΡ‚ Π·Π° освСтяванС Π½Π° диска, ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ Π΅ прСдставСн ΠΏΠΎ-Π³ΠΎΡ€Π΅, ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° 265 Ρ€Π΅Π΄Π°.

Автоматизация Π½Π° замяната Π½Π° дисковС с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ansible

На Π½Π°ΠΉ-ниското Π½ΠΈΠ²ΠΎ сС Π½Π°ΠΌΠΈΡ€Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π°. Π—Π° Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ написахмС ΠΎΡ‚Π΄Π΅Π»Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, сводна абстракция Π½Π°Π΄ Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½ΠΈΡ‚Π΅ ΠΈ софтуСрнитС RAID, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ‚Π΅ заявки.

Автоматизация Π½Π° замяната Π½Π° дисковС с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ansible

Най-силнитС страни Π½Π° Ansible са простотата ΠΈ яснитС playbook-ΠΈ. Π‘Ρ‡ΠΈΡ‚Π°ΠΌ, Ρ‡Π΅ трябва Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΈ Π΄Π° Π½Π΅ сС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ‚ ΡΡ‚Ρ€Π°ΡˆΠ½ΠΈ yaml-Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎ количСство условия, shell-ΠΊΠΎΠ΄ ΠΈ Ρ†ΠΈΠΊΠ»ΠΈ.

Ако искатС Π΄Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ нашия ΠΎΠΏΠΈΡ‚ с Ansible API, ΠΈΠΌΠ°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ Π΄Π²Π΅ Π½Π΅Ρ‰Π°:

  • Playbook_executor ΠΈ ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ playbook Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π΄Π°Π΄Π΅Π½ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚. Има Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ Π·Π° ssh-сСсии, Π½ΠΎ няма Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ Π·Π° playbook. Ако сС ΠΎΠΏΠΈΡ‚Π°ΠΌΠ΅ Π΄Π° Π΄Π΅ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°ΠΌΠ΅ диск, ΠΊΠΎΠΉΡ‚ΠΎ Π²Π΅Ρ‡Π΅ Π½Π΅ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π° Π² систСмата, playbook Ρ‰Π΅ сС изпълнява Π±Π΅Π·ΠΊΡ€Π°ΠΉΠ½ΠΎ, Π·Π°Ρ‚ΠΎΠ²Π° Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° ΠΎΠ±Π²ΠΈΠ΅ΠΌ старта ΠΌΡƒ Π² ΠΎΡ‚Π΄Π΅Π»Π΅Π½ wrapper ΠΈ Π΄Π° Π³ΠΎ ΡƒΠ±ΠΈΠ²Π°ΠΌΠ΅ ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚.
  • Ansible Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° fork-процСси, Π·Π°Ρ‚ΠΎΠ²Π° Π½Π΅Π³ΠΎΠ²ΠΎΡ‚ΠΎ API Π½Π΅ Π΅ потокобСзопасно. ΠŸΡƒΡΠΊΠ°ΠΌΠ΅ всичкитС Π½ΠΈ playbook-ΠΈ Π΅Π΄Π½ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎ.

Π’ ΠΊΡ€Π°ΠΉΠ½Π° смСтка успяхмС Π΄Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ подмяната Π½Π° ΠΎΠΊΠΎΠ»ΠΎ 80 % ΠΎΡ‚ дисковСтС. ΠžΠ±Ρ‰ΠΎ Π²Π·Π΅Ρ‚ΠΎ, скоростта Π½Π° подмяна сС Π΅ ΡƒΠ΄Π²ΠΎΠΈΠ»Π°. ДнСс Π°Π΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚ просто ΠΏΠΎΠ³Π»Π΅ΠΆΠ΄Π° ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚Π° ΠΈ Π²Π·Π΅ΠΌΠ° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π΄Π°Π»ΠΈ Π΄Π° смСни диска ΠΈΠ»ΠΈ Π½Π΅, Π° слСд Ρ‚ΠΎΠ²Π° ΠΏΡ€Π°Π²ΠΈ Π΅Π΄ΠΈΠ½ ΠΊΠ»ΠΈΠΊ.

Но сСга Π·Π°ΠΏΠΎΡ‡Π²Π°ΠΌΠ΅ Π΄Π° сС сблъсквамС с Π΄Ρ€ΡƒΠ³ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ: някои Π½ΠΎΠ²ΠΈ администратори Π½Π΅ знаят ΠΊΠ°ΠΊ Π΄Π° смСнят дисковСтС. πŸ™‚

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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster