Служба Cloud Assembly поддерживает интеграцию с Puppet Enterprise — программным обеспечением для управления конфигурациями.

Когда инструмент Puppet Enterprise добавляется в Cloud Assembly в качестве внешней системы, по умолчанию его возможности доступны для всех проектов. Можно ограничить доступ, сделав систему Puppet доступной только определенным проектам.

Чтобы добавить интеграцию Puppet Enterprise, потребуется имя главного сервера Puppet, а также его имя узла или IP-адрес.

Журналы Puppet можно найти в следующем расположении в том случае, если необходимо проверить их на наличие ошибок или определенной информации.

Описание Расположение журнала
Журнал для создания и установки связанных событий

Журналы находятся на развернутом компьютере по адресу `~/var/tmp/vmware/provider/user_defined_script/$(ls -t ~/var/tmp/vmware/provider/user_defined_script/ | head -1)/`.

Полные журналы см. в файле log.txt. Дополнительные сведения о журналах агента Puppet см. в разделе https://puppet.com/docs/puppet/4.8/services_agent_unix.html#logging
Журнал для задач Puppet, связанных с удалением и запуском Журналы находятся в Puppet Enterprise по адресу `~/var/tmp/vmware/provider/user_defined_script/$(ls -t ~/var/tmp/vmware/provider/user_defined_script/ | head -1)/`. Полные журналы см. в файле log.txt.

Процедура

  1. Выберите пункт Инфраструктура > Подключения > Интеграции и нажмите Добавить интеграцию.
  2. Выберите Puppet.
  3. Введите необходимую информацию на странице настройки Puppet.
    Чтобы интеграция Puppet функционировала правильно, указанные учетные данные должны быть действительными как для учетной записи SSH, так и для учетной записи API-интерфейса. Также у указанных учетных записей пользователей ОС и приложений должны совпадать имена пользователей и пароли.
  4. Нажмите Проверить, чтобы проверить интеграцию.
  5. Нажмите кнопку Добавить.

Результаты

Приложение Puppet доступно для использования при работе с облачными шаблонами.

Дальнейшие действия

Добавьте компоненты Puppet в нужные облачные шаблоны.

  1. В разделе «Облачные шаблоны» в Cloud Assembly выберите Puppet в разделе «Управление содержимым» в меню облачного шаблона и перетащите компонент Puppet на холст.
  2. Введите свойства Puppet на панели справа.
    Свойство Описание
    Сервер Введите имя основного компьютера Puppet, используемого с этим облачным шаблоном.
    Среда Выберите среду для основного компьютера Puppet.
    Роль Выберите роль Puppet, которая будет использоваться с этим облачным шаблоном.
    Интервал между запусками агента Частота, с которой агент Puppet выполняет опрос основного компьютера Puppet для получения сведений о конфигурации, применяемых к развернутым виртуальным машинам, связанным с этим облачным шаблоном.
  3. Перейдите на вкладку Код на панели справа, чтобы просмотреть код YAML для свойств конфигурации Puppet.

При добавлении компонента Puppet в облачный шаблон в файл YAML можно добавить свойство installMaster, чтобы оно указывало на компонент Puppet Install Master, также называемый Compile Master. Значением этого свойства может быть IP-адрес или имя узла компонента Puppet Compile Master. Это свойство позволяет получить доступ к расширенным возможностям для развернутых виртуальных машин Puppet, а также обеспечивает поддержку дополнительных действий по регулярному обслуживанию.

  Puppet_Agent:
    type: Cloud.Puppet
    properties:
      account: PEIntegrationAccount
      environment: production
      role: 'role::linux_webserver'
      host: '${CentOS-Puppet.*}'
      username: root
      password: password123!
      installMaster: my-pe-compile-master.example.com
      agentConfiguration:
        certName: '${CentOS-Puppet.address}'
      osType: linux
      count: 1
Примечание: Хотя пользователь определен здесь как пользователь root, в облачном шаблоне может быть настроен любой пользователь, включенный в список sudoers.

В некоторых случаях vRealize Automation по умолчанию передает определенные сведения о компьютерах на виртуальные машины Puppet в виде фактов. Настраиваемые факты не поддерживаются для компьютеров с Windows. На компьютерах с Linux некоторая информация передается по умолчанию, а дополнительную информацию пользователи могут передавать с помощью настраиваемых свойств.

На данные, передаваемые на компьютеры Puppet, работающие под управлением Linux, накладываются определенные ограничения. На виртуальные машины Puppet передаются настраиваемые свойства ресурсов узла и агента Puppet. Настраиваемые свойства сетевых ресурсов не передаются на виртуальную машину. Передаваемые элементы включают в себя простые, логические свойства, а также настраиваемые именованные и сложные типы, например вложенные карты с массивами.

В следующем примере показано, как различные настраиваемые ресурсы могут вызываться для ресурсов узлов.

resources:
  Puppet-Host:
    type: Cloud.AWS.EC2.Instance
    properties:
      customer_specified_property_on_ec2_resource: "property"
      customer_specified_property_on_network_resource_that_should_also_be_a_fact_and_is_boolean: true
      CustomerNameStuff: "zone A"
      try_map:
      key: value
      keytwo: value
      nested_array:
        - one
        - two
        - true
      try_array:
        - one
        - two
        -three:
           inner_key: value

Если команда очистки Puppet (purge) приводит к ошибкам, то в большинстве случаев служба vRealize Automation будет игнорировать такие ошибки для узлов и выполнять операцию удаления узла. Даже если для определенного узла сертификат не будет найден, vRealize Automation продолжит выполнять операцию удаления. Если по какой-либо причине vRealize Automation не сможет продолжить операцию удаления узла, можно нажать кнопку «Удалить» в меню «Действия » на странице «Развертывания», чтобы открыть диалоговое окно, в котором будет можно продолжить операцию удаления узла. Аналогичный рабочий процесс выполняется при удалении интеграции Puppet из облачного шаблона и последующем применении шаблона к развертыванию. Этот рабочий процесс запускает операцию очистки узла, которая выполняется, как описано выше.

Для интеграции с Puppet Enterprise требуется общедоступный IP-адрес. Если для компьютера Puppet Enterprise не настроен общедоступный IP-адрес, будет использоваться IP-адрес первого сетевого адаптера.

Если сетевой адаптер компьютера, подготовленного Puppet и работающего на компьютере vSphere, имеет несколько IP-адресов, для указания IP-адреса, который нужно использовать для подключений, можно применить свойство YAML primaryAddress в облачных шаблонах. Если свойство primaryAddress назначено сетевому адаптеру, Puppet будет использовать IP-адрес этого сетевого адаптера. В качестве основного можно назначить только один сетевой адаптер. Пример использования свойства primaryAddress см. в следующем фрагменте кода YAML.

BaseVM:
  type: Cloud.vSphere.Machine
  properties:
   image: photon
   count: 2
   customizationSpec: Linux
   cpuCount: 1
   totalMemoryMB: 1024
   networks:
    - network: '${resource.dev.id}'
     deviceIndex: 0
     primaryAddress: true
     assignment: static
    - network: '${resource.prod.id}'
     deviceIndex: 1
     assignment: static

Если свойство primaryAddress не задано ни для одного сетевого адаптера виртуальной машины, логика облачных шаблонов при выборе IP-адресов по умолчанию будет соответствовать текущему поведению.

Если необходимо настроить интеграцию Puppet для пользователя, не являющегося пользователем root, с привилегиями Sudo, у него должны быть разрешения на выполнение следующих команд.
  • У пользователя должны быть разрешения на создание каталога фактов Puppet и файла.
    sudo mkdir -p /etc/puppetlabs/facter/facts.d 
           sudo tee /etc/puppetlabs/facter/facts.d/puppet_cloudassembly_facts.json 
    
  • У пользователя должны быть разрешения на запуск Puppet:
    sudo /opt/puppetlabs/bin/puppet resource service puppet ensure=stopped
           sudo /opt/puppetlabs/bin/puppet agent --test --color=false --detailed-exitcode
  • У пользователя должны быть разрешения на удаление файлов запроса подписи сертификата, включая файлы csr_attributes.yaml и CSR pem:
     sudo rm /etc/puppetlabs/puppet/csr_attributes.yaml
           sudo rm -f /etc/puppetlabs/puppet/ssl/certificate_requests/*