Могу ли я развернуть один и тот же Charm на нескольких узлах для Juju/Openstack?

Могу ли я развернуть один и тот же Charm на нескольких узлах для Juju/Openstack?

У меня есть простой charm A, состоящий из одного хука (install), в котором есть bash-скрипт для установки стороннего программного обеспечения/драйверов для дополнительного оборудования, которое будет установлено на некоторых узлах.

Я хотел бы, чтобы администратор мог развернуть Charm на этих конкретных узлах, но Juju жалуется, когда я разворачиваю тот же Charm на другой машине.

Альтернатива гораздо более болезненна — вручную подключиться по SSH к каждому узлу и запустить установочный скрипт bash.

Так есть ли способ установить один и тот же амулет Juju на несколько узлов?

решение1

Да, лучшим способом сделать это будет сделать ваш брелок «подчиненным» для приложений, работающих на множестве машин, для которых он актуален.

Подчиненный чарм "присоединяется" к обычному приложению чарм и устанавливается везде, где установлен "обычный" чарм приложения. Обычно он используется для подключения приложения к какой-то вспомогательной системе, например, системе мониторинга. После того, как вы установили подчиненные отношения, всякий раз, когда основное приложение масштабируется на большее количество машин, подчиненный тоже будет устанавливаться.

Итак, в вашем примере у вас, вероятно, есть основное приложение, например, контроллер гипервизора "nova-compute" в OpenStack, который идет на машины, где ваш код имеет значение. Вы делаете свой charm подчиненным, а затем развертываете его, связанный с nova-compute. Теперь ваш код везде, куда идет nova-compute.

Есть сложности, о которых следует знать. Сначала будет установлено основное приложение, а ПОТОМ — подчиненное, поэтому, если вам нужно, чтобы ваш код запускался первым, вам нужно сделать это по-другому. В этом случае сделайте свой код основным приложением charm и разверните его первым. Затем вручную разместите другие блоки charm на тех же машинах с помощью "juju deploy foo --to X", где X — это машина, на которой уже установлено ваше приложение. Этот последний подход более кропотливый, потому что вам нужно решить, куда все будет помещаться, и явно разместить это там.

Связанный контент