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

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

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

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

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

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

ОК β€” Ρ‚ΠΎΠ²Π° Π΅ гигантски сСрвис, ΠΊΠΎΠΉΡ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΡ‚ ΠΌΠΈΠ»ΠΈΠΎΠ½ΠΈ Ρ…ΠΎΡ€Π°. ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° сС ΠΎΡ‚ ΠΎΠΊΠΎΠ»ΠΎ 7 хиляди ΡΡŠΡ€Π²ΡŠΡ€Π°, Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈ Π² 4 Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π΄Π°Ρ‚Π° Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠ²Π΅. Π’ ΡΡŠΡ€Π²ΡŠΡ€ΠΈΡ‚Π΅ ΠΈΠΌΠ° ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ 70 хиляди диска. Ако Π³ΠΈ Π½Π°Π³Ρ€ΡŠΠ΄ΠΈΠΌ Π΅Π΄ΠΈΠ½ Π²ΡŠΡ€Ρ…Ρƒ Π΄Ρ€ΡƒΠ³, Ρ‰Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΊΡƒΠ»Π° с височина Π½Π°Π΄ 1 ΠΊΠΌ.

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

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

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

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

НакопитСлитС Π½Π΅ са ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. Π—Π° тяхното ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ слСди Zabbix. НаблюдавамС ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ Π² Syslog Π·Π° Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΏΡ€ΠΈ запис/Ρ‡Π΅Ρ‚Π΅, Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° HW/SW RAID, слСдим 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" Π³ΠΎ Π½Π°Ρ€ΠΈΡ‡Π°ΠΌΠ΅ "Π“ΠΎΡ‚ΠΎΠ² Π·Π° смяна". А останалитС статуси ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ скрити Π² ΠΏΠ°Π΄Π°Ρ‰ΠΎ мСню, Π·Π° Π΄Π° Π½Π΅ дразнят ΠΎΡ‡ΠΈΡ‚Π΅. Но Π΅ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ Π΄Π° Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Ρ‚Π΅ Ρ…ΠΎΡ€Π°Ρ‚Π°, Π° Π΄Π° ΠΈΠΌ Π΄Π°Π΄Π΅Ρ‚Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π΄Π° направят ΠΏΡ€Π΅Ρ…ΠΎΠ΄.
    Π˜Π·ΡΡΠ½ΡΠ²Π°ΠΉΡ‚Π΅ стойността Π½Π° Π½ΠΎΠ²ΠΎΠ²ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΡΡ‚Π°. ΠšΠΎΠ³Π°Ρ‚ΠΎ Ρ…ΠΎΡ€Π°Ρ‚Π° Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚, Ρ‚Π΅ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ°Ρ‚ Π½ΠΎΠ²Π°Ρ‚Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°. Π—Π° нас бСшС ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°ΠΆΠ½ΠΎ Ρ…ΠΎΡ€Π°Ρ‚Π° Π΄Π° Π½Π΅ ΠΊΠ»ΠΈΠΊΠ²Π°Ρ‚ само Π½Π° цСлия процСс, Π° Π΄Π° ΠΌΠΈΠ½Π°Ρ‚ ΠΏΡ€Π΅Π· Π½Π΅Π³ΠΎ. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Ρ…ΠΌΠ΅ автоматизация Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° Ρ‚ΠΎΠ²Π°.
  • Π§Π°ΠΊΠ°ΠΉΡ‚Π΅, Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΉΡ‚Π΅, Ρ€Π°Π·Π±ΠΈΡ€Π°ΠΉΡ‚Π΅.
    ΠžΡ‚Π½Π΅ Π½ΠΈ мСсСц Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Ρ‚Π°, тСхничСска рСализация, срСщи ΠΈ обсъТдания. А Π·Π° внСдряванС β€” ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ Ρ‚Ρ€ΠΈ мСсСца. Видях ΠΊΠ°ΠΊ Ρ…ΠΎΡ€Π°Ρ‚Π° постСпСнно Π·Π°ΠΏΠΎΡ‡Π²Π°Ρ‚ Π΄Π° ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π½ΠΎΠ²ΠΎΠ²ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ. На ΠΏΡŠΡ€Π²ΠΈΡ‚Π΅ Π΅Ρ‚Π°ΠΏΠΈ имашС ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅Π³Π°Ρ‚ΠΈΠ²ΠΈΠ·ΡŠΠΌ. Но Ρ‚ΠΎΠΉ Π²ΡŠΠΎΠ±Ρ‰Π΅ Π½Π΅ зависСшС ΠΎΡ‚ самата ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°, ΠΈ Π½Π΅ΠΉΠ½Π° тСхничСска рСализация. НапримСр, Π΅Π΄ΠΈΠ½ администратор ползвашС Π½Π΅ Jira, Π° Jira плъгин Π² Confluence, ΠΈ някои Π½Π΅Ρ‰Π° Π½Π΅ ΠΌΡƒ бяха Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΈ. ΠŸΠΎΠΊΠ°Π·Π°Ρ…ΠΌΠ΅ ΠΌΡƒ Jira, ΠΏΡ€ΠΈ администратора нарасна продуктивността ΠΊΠ°ΠΊΡ‚ΠΎ ΠΏΠΎ ΠΎΠ±Ρ‰ΠΈΡ‚Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ, Ρ‚Π°ΠΊΠ° ΠΈ ΠΏΠΎ замяна Π½Π° дисковС.

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

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

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

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

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

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

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

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

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

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

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

Автоматизация Π½Π° замяната Π½Π° дисковСтС с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ansible
ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ DiskoBot, написано Π½Π° Python, ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎ провСрява Jira Π·Π° Π½ΠΎΠ²ΠΈ Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ. Π’ΠΎ забСлязва, Ρ‡Π΅ Π΅ ΠΈΠΌΠ°Π»ΠΎ Π½ΠΎΠ² Ρ‚ΠΈΠΊΠ΅Ρ‚ In progress, задСйства сС ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡΡ‚ ΠΏΠΎΡ‚ΠΎΠΊ, ΠΊΠΎΠΉΡ‚ΠΎ стартира 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: '… status = Open and "Disk Size" is EMPTY'
    interval: 180

  inprogress:
    jql: '…  and "Disk Size" is not EMPTY and "Device Name" is not EMPTY'
 
  ready:
    jql: '… and (labels not in ("dbot_ignore") or labels is 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, Π² ΠΊΠΎΠΉΡ‚ΠΎ Π΅ вградСният ΠΊΠ»ΡŽΡ‡ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β€” Ρ‚ΠΎΠΉ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° 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

Как ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ, Π½ΠΈΠ΅ Π³ΠΎ изнСсохмС Π² ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΠΎΠ±Ρ‰ Ρ„Π°ΠΉΠ» ΠΈ Π³ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π°ΠΌΠ΅ ΠΏΡ€ΠΈ нСобходимост, Π·Π° Π΄Π° Π½Π΅ повтарямС постоянно Π² playbooks. Π’ΡƒΠΊ Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π° 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

Π’Π°Π·ΠΈ Π·Π°Π΄Π°Ρ‡Π° ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»Ρ 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 ролята, ΠΌΠΎΠΆΠ΅ΠΌ просто Π΄Π° Π²ΠΊΠ»ΡŽΡ‡ΠΈΠΌ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ ΠΏΠΎ статуса Π½Π° Ρ‚ΠΈΠΊΠ΅Ρ‚Π° ΠΈΠ»ΠΈ ΠΎΠ±Ρ‰ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° всички, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ Π½Π° идСнтификация ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° Ρ‚ΠΎΠΊΠ΅Π½.

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