Модуль эластичного поиска марионеток (класс против определения)

Я пытаюсь использовать следующий модуль elasticsearch для puppet (с hiera).

Например, я пытаюсь настроить node.name, который можно увидеть в файле instance.pp.

Однако elasticsearch::instance не является классом, он только определен и, похоже, используется в других классах (в частности, elasticsearch в init.pp).

Я попытался создать его как класс, а также настроить через что-то вроде:

elasticsearch::elasticsearch::instance::node.name: 'myname' в моем .yaml, но безрезультатно.


person Dax Durax    schedule 29.05.2015    source источник
comment
Пожалуйста, уточните свой вопрос, потому что сейчас мне трудно понять, в чем реальная проблема. Вы хотите знать разницу между классом и определением в puppet / Вы хотите знать, как создать экземпляр elasticsearch::instance или, может быть, как создать такой экземпляр с помощью hiera?   -  person kkamilpl    schedule 30.05.2015


Ответы (2)


Я постараюсь объяснить все проблемы, которые вы упомянули.

  1. Класс и определить. Основное отличие состоит в том, что классы являются синглтонами в puppet.

  2. Если вы хотите создать экземпляр elasticsearch::instance, просто добавьте в манифест марионетки:

elasticsearch::instance { 'some_name': }

точно так же, как в примерах.

  1. Целью использования hiera с puppet является предоставление правильных значений манифестам puppet в зависимости от среды развертывания. Вы не можете создать ресурс, просто определив его в hiera. Если вы определяете какой-либо ресурс в hiera, используйте функцию create_resource для создания экземпляра. . Прочтите следующую статью. Как в примере, эквивалент создания экземпляра в манифесте марионетки:

    users { 'gary':
      ensure   => present,
      uid      => '5001',
      gid      => 'gary',
      shell    => 'zsh',
      password => $password,
    }
    

есть следующее определение в иере

#some.yaml
users:
  gary:
    ensure: 'present'
    uid: '5001'
    gid: 'gary'
    shell: 'zsh'
    password: 'biglongpasswordhash'

с созданием экземпляра в манифесте кукол:

$users = hiera('users')
create_resources('users')
person kkamilpl    schedule 30.05.2015

Судя по вашему описанию, вы понимаете разницу между class и define. Чтобы ответить на ваш вопрос напрямую, он должен быть организован следующим образом:

---
elasticsearch::instances:
  es-01:
    config:
      node.name: 'es-01'
  es-02:
    config:
      node.name: 'es-02'

multipleinstances.yaml

person BMW    schedule 31.05.2015