如何让maas的cloud-init客户端选择内部镜像?

如何让maas的cloud-init客户端选择内部镜像?

我们的 maas 局域网无法访问互联网,并且有一个内部 apt-mirror 站点 192.168.3.6。我更改了 maas 服务器的 snippets/maas_proxy 文件的镜像集,如下所示:

d-i     mirror/country string manual
d-i     mirror/http/hostname string 192.168.3.6
d-i     mirror/http/directory string /ubuntu
d-i     mirror/http/proxy string

我部署了两个 maas 节点,仪表盘显示两个节点的状态都是 ready,但是节点的 cloud-init 客户端把 apt 的 sources.list 改成了这样:

## Note, this file is written by cloud-init on first boot of an instance
## modifications made here will not survive a re-bundle.
## if you wish to make changes you can:
## a.) add 'apt_preserve_sources_list: true' to /etc/cloud/cloud.cfg
##     or do the same in user-data
...
deb http://archive.ubuntu.com/ubuntu precise main
deb-src http://archive.ubuntu.com/ubuntu precise main
...

直接使用 cobbler install node(不用maas),节点apt的sources.list如下:

...
deb http://192.168.3.6/ubuntu precise main
deb-src http://192.168.3.6/ubuntu precise main
...

我的问题是:

  1. 如何在 maas 中设置用户数据?这样我就可以将 cloud-init 的镜像的 url 设置为 192.168.3.6 或阻止 cloud-init 更改镜像的 url。
  2. Maas 节点的文件 /home/ubuntu/.ssh/authorized_keys 为空。是否由镜像的设置导致?

答案1

感谢您报告此事。我已打开错误 1006966针对上游 maas 来解决这个问题。

目前,解决这个问题的最简单方法可能是让 late_command 安装一个文件到 /etc/cloud/cloud.cfg 中,内容如下:

# /etc/cloud/cloud.cfg.d/99-local-mirror-only.cfg
apt_preserve_sources_list: true

未经测试,但您可以通过执行以下操作来实现:

--- /var/lib/cobbler/kickstarts/maas.preseed.dist   2012-05-31 15:37:06.689109923 +0000
+++ /var/lib/cobbler/kickstarts/maas.preseed    2012-05-31 15:37:43.293109690 +0000
@@ -90,4 +90,5 @@
 d-i    preseed/late_command string true && \
        $SNIPPET('maas_sudoers') && \
        $SNIPPET('maas_disable_pxe') && \
+       $SNIPPET('local_mass_local_mirror') && \
        true
--- /dev/null   2012-05-31 15:21:47.612623001 +0000
+++ /var/lib/cobbler/snippets/local_maas_local_mirror   2012-05-31 15:39:33.897110012 +0000
@@ -0,0 +1 @@
+in-target sh -c "echo apt_preserve_sources_list: true > /etc/cloud/cloud.cfg.d/99-local-mirror-only.cfg" \

哦,对于“如何在 maas 中设置用户数据”,目前只能通过使用 maas API 来实现。目前还没有现成的客户端工具。

答案2

好的,我们可以通过在 /var/lib/cobbler/snippets/maas_preseed 中添加一行来完成节点安装,如下所示:

 $maas_preseed_data    
 cloud-init   cloud-init/local-cloud-config string manage_etc_hosts: localhost
+cloud-init   cloud-init/local-cloud-config string apt_preserve_sources_list: true

实际上,cloud-init/local-cloud-config 是 cloud-init 的本地配置器。

相关内容