Как я могу создать экземпляр определенного типа из манифеста в моем пользовательском типе на основе Ruby? - PullRequest
0 голосов
/ 04 июня 2019

Я пишу пользовательский тип ресурса Puppet в Ruby и хочу использовать тип из другого модуля.Этот другой тип определен в коде Puppet.

Из документации я могу сделать:

Puppet::Type.type(:file).new(file_opts)

Это работает для типов, определенных в ruby, но не для типов, определенных в .pp файлах с использованием

define sysctl (){...}

Это базовое определение типа Ruby.Я переопределяю generate, чтобы в конечном итоге добавить дополнительный ресурс вместе с моим пользовательским.Вот как выглядит приведенный выше пример type(:file):

Puppet::Type.newtype(:network_interface) do
  ensurable

  newparam(:name) do
    isnamevar
    desc 'The name of the physical network device'
  end

  def create
  end

  def generate
    [Puppet::Type.type('sysctl').new(
      name: "net.ipv4.conf.eth1.promote_secondaries",
      value: 1
    )]
  end
end

Я получаю эту ошибку:

Network_interface[eth1]: Failed to generate additional resources using 'generate': undefined method `new' for nil:NilClass

Я перерыл код Puppet, чтобы попытаться понять, как работает Puppetсоздает типы из формы define, но не повезло.

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