2016-08-19 1 views
-3

Я пытаюсь автоматизировать развертывание приложений с помощью шеф-повара.Передайте аргументы CLI шеф-клиенту, пока нож ssh

Я разработал поваренную книгу, которая является общей (работает на основе значений входных атрибутов) для развертывания API. Я сохранил все атрибуты в моей папке атрибутов.

Здесь проблема заключается в том, что я могу успешно развернуть пакет, если я сохраню номер версии пакета в файле атрибута. где, как и в действительности, номер пакета изменяется каждый раз при срабатывании конвейера CD. И я думаю использовать функцию CLI для chef-client для передачи параметров в виде файла JSON с параметром -j.

Проблема заключается в том, что я не хочу прикасаться к моей кулинарной книге, чтобы обновлять версию пакета каждый раз, когда запускается конвейер CD, потому что, если я обновляю что-либо в своей поваренной книге, я должен снова запустить CI для проверки cookbook и в то же время Я не могу хранить файл в каждом узле (диапазон от 50 до 500 серверов) и удаленно обновлять версию до запуска кеш-клиента.

Пожалуйста, помогите мне найти способ передать параметр удаленно на нож ssh. Или любые другие решения, которые решают эту проблему. Заранее большое спасибо.

ответ

0

Если версия пакета указана как атрибут, почему бы не установить его в среде шеф-повара?

https://docs.chef.io/environments.html

Используя этот подход, вы тогда есть выбор создания условий для каждой версии приложения:

  • myapp_v1
  • myapp_v2
  • myapp_v3

Или или просто обновить существующую среду для каждой GE в вашем процессе трубопровода:

  • mydev
  • Минт
  • MyTest
  • myqa

Дело в том, когда вы самонастройки новые узлы, которые можно указать на окружающую среду. Окружающая среда гарантирует, что каждый узел будет иметь те же настройки переопределения атрибутов узла (вы также можете обновить среду существующего узла),

И, наконец, неочевидным преимуществом использования среды является возможность «привязать», версии используемых вами кулинарных книг. На каком-то этапе вам придётся обновить свою кулинарную книгу, и это изменение должно быть также версией!

В заключение приведем пример среды, которая иллюстрирует принципы:

{ 
    "name": "mytest", 
    "cookbook_versions": { 
    "myappcookbook1": "= 1.0", 
    "myappcookbook2": "= 2.0" 
    }, 
    "override_attributes": { 
    "myapp1": { 
     "version": "1.0" 
    }, 
    "myapp2": { 
     "version": "2.0" 
    } 
    } 
} 
+0

поблагодарить Вас Марк O'Cooner !! ... это решение имеет смысл для моего problem..let меня это проба ... спасибо еще раз!!!! –

Смежные вопросы