Обнаружение поставщика инфраструктуры в марионетке

Примечание: мы используем Марионеточное автономное (ведущее устройство меньше), т.е. марионетка применяются.

Обычно, при развертывании веб-приложения существует много серверных служб и приложений, которые работают позади обращенного к передней стороне приложения - вещи как база данных, поисковый сервер, кэшируя сервер, другие внутренние сервисы, и т.д. Эти сервисы, не должен слушать в интерфейсах сети общего пользования. Вместо этого они могут послушать в интерфейсе частной сети, и все приложения могут связаться по этому надежно. Это - что-то, что я уже делаю.

Проблема возникает, когда Вы хотите автоматически развернуть эти сервисы. Мы используем Марионетку для инфра настройки. Когда эти сервисы развертываются, мы зависим от фактов к вещам погрузки как ipaddress и имя хоста. В зависимости от того, где Ваша машина, название интерфейса отличается. Например, идентификаторы в машинах, обеспеченных Мягким Слоем, являются bond0, bond1, и т.д. и то же, обеспеченное Цифровым Океаном, eth0, eth1, и т.д. Из них, позволяет, говорят, что bond0 и eth0 являются открытыми интерфейсами и bond1, и eth1 являются частными.

Идеально, мы должны использовать те же Марионеточные сценарии для настройки инфраструктуры, неважно, где Вы настраиваете. И мы используем hiera для того, чтобы взять значения по умолчанию для классов. Так идеально я хотел бы иметь факты как ipaddress_public, ipaddress_private доступный, и затем я могу использовать их однако, я хочу для какой бы ни класс в Марионетке. И факт должен скрыть окровавленные детали выяснения, где машина т.е. Мягкий Слой, Цифровой Океан, AWS, и т.д. и получите меня факт для задания. Или, я могу создать иерархию для поставщика инфраструктуры в hiera и иметь различные значения по умолчанию для различных поставщиков инфраструктуры.

Проблема, я не знаю, как выяснить поставщика для конкретной машины. Так, например, если я даю Вам машину для работы Марионетки, может там быть надежный способ выяснить, работает ли это на Мягком Слое, Цифровом Океане, AWS, и т.д.? Как делают Вас, парни решают проблемы как они?

3
задан 18 February 2015 в 08:17
1 ответ

Это явно не так просто, как кажется на первый взгляд. В случае с AWS существуют специальные факты, которые говорят о том, что вы используете AWS, например:

# facter -p | grep ^ec2 |wc -l
33

Общедоступный IP-адрес сохраняется в факте «ec2_public_ipv4». Итак, AWS легко обнаружить.

Но в DigitalOcean - внутри самой виртуальной машины нет ничего, что указывало бы на то, что она работает в DigitalOcean. Единственный интересный факт:

# facter -p | grep kvm
virtual => kvm

Amazon использует xenhvm. Если SoftLayer использует что-то другое, кроме xen / kvm, вы можете использовать этот факт в качестве отправной точки. Вне всякого сомнения, этот метод не очень надежен, потому что каждый из них может изменить технологию virt в какой-то момент времени, что может сделать все ваши виртуальные машины на этом провайдере неработоспособными.

Я бы посоветовал вам написать свой собственный факт, который учтет все ваши знания о различных облачных провайдерах, которые вы используете, а затем решит, какие IP-адреса будут предоставлять вам скрипты. К сожалению, другого пути нет.

2
ответ дан 3 December 2019 в 07:00

Теги

Похожие вопросы