如何在NodeJS项目的Bitbucket Pipeline中调用Ansible项目实现自动部署?
跨仓库调用Ansible项目完成Bitbucket Pipeline部署
这个需求完全可以实现,核心思路是在NodeJS项目的Pipeline构建环境中,主动拉取Ansible项目仓库,再执行对应的playbook。具体实现步骤如下:
1. 配置仓库访问权限
要让NodeJS项目的Pipeline能克隆Ansible仓库,需要配置访问凭证:
- SSH密钥方式:生成一对SSH密钥,将公钥添加到Ansible项目仓库的「Access keys」设置中(仓库Settings > Repository settings > Access keys);将私钥作为保密变量添加到NodeJS项目的Pipeline变量中(项目Settings > Pipelines > Repository variables),命名为
ANSIBLE_REPO_SSH_KEY。 - App密码方式:在Bitbucket个人设置中生成App密码,赋予仓库读取权限;将用户名和App密码分别作为
ANSIBLE_REPO_USERNAME、ANSIBLE_REPO_PASSWORD添加到NodeJS项目的Pipeline保密变量中。
2. 修改Pipeline脚本拉取Ansible仓库
更新你的Pipeline配置,先克隆Ansible仓库,再执行playbook:
pipelines: branches: develop: - step: name: Deploy using Ansible deployment: production script: # SSH密钥方式克隆Ansible仓库 - echo "$ANSIBLE_REPO_SSH_KEY" > ~/.ssh/id_rsa - chmod 600 ~/.ssh/id_rsa - git clone git@bitbucket.org:your-team/ansible-project.git # 若用App密码方式,替换上方克隆命令为: # - git clone https://$ANSIBLE_REPO_USERNAME:$ANSIBLE_REPO_PASSWORD@bitbucket.org:your-team/ansible-project.git # 执行Ansible playbook - ansible-playbook -i ansible-project/inventory ansible-project/playbook.yml
3. (可选)指定Ansible仓库的分支/版本
如果需要拉取特定分支或标签的Ansible代码,在clone命令中添加对应参数:
# 拉取main分支 git clone -b main git@bitbucket.org:your-team/ansible-project.git # 拉取指定标签版本 git clone --branch v1.0.0 git@bitbucket.org:your-team/ansible-project.git
4. 确保构建环境安装Ansible
Bitbucket默认的构建镜像可能没有预装Ansible,你可以选择:
- 在步骤中手动安装:
pipelines: branches: develop: - step: name: Deploy using Ansible deployment: production image: python:3.11 script: - pip install ansible # 克隆仓库及执行playbook的命令... - 或者使用预先安装了Ansible的自定义Docker镜像。
内容的提问来源于stack exchange,提问作者user842225
相关产品推荐
相关产品推荐

