本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
Cycloid Toolkit是一个包含工具和脚本的Docker镜像,专为cycloid.io部署流水线设计。其核心用途是提供标准化的工具集,简化部署流程中的关键操作,如Ansible自动化执行、AWS资源清理、Vault认证集成及配置合并等。
该镜像集成了以下关键工具,覆盖部署流水线全生命周期需求:
| 工具名称 | 功能描述 |
|---|---|
ansible-runner | 通过堡垒机(Bastion)运行Ansible Playbook,支持动态 inventory 和Vault加密 |
aws-ami-cleaner | 清理Amazon EC2旧AMI,适用于自动扩展组(ASG)的镜像迭代场景 |
aws-ecr-cleaner | 清理Amazon ECR中旧Docker镜像,优化容器镜像仓库存储 |
vault-approle-login | 通过AppRole认证获取Vault令牌,并注入Terraform变量文件 |
extract-terraform-outputs | 提取Terraform输出,供其他脚本(如merge-stack-and-config)使用 |
merge-stack-and-config | 合并cycloid.io的stack配置与用户配置,生成最终部署配置 |
docker pull cycloid/cycloid-toolkit:latest通过堡垒机(或SSH ProxyJump)执行Ansible Playbook,支持AWS EC2动态inventory、Vault加密及角色缓存。
| 参数名 | 描述 | 默认值 | 是否必填 |
|---|---|---|---|
AWS_ACCESS_KEY_ID | AWS EC2动态inventory访问密钥 | - | 否 |
AWS_SECRET_ACCESS_KEY | AWS EC2动态inventory密钥 | - | 否 |
SSH_PRIVATE_KEY | 用于连接服务器的SSH私钥 | - | 是 |
SSH_PRIVATE_KEYS | 多个SSH私钥列表(YAML格式) | - | 否 |
BASTION_URL | 堡垒机SSH地址,格式:user@host | - | 否 |
SSH_JUMP_URL | SSH ProxyJump地址列表,格式:user1@host1,user2@host2 | - | 否 |
TAGS | 仅执行指定标签的Ansible任务 | - | 否 |
SKIP_TAGS | 跳过指定标签的Ansible任务 | - | 否 |
EXTRA_ANSIBLE_ARGS | ansible-playbook命令额外参数(如--limit) | - | 否 |
EXTRA_ANSIBLE_VARS | 额外Ansible变量(JSON格式) | - | 否 |
ANSIBLE_REMOTE_USER | Ansible远程执行用户 | admin | 否 |
ANSIBLE_GALAXY_EXTRA_ARGS | ansible-galaxy命令额外参数 | - | 否 |
ANSIBLE_VAULT_PASSWORD | Ansible Vault解密密码 | - | 否 |
ANSIBLE_FORCE_GALAXY | 是否强制更新Ansible Galaxy角色缓存 | false | 否 |
ANSIBLE_PLAYBOOK_NAME | 待执行的Playbook文件名 | site.yml | 否 |
ANSIBLE_PLAYBOOK_PATH | Playbook文件路径 | ansible-playbook | 否 |
EC2_VPC_DESTINATION_VARIABLE | EC2动态inventory目标IP类型(私有/公有) | private_ip_address | 否 |
YAML锚点定义
shared: - &run-ansible-from-bastion config: platform: linux image_resource: type: docker-image source: repository: cycloid/cycloid-toolkit tag: latest run: path: /usr/bin/ansible-runner caches: # 缓存Ansible角色,加速执行 - path: ansible-playbook/roles inputs: - name: ansible-playbook # 挂载Playbook目录 path: ansible-playbook
任务引用示例
- task: run-ansible <<: *run-ansible-from-bastion # 引用YAML锚点 params: BASTION_URL: ((bastion_url)) # 堡垒机地址(从变量注入) SSH_PRIVATE_KEY: ((bastion_ssh.ssh_key)) # 堡垒机SSH私钥 SSH_PRIVATE_KEYS: # 多私钥配置(可选) - ((user1_ssh.ssh_key)) - ((user2_ssh.ssh_key)) ANSIBLE_VAULT_PASSWORD: ((ansible_vault_pass)) # Vault解密密码 AWS_ACCESS_KEY_ID: ((aws_access_key)) # AWS访问密钥(用于动态inventory) AWS_SECRET_ACCESS_KEY: ((aws_secret_key)) EXTRA_ANSIBLE_ARGS: "--limit tag_role_front" # 限制执行目标 AWS_DEFAULT_REGION: eu-west-1 ANSIBLE_PLAYBOOK_NAME: ((customer)).yml # 动态指定Playbook文件名 EXTRA_ANSIBLE_VARS: # 额外Ansible变量 customer: ((customer)) project: ((project)) env: ((env)) TAGS: # 仅执行deploy标签任务 - deploy
清理指定名称模式的旧Amazon AMI,保留最新镜像,适用于频繁构建AMI的自动扩展场景。
| 参数名 | 描述 | 默认值 | 是否必填 |
|---|---|---|---|
AWS_ACCESS_KEY_ID | AWS访问密钥(需具备AMI删除权限) | - | 是 |
AWS_SECRET_ACCESS_KEY | AWS密钥 | - | 是 |
AWS_NAME_PATTERNS | AMI名称匹配模式(JSON数组格式),如["prod-front-*", "prod-back-*"] | - | 是 |
AWS_REGION | AWS区域 | - | 是 |
YAML锚点定义
shared: - &aws-ami-cleaner task: aws-ami-cleaner config: platform: linux image_resource: type: docker-image source: repository: cycloid/cycloid-toolkit tag: latest run: path: /usr/bin/aws-ami-cleaner params: AWS_ACCESS_KEY_ID: ((aws_access_key)) AWS_SECRET_ACCESS_KEY: ((aws_secret_key)) AWS_REGION: eu-west-1 AWS_NAME_PATTERNS: > [ "project1_front_prod", "project1_batch_prod" ] # 清理名称匹配这两个模式的旧AMI
任务引用示例
- *aws-ami-cleaner # 直接引用锚点执行清理任务
清理Amazon ECR仓库中符合条件的旧镜像,支持按标签正则过滤、保留数量配置。
| 参数名 | 描述 | 默认值 | 是否必填 |
|---|---|---|---|
AWS_ACCESS_KEY_ID | AWS访问密钥(需具备ECR管理权限) | - | 是 |
AWS_SECRET_ACCESS_KEY | AWS密钥 | - | 是 |
REGION | AWS区域 | - | 是 |
DRYRUN | 启用 dry-run 模式(仅预览不删除) | False | 否 |
IMAGES_TO_KEEP | 每个仓库保留的最新镜像数量 | 2 | 否 |
REPOSITORIES_FILTER | 仓库名称过滤(空格分隔的关键词),如"foo bar"匹配含foo或bar的仓库 | - | 否 |
IGNORE_TAGS_REGEX | 忽略的标签正则(如`"dev | staging"`不清理这些标签镜像) | - |
FILTER_TAGS_REGEX | 仅清理匹配该正则的标签(如"^dev-"仅清理dev前缀标签) | - | 否 |
YAML锚点定义
shared: - &aws-ecr-cleaner task: aws-ecr-cleaner config: platform: linux image_resource: type: docker-image source: repository: cycloid/cycloid-toolkit tag: latest run: path: /usr/bin/aws-ecr-cleaner params: AWS_ACCESS_KEY_ID: ((aws_access_key)) AWS_SECRET_ACCESS_KEY: ((aws_secret_key)) REGION: ((aws_default_region)) DRYRUN: False # 生产环境设为False执行实际删除 IMAGES_TO_KEEP: 2 # 每个仓库保留最新2个镜像 REPOSITORIES_FILTER: 'foo bar' # 仅清理名称含foo或bar的仓库 IGNORE_TAGS_REGEX: 'dev|staging|prod|latest-' # 保留这些标签的镜像
任务引用示例
- *aws-ecr-cleaner # 直接引用锚点执行ECR清理
通过Vault AppRole认证机制获取临时令牌,并将令牌写入文件供后续工具(如Terraform)使用。
| 参数名 | 描述 | 默认值 | 是否必填 |
|---|---|---|---|
VAULT_ROLEID | AppRole角色ID | - | 是 |
VAULT_SECRETID | AppRole密钥ID | - | 是 |
VAULT_ADDR | Vault服务地址(如[***]) | - | 否 |
YAML锚点定义
shared: - &vault-approle-login task: vault-approle-login config: platform: linux image_resource: type: docker-image source: repository: cycloid/cycloid-toolkit tag: latest run: path: /usr/bin/vault-approle-login outputs: # 输出令牌文件到vault-token目录 - name: vault-token path: vault-token params: VAULT_ROLEID: ((vault.role_id)) # AppRole角色ID VAULT_SECRETID: ((vault.secret_id)) # AppRole密钥ID VAULT_ADDR: ((vault.address)) # Vault服务地址
任务引用示例
- *vault-approle-login # 执行认证并输出令牌
合并cycloid.io的stack模板(基础设施代码)与用户配置(环境变量、参数等),生成最终部署配置。
| 参数名 | 描述 | 默认值 | 是否必填 |
|---|---|---|---|
CONFIG_PATH | 用户配置目录路径 | config | 否 |
STACK_PATH | stack模板目录路径 | stack | 否 |
YAML锚点定义
shared: - &merge-stack-and-config platform: linux image_resource: type: docker-image source: repository: cycloid/cycloid-toolkit tag: latest run: path: /usr/bin/merge-stack-and-config outputs: # 合并结果输出到merged-stack目录 - name: merged-stack path: "merged-stack"
任务引用示例
- task: merge-stack-and-config config: <<: *merge-stack-and-config # 引用锚点 inputs: # 挂载stack和config输入目录 - name: ((project))-config-ansible path: "config" # 用户配置目录 - name: ((project))-stack-ansible path: "stack" # stack模板目录 - name: ((project))-terraform-apply # 可选:挂载Terraform输出作为变量 path: "terraform"
镜像标签基于内置Ansible版本命名,格式为v<ansible-version>(如v2.4)。更新Ansible版本时需同步更新标签:
# 构建新标签镜像 sudo docker build . -t cycloid/cycloid-toolkit:v2.4 # 推送至仓库 sudo docker push cycloid/cycloid-toolkit:v2.4
注意:生产环境建议使用固定标签(如
v2.4)而非latest,避免版本变更导致兼容性问题。
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429