如何安装 Galaxy NG¶
Galaxy NG 是一个 Pulp 插件。作为一个插件,Galaxy_NG 有多种安装方法可用。历史上,galaxy 团队提倡使用 pulp_installer 项目作为最佳安装路径。不幸的是,pulp-installer 项目不再为较新的 pulp 版本发布或更新,我们不得不放弃对其的支持。
我们目前支持 2 种启动 galaxy_ng 的方法
- 使用 docker 的 Pulp OCI 镜像
- 使用 oci_env + docker 的 Pulp OCI 镜像
如果您想了解有关 oci-env 路径的更多信息,请查看 社区开发栈 页面。
本文档的其余部分介绍如何直接使用 OCI 镜像和 docker。
使用 docker 和 oci 镜像安装¶
运行 galaxy_ng 最简单的方法是通过 pulp 的 OCI 镜像。
已发布镜像的完整列表在 quay.io 上。
这些镜像包含运行 galaxy_ng 后端所需的所有软件,但需要设置一些特殊的配置才能正常工作。本节的其余步骤将解释如何创建所需的配置并启动 docker 容器。
定义 galaxy-importer.cfg¶
创建一个包含以下内容的 galaxy-importer.cfg ...
[galaxy-importer]
ansible_local_tmp=~/.ansible/tmp
ansible_test_local_image=false
check_required_tags=false
check_runtime_yaml=false
check_changelog=false
infra_osd=false
local_image_docker=false
log_level_main=INFO
require_v1_or_greater=false
run_ansible_doc=false
run_ansible_lint=false
run_ansible_test=false
run_flake8=false
galaxy-importer 设置是特定于版本的。如果您计划运行旧版本的 galaxy-importer,您应该查看源代码仓库以获取可用设置的最终列表。
https://github.com/ansible/galaxy-importer/blob/master/galaxy_importer/config.py#L43-L57
如果您想独立运行 galaxy-importer,请查看 README.md
定义 pulp 设置¶
创建一个包含以下内容的 pulp_settings.env 文件 ...
PULP_CONTENT_ORIGIN=http://localhost:8080
PULP_ANSIBLE_API_HOSTNAME=http://localhost:8080
PULP_GALAXY_API_PATH_PREFIX=/api/galaxy/
PULP_ANSIBLE_CONTENT_HOSTNAME=http://localhost:8080/pulp/content/api/galaxy/v3/artifacts/collections/
PULP_CONTENT_PATH_PREFIX=/pulp/content/api/galaxy/v3/artifacts/collections/
PULP_GALAXY_AUTHENTICATION_CLASSES=['galaxy_ng.app.auth.session.SessionAuthentication', 'rest_framework.authentication.TokenAuthentication', 'rest_framework.authentication.BasicAuthentication', 'django.contrib.auth.backends.ModelBackend']
PULP_GALAXY_REQUIRE_CONTENT_APPROVAL=true
PULP_GALAXY_DEPLOYMENT_MODE=standalone
PULP_GALAXY_AUTO_SIGN_COLLECTIONS=false
PULP_GALAXY_COLLECTION_SIGNING_SERVICE=ansible-default
PULP_RH_ENTITLEMENT_REQUIRED=insights
PULP_TOKEN_AUTH_DISABLED=false
PULP_TOKEN_SERVER=http://localhost:8080/token/
PULP_TOKEN_SIGNATURE_ALGORITHM=ES256
PULP_PUBLIC_KEY_PATH=/src/galaxy_ng/dev/common/container_auth_public_key.pem
PULP_PRIVATE_KEY_PATH=/src/galaxy_ng/dev/common/container_auth_private_key.pem
PULP_ANALYTICS=false
PULP_GALAXY_ENABLE_UNAUTHENTICATED_COLLECTION_ACCESS=true
PULP_GALAXY_ENABLE_UNAUTHENTICATED_COLLECTION_DOWNLOAD=true
PULP_GALAXY_ENABLE_LEGACY_ROLES=true
PULP_GALAXY_FEATURE_FLAGS__execution_environments=false
PULP_SOCIAL_AUTH_LOGIN_REDIRECT_URL=/
PULP_GALAXY_FEATURE_FLAGS__ai_deny_index=true
PULP_DEFAULT_ADMIN_PASSWORD=password
PULP_WORKERS=1
任何包含“localhost:8080”的设置都是特定于环境的。每当系统启动时,后端都期望传入和重定向的请求转到该地址。此示例使用“localhost:8080”,因为我们将在下一步中使用 docker 将底层主机的 8080 端口绑定到容器的 80 端口。
了解文件中每个设置的含义超出了本文档的范围,但有几个需要重点介绍 ...
- PULP_DEFAULT_ADMIN_PASSWORD
- 为“admin”用户设置 http 密码
- PULP_WORKERS
- 定义在容器中运行的异步工作进程数
- PULP_GALAXY_ENABLE_UNAUTHENTICATED_COLLECTION_ACCESS
- 允许在不进行身份验证的情况下列出集合
- PULP_GALAXY_ENABLE_UNAUTHENTICATED_COLLECTION_DOWNLOAD
- 允许在不进行身份验证的情况下下载集合
- PULP_GALAXY_ENABLE_LEGACY_ROLES
- 启用 api/v1/roles 和相关功能
运行 docker¶
使用以下 docker 参数启动容器 ...
docker run \
--name=galaxy_ng \
-v $(pwd)/galaxy-importer.cfg:/etc/galaxy-importer/galaxy-importer.cfg
--env-file=pulp_settings.env \
-p 8080:80 \
quay.io/pulp/galaxy:4.9.0
该容器使用 s6 init 系统在同一容器中启动 postgresql、gunicorn、nginx 和各种 pulp 服务。一旦迁移完成并且日志条目稳定并以“New worker XXXXXX discovered”结尾,系统就可以使用了。
使用容器¶
API 基础¶
该容器应使用默认的“admin”帐户和密码“password”启动。将“-u admin:password”与任何与需要身份验证的端点交互的 curl 命令一起传递。 galaxy_ng 中的许多端点都是重定向的,因此最好将“-L”传递给所有 curl 命令。
要检查对系统的访问权限,请运行此 curl 命令 ...
curl -u admin:password -L http://localhost:8080/api/galaxy/pulp/api/v3/status/
要列出集合 ...
curl -u admin:password -L http://localhost:8080/api/galaxy/v3/collections/
curl -u admin:password -L http://localhost:8080/api/galaxy/v1/roles/
要探索其他可用的端点 ...
docker exec -it galaxy_ng pip install django-extensions
docker exec -it galaxy_ng pulpcore-manager show_urls