我成功连接了 Foreman 和 OpenStack,这样我就可以使用 Foreman Web 界面在 OpenStack 中创建虚拟机。我使用 cloud-init(Foreman 称之为用户数据配置模板)来配置新创建的实例。
为了测试目的,我使用了这个云配置脚本:
#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,这是我在 Foreman 中用于 OpenStack 计算资源的名称。在该主机内,我可以执行一些基本任务,例如关闭虚拟机、删除它等等。
云配置脚本完成其工作,即它安装 puppet 并使此 VM 可通过 Foreman 智能代理由 puppet 管理。puppet 完成主机初始化后,我立即看到一个名为“new-host”的重复主机。对于该重复主机,其型号名称为“OpenStack Nova”。它可通过 puppet 管理,但 new-host.domain.com 可用的 OpenStack 任务均不存在。
换句话说,我对同一台主机有两条记录。一条记录可用于管理虚拟机,另一条记录可用于借助 puppet 管理操作系统配置。
有什么方法可以合并这两条记录,以避免这些重复的记录?
与新创建的虚拟机 new-host.domain.com 对应的 YAML 是:
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
谢谢您的回覆!
此致,
丹尼尔
答案1
感谢 m0dlx 为我的问题提供了可操作的答案。我还发现了有用的 Provisioning 模板,它在 Foreman 安装中可用,也解决了这个问题。模板称为“kickstart 用户数据”,适用于 Fedora 和 CentOS,但经过小幅修改后也适用于 ubuntu。