这MAAS 2.0 文档澄清以下内容:
笔记:尽管 Web 界面标记了外部代理字段“APT 和 HTTP/HTTPS 的代理”,但该代理仅适用于 APT,而不适用于 HTTP/HTTPS。
因此,如果我想让我的 MAAS 区域控制器节点充当所有云节点的 HTTP/HTTPS 代理,如何更改 Squid 配置以承担 HTTP/HTTPS 代理角色(以及 APT 流量 - 我认为 Squid 是 APT 代理)。
在我的配置中,我的区域控制器的第一个 NIC 连接到办公室 WAN 调制解调器/路由器,下一个 NIC 连接到所有其他节点都连接到的托管交换机。区域控制器是唯一一台与互联网直接连接的机器。所有 MAAS 节点都可以更新、升级和安装 APT 包,但 Juju 无法启动 LXD 容器,因为它们无法解析来自 linuxcontainers.org 的映像。
附加背景信息:我正在测试教程中的设置http://blog.naydenov.net/2015/11/deploying-openstack-on-maas-1-9-with-juju-network-setup/它描述了安装前设置的所有 VLAN 和子网的配置。不幸的是,我很难让 Squid 放出子网maas-management
。
答案1
需要做两件事:
Squid 默认阻止所有非 HTTPS 的内容,甚至包括safe_ports
。
为了允许Safe_ports
,我在声明之后添加了以下几行(如果删除注释行,则acl
在行之后):acl CONNECT method CONNECT
http_access deny !Safe_ports
http_access allow CONNECT Safe_ports
http_access deny CONNECT !SSL_ports
我还添加了一些行来允许一些 VLAN http_access
:
acl maas_external src 192.168.0.0/24
http_access allow maas_external
MAAS 需要curtin
(系统安装程序)设置http_proxy
环境变量。
我修改了以下late_commands
部分:/etc/maas/preseeds/curtin_userdata
late_commands:
maas: [wget, '--no-proxy', '{{node_disable_pxe_url|escape.shell}}', '--post-data', '{{node_disable_pxe_data|escape.shell}}', '-O', '/dev/null']
setup_http_proxy_01: ["curtin", "in-target", "--", "sh", "-c", "echo \"export http_proxy='{{http_proxy}}'\" | sudo tee --append /etc/profile"]
setup_http_proxy_02: ["curtin", "in-target", "--", "sh", "-c", "echo \"export HTTP_PROXY='{{http_proxy}}'\" | sudo tee --append /etc/profile"]
setup_http_proxy_03: ["curtin", "in-target", "--", "sh", "-c", "echo \"export https_proxy='{{http_proxy}}'\" | sudo tee --append /etc/profile"]
setup_http_proxy_04: ["curtin", "in-target", "--", "sh", "-c", "echo \"export HTTPS_PROXY='{{http_proxy}}'\" | sudo tee --append /etc/profile"]
setup_http_proxy_05: ["curtin", "in-target", "--", "sh", "-c", "echo \"export ftp_proxy='{{http_proxy}}'\" | sudo tee --append /etc/profile"]
setup_http_proxy_06: ["curtin", "in-target", "--", "sh", "-c", "echo \"export FTP_PROXY='{{http_proxy}}'\" | sudo tee --append /etc/profile"]
基本上,这设置了几个需要curtin
遵循的步骤。安装程序运行的环境是短暂的,因此我们需要指示curtin
将其应用于目标环境本身,并确保环境设置正确,使用新的环境(curtin in-target -- sh -c
)。最后一个子句将导出命令附加到末尾,/etc/profile
以确保它始终存在于环境中。
我希望这不会太过分。至少,当部署一个节点时,即使它只连接到 MAAS 区域控制器,它也可以访问互联网。