как использовать параметризованные классы для уменьшения базы кода - PullRequest
2 голосов
/ 31 августа 2011

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

Одна из подсистем - tomcat с веб-приложениями.У меня ~ 10 веб-приложений.Каждый из них имеет почти одинаковую процедуру для развертывания.Пока я использую классы.10 файлов - почти идентичные.

Когда я попытался использовать параметризованный класс, puppet позволяет мне создать его экземпляр только один раз.Затем я попытался создать «пустые» классы, которые наследуются от класса webapp.Это не работает так же, потому что puppet жалуется, что параметры не передаются родительскому классу.

Я не вижу метода, который мог бы абстрагировать код.Как это сделать?

Я бы хотел добиться:

   node {
     class {"webapp::first": param1 = one}
     class {"webapp::second": param1 = two}   
   }

, где первое и второе - это приложения, использующие одни и те же рецепты.

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

Ответы [ 2 ]

4 голосов
/ 28 сентября 2011

Вы можете использовать параметры в своих классах, но определяет больше, чем вы хотите.Цитирование официальной документации

Классы и определенные типы создаются аналогично, но используются совершенно по-разному.

Определенные типы используются для определения объектов многократного использования, которые будут иметь несколько экземпляров в данном задании.хост, поэтому> они не могут включать ресурсы, которые будут иметь только один экземпляр.Например, многократное использование одного и того же определения не может создать один и тот же файл.

см. http://docs.puppetlabs.com/guides/language_guide.html#resource-collections

0 голосов
/ 17 апреля 2013

попробуйте использовать пользовательские классы типов, которые по своей природе одноэлементны

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...