среда, 29 мая 2013 г.

SaltStack - Ищем "Мёртвые души‎"










Начав использование SaltStack я столкнулся с проблемой "Как узнать какие из машин мне не ответили?"
Конечно может быть я плохо искал, но ничего полезного не обнаружил.

Зато все знают как узнать какие машины доступны, это просто:
salt '*' test.ping
Это может решить проблему в случае у вас меньше 10-ка управляемых хостов.
Но если их несколько 10-тков или 100-тен то быть уверенным в том что при деплое проекта на  все машины будет залит код, и всё будет корректно настроено.


Таким образом я дошел до bash'ового скрипто-ложества.

Вообще есть мысль оформить это модулем к Salt'y и запушить в проект, но отложим это на то время когда будет время.

#!/bin/bash -   
#title          :salt_dead_spirits.sh
#description    :The script for search a dead spirits in SaltStack
#author         :Artem Chekunov <scorp.dev.null@gmail.com>
#date           :20130529
#version        :0.1    
#usage          :./salt_dead_spirits.sh
#notes          :       
#bash_version   :4.2.37(1)-release
#============================================================================

_Tfile=$(tempfile)

salt '*' test.ping | grep -v True | sed -e 's/://g' > ${_Tfile}
salt-key -L | grep -v Keys >> ${_Tfile} 

cat ${_Tfile} | sort | uniq -c | sort -n | awk '{ if($1 ~ 1) print $2 }'

rm -f ${_Tfile}
На выходе должен появиться список хостов(ключей) которые не доступны в данный момент.

ВАЖНО: Удалять мёртвые души поскольку их наличие заметно замедляет групповое управление нодами  

ЕЩЁ ВАЖНО: Кстати говоря, заметил такую вещь.
Иногда миньоны анонсируют свои ключи и для имени хоста и для полного имени хоста с доменом пример(myhost1, myhost1.mycompany.ltd) в таких случаях миньоны будут отвечать только при запросе на myhost1.mycompany.ltd Соответственно чтобы не путаться необходимо удалить ключи привязанные к хостнэйму без домена, пример(salt-key -d myhost1)

Enhanced by Zemanta