В своих системах я использую экспортированные ресурсы и коллекция ресурсов для управления / etc / ssh / known_hosts ref моих систем. Это отлично работает для всех моих SSH-хостов, которые управляются через марионетку. Но у меня также есть системы, которые не управляются марионеткой (коммутаторы, маршрутизаторы и т. Д.), И у меня нет никаких непосредственных планов начать ими управлять.
Есть ли какие-нибудь изящные способы получить ключи хоста для этих неуправляемых систем в марионетке? Сейчас у меня все они в одном большом уродливом классе, но должен быть способ получше. Я думал о том, чтобы как-то попытаться переместить ключи для этих хостов в hiera или что-то еще, но я не нашел решения, которое не было бы уродливым.
Есть ли у кого-нибудь хороший метод / образец, которому я могу следовать здесь?
Я думал о том, чтобы как-то попытаться переместить ключи для этих хостов в hiera или что-то еще, но я не нашел решения, которое не было бы уродливым.
Есть несколько способов добиться этого. Я стараюсь, чтобы мои классы были общими, со всеми данными конфигурации в hiera. Когда я имею дело с коллекциями данных, я стараюсь использовать хеш-код hiera, чтобы мне никогда не приходилось менять свой класс или определять код.
1: Используйте хеш-хеш хранить коллекцию ключей.
hiera_key_hash:
key-1:
name: cisco500
type: router
key: xxx
key-2:
name: cisco100
type: switch
key: xxx
2: Создать класс который вызывает create_resource для каждого ключа (он вызывает определение «ключ»).
class keys {
create_resources( "key", hiera('hiera_key_hash') )
}
3: Создать определение это делает работу для каждого ключа.
define key($name, $type, $key) {
// code goes here
}
Примечание. На каком-то этапе вы можете хранить конфиденциальную информацию в своей иерархии. Возможно, вы захотите зашифровать некоторые важные для вас значения.
Хм ... может быть, в Хиере, с hiera_array
сбор данных, передача этого массива в ресурсы через определенный тип? Поскольку вам нужны имя хоста и ключ, вам нужно либо поместить их в строку, либо split()
это в определенном типе, или в массиве есть что-то более сложное (возможно, хеш).
По-прежнему головная боль - управлять его заполнением и поддерживать его в актуальном состоянии; может быть, небольшой скрипт со списком узлов для подключения, сбора ключей и генерации данных hiera?