如何让 MAAS 和 Juju 识别部署中的代理设置?

如何让 MAAS 和 Juju 识别部署中的代理设置?

因此,我有 Ubuntu 12.04 LTS,从初始启动时安装了 MaaS,然后添加了 JUJU。我使用代理,因此将代理添加到 /etc/apt/apt.conf 以及 /etc/wgetrc。这样做之后我就可以使用 maas-import-pxe-files 了。

设置我的环境,一切似乎都很好,但是当我启动节点时,它们无法解析 archive.ubuntu.com。我是否必须在某处设置我的代理信息,以便将其传递到连接到 MaaS 服务器的节点上?我在任何 squid 日志中都看不到任何操作,并且不确定我应该将我的代理放在哪里才能将其传递到外部世界。

非常感谢您的帮助!

答案1

恐怕这目前不是 MAAS 支持的配置(但我很乐意在这一点上犯错)。

我还必须在代理后面使用 MAAS,下面是我处理它的方法:

导入 pxe 图像:

sudo http_proxy=http://my.proxy:3128/ maas-import-pxe-files

编辑/usr/share/maas/preseeds/enlist_userdata

set apt_proxy
#we cannot use maas as a proxy as maas itself is behind a proxy
#if we try, when we bootstrap zookeeper, it is not able to download archive.ubuntu.com/ubuntu/dists/precsie/Release
apt_proxy: http://my.proxy:3128/

更改 /usr/share/maas/preseeds/preseed_master 以便 {{self.proxy}} 为

d-i     mirror/country string manual
d-i     mirror/http/hostname string archive.ubuntu.com
d-i     mirror/http/directory string /ubuntu
d-i     mirror/http/proxy string http://my.proxy:3128/

一定要消除{{self.proxy}} 宏,否则如果您将其注释掉,它无论如何都会被扩展。

改变/usr/share/maas/preseeds/generic以便

d-i     preseed/late_command string true && \
    in-target sh -c 'f=$1; shift; echo $0 > $f && chmod 0440 $f $*' 'ubuntu ALL=(ALL) NOPASSWD: ALL' /etc/sudoers.d/maas && \
    in-target wget --no-proxy "{{node_disable_pxe_url|escape.shell}}" --post-data "{{node_disable_pxe_data|escape.shell}}" -O /dev/null && \
    true
is 
d-i     preseed/late_command string true && \
    in-target sh -c 'f=$1; shift; echo $0 > $f && chmod 0440 $f $*' 'ubuntu ALL=(ALL) NOPASSWD: ALL' /etc/sudoers.d/maas && \
    in-target wget --no-proxy "{{node_disable_pxe_url|escape.shell}}" --post-data "{{node_disable_pxe_data|escape.shell}}" -O /dev/null && \
    in-target apt-key adv --keyserver-options http-proxy=http://my.proxy:3128/ --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys "0x376a290ec8068b11" && \
    in-target sh -c 'http_proxy=http://my.proxy:3128/ https_proxy=http://my.proxy:3128/ apt-add-repository -m ppa:juju/pkgs --yes' && \
    in-target sh -c 'http_proxy=http://my.proxy:3128/ https_proxy=http://my.proxy:3128/ apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 5EDB1B62EC4926EA' && \
    true

可能有更好的方法可以做到这一点,它可能并不适用于所有地方,但对我来说它有效。

请注意,当它们尝试从互联网上获取内容或添加一些 ppa 时,一些超级按钮也必须更改为使用代理。

答案2

在设置页面(右上角附近的齿轮)中查找网络配置部分。有一个用于设置 HTTP 和 HTTPS 代理的框。

这也可以通过 maas-cli 进行设置:

maas-cli $profile maas set-config name=http_proxy value=http://example.com/

(如果你以前没有使用过 maas-cli,请参阅maas-cli 文档开始。)

答案3

  • Gavin:网络配置代理设置旁边有一条注释:“”集群和区域控制器使用它来下载 PXE 启动映像和其他与配置相关的资源。它不会传递到已配置的节点。“”

这个说明有误吗,或者代理设置是否也出现在部署的节点中?

  • 罗斯:在我的设置中,部署的节点可能(也可能无法)能够解析他们想要通过 http 下载内容的主机名,但即使没有可用的名称解析,只要他们使用的代理具有可以解析它的解析器,这也不是问题。

相关内容