Есть ли какой-либо готовый способ / настраиваемый факт / и т. Д., Чтобы Puppet мог реагировать по-другому, если данный хост и порт недоступны из управляемой системы?
Например, у меня есть продукты, которые используют несколько каталогов для чтения пользовательской информации.
Обычно я бы хотел, чтобы первым был указан самый быстрый и ближайший сервер. Если он недоступен, я бы хотел, чтобы мой модуль мог переписать файл конфигурации, чтобы перейти к нижним записям в списке.
Значит, это для замены чего-либо через переменную конфигурации в шаблоне?
Я думаю, что лучший способ сделать это - написать пользовательский факт в Ruby, который выполняет тестирование скорости и достижимости, а затем использовать этот пользовательский факт для установки строки в шаблоне. Это кажется разумным для вашего варианта использования?
Взгляните на stdlib марионетки. Это позволяет вам помещать пользовательские данные или скрипты в /etc/facter/facts.d
(описание).
Так что вы можете, например, есть небольшой сценарий /etc/facter/facts.d/neighbour.sh
добавить новую переменную в facter -p
:
#! /bin/sh
if ping -nc 1 dirserver.fnqd > /dev/null; then
echo 'dirserver_available=true'
else
echo 'dirserver_available=false'
fi
С помощью небольшого скрипта вы можете добавить пользовательские факты, например dirserver_1
, dirserver_2
и т. д. в порядке задержки.