Дублирование записей хоста в 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.