В Документация MAAS 2.0 поясняет следующее:
Заметка: Несмотря на то, что веб-интерфейс помечает поле внешнего прокси «Прокси для APT и HTTP / HTTPS», прокси предназначен только для APT, а не для HTTP / HTTPS, как подразумевается.
Итак, если бы я хотел, чтобы мой узел контроллера региона MAAS действовал как прокси-сервер HTTP / HTTPS для всех облачных узлов, как изменить конфигурацию Squid, чтобы взять на себя роль прокси HTTP / HTTPS (а также трафик APT - я предполагаю, что Squid является прокси APT).
В моей конфигурации у моего регионального контроллера первый сетевой адаптер подключен к офисному модему / маршрутизатору WAN, а следующий сетевой адаптер подключен к управляемому коммутатору, к которому подключены все остальные узлы. Контроллер региона - единственная машина с прямым выходом в Интернет. Все узлы 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
подсеть вне.
Было необходимо две вещи:
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
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.