跳到内容

如何安装 Galaxy NG

Galaxy NG 是一个 Pulp 插件。作为一个插件,Galaxy_NG 有多种安装方法可用。历史上,galaxy 团队提倡使用 pulp_installer 项目作为最佳安装路径。不幸的是,pulp-installer 项目不再为较新的 pulp 版本发布或更新,我们不得不放弃对其的支持。

我们目前支持 2 种启动 galaxy_ng 的方法

  1. 使用 docker 的 Pulp OCI 镜像
  2. 使用 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