Мне удалось подключить Foreman и OpenStack, чтобы я мог создавать виртуальные машины в OpenStack с помощью веб-интерфейса Foreman. Я использую cloud-init или, как его называет Форман, шаблон предоставления пользовательских данных, чтобы подготовить только что созданный экземпляр.
Для тестирования я использую этот сценарий облачной конфигурации:
#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. Как только марионетка завершает инициализацию хоста, я вижу повторяющийся хост с именем «новый хост». В случае этого повторяющегося хоста он имеет название модели "OpenStack Nova". Он управляется марионеткой, но там нет ни одной из задач OpenStack, доступных для new-host.domain.com.
Другими словами, у меня есть две записи для одного и того же хоста. Одна запись может использоваться для управления виртуальной машиной, а другая - для управления конфигурацией операционной системы с помощью марионетки.
Есть ли способ объединить эти две записи, чтобы избежать дублирования записей?
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
Спасибо за ответы!
С уважением,
Данил
Спасибо m0dlx за оперативный ответ на мой вопрос. Я также нашел полезный шаблон Provisioning, который был доступен в установке Foreman, который также решает эту проблему. Шаблон называется «кикстарт пользовательских данных» и предназначен для Fedora и CentOS, но с небольшими изменениями также подходит для ubuntu.