Consegui conectar o Foreman e o OpenStack, para criar VMs no OpenStack usando a interface da Web do Foreman. Estou usando o cloud-init, ou como Foreman o chama, modelo de provisionamento de dados do usuário para provisionar uma instância recém-criada.
Para fins de teste, estou usando este script 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
Estou adicionando um novo host e depois que a VM é girada, posso vê-lo como um host com o nome new-host.domain.com com o nome do modelo OST2, o nome que estou usando para o recurso de computação do OpenStack em Capataz.
Dentro desse host eu posso fazer algumas tarefas básicas, como desligar a VM, excluí-lo e assim por diante.
O script de configuração em nuvem faz o seu trabalho, ou seja, instala o fantoche e torna essa VM gerenciável por meio do fantoche por meio do proxy inteligente Foreman. Assim que o fantoche termina a inicialização do host, vejo um host duplicado com o nome "novo host". No caso desse host duplicado, ele possui o nome do modelo "OpenStack Nova". É gerenciável pelo fantoche, mas nenhuma das tarefas do OpenStack disponíveis para o new-host.domain.com está lá.
Em outras palavras, tenho dois registros para o mesmo host. Um registro pode ser usado para gerenciar uma VM e outro registro para gerenciar a configuração do sistema operacional com a ajuda do fantoche.
Existe alguma maneira de mesclar esses dois registros, a fim de evitar esses registros duplicados?
O YAML que corresponde à nova VM criada 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: [email protected]
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
Obrigado por suas respostas!
Atenciosamente,
Danil