Дублирование записей хоста в Foreman при создании виртуальной машины Foreman в OpenStack

Мне удалось соединить Foreman и OpenStack, чтобы я мог создавать виртуальные машины в OpenStack с помощью веб-интерфейса Foreman. Я использую cloud-init или, как его называет Форман, шаблон предоставления пользовательских данных для подготовки вновь созданного экземпляра.

Для тестирования я использую этот скрипт cloud-config:

#cloud-config: users: - name: danil groups: sudo shell: /bin/bash sudo: ['ALL=(ALL) NOPASSWD:ALL'] chpasswd: list: | danil:<hidden> root:<hidden> expire: False runcmd: - apt-get install -y puppet - sed -i -e 's/\[main\]/\[main\]\nserver=foreman.domain.com/' /etc/puppet/puppet.conf - puppet agent --test - puppet agent --enable - puppet agent --test

Я добавляю новый хост, и после того, как виртуальная машина раскручивается, я могу видеть его как хост с именем new-host.domain.com с именем модели OST2, именем, которое я использую для вычислительного ресурса OpenStack в Foreman. Внутри этого хоста я могу выполнять некоторые основные задачи, такие как выключение виртуальной машины, ее удаление и так далее.

Облачный конфигурационный скрипт выполняет свою работу, то есть устанавливает марионетку и делает эту виртуальную машину управляемой марионеткой через интеллектуальный прокси-сервер Foreman. Как только puppet завершает инициализацию хоста, я вижу дубликат хоста с именем "new-host". В случае этого дублирующего хоста у него есть название модели "OpenStack Nova". Он управляется марионеткой, но ни одна из задач OpenStack, доступных для new-host.domain.com, не существует.

Другими словами, у меня есть две записи для одного хоста. Одна запись может использоваться для управления виртуальной машиной, а другая - для управления конфигурацией операционной системы с помощью puppet.

Есть ли способ объединить эти две записи, чтобы избежать дублирования записей?

YAML, который соответствует недавно созданной виртуальной машине new-host.domain.com:

classes: {} parameters: puppetmaster: puppet.domain.com hostgroup: Provision from puppet.domain.com root_pw: <hidden> puppet_ca: puppet.domain.com foreman_env: production owner_name: Admin User owner_email: root@domain.com foreman_subnets: [] foreman_interfaces: - mac: ip: 172.21.82.102 type: Interface name: new-host.vccap.de attrs: {} virtual: false link: true identifier: '' managed: true primary: true provision: true subnet: environment: production

Спасибо за ваши ответы!

С наилучшими пожеланиями,

Данил

1 ответ

Спасибо m0dlx за оперативный ответ на мой вопрос. Я также нашел полезный шаблон Provisioning, который был доступен в установке Foreman, который также решает эту проблему. Шаблон называется "Кикстарт пользовательских данных" и предназначен для Fedora и CentOS, но с небольшими изменениями также подходит для Ubuntu.

Другие вопросы по тегам