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锚点定义
yamlshared: - &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
任务引用示例
yaml- 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锚点定义
yamlshared: - &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
任务引用示例
yaml- *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锚点定义
yamlshared: - &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-' # 保留这些标签的镜像
任务引用示例
yaml- *aws-ecr-cleaner # 直接引用锚点执行ECR清理
功能描述
通过Vault AppRole认证机制获取临时令牌,并将令牌写入文件供后续工具(如Terraform)使用。
环境变量与参数配置
| 参数名 | 描述 | 默认值 | 是否必填 |
|---|---|---|---|
VAULT_ROLEID | AppRole角色ID | - | 是 |
VAULT_SECRETID | AppRole密钥ID | - | 是 |
VAULT_ADDR | Vault服务地址(如https://vault.example.com:8200) | - | 否 |
使用示例(流水线配置)
YAML锚点定义
yamlshared: - &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服务地址
任务引用示例
yaml- *vault-approle-login # 执行认证并输出令牌
功能描述
合并cycloid.io的stack模板(基础设施代码)与用户配置(环境变量、参数等),生成最终部署配置。
环境变量与参数配置
| 参数名 | 描述 | 默认值 | 是否必填 |
|---|---|---|---|
CONFIG_PATH | 用户配置目录路径 | config | 否 |
STACK_PATH | stack模板目录路径 | stack | 否 |
使用示例(流水线配置)
YAML锚点定义
yamlshared: - &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"
任务引用示例
yaml- 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版本时需同步更新标签:
bash# 构建新标签镜像 sudo docker build . -t cycloid/cycloid-toolkit:v2.4 # 推送至仓库 sudo docker push cycloid/cycloid-toolkit:v2.4
注意:生产环境建议使用固定标签(如
v2.4)而非latest,避免版本变更导致兼容性问题。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务