如何使用 ansible 自动从 github/bitbucket 上托管的 git 存储库部署到 ubuntu 服务器?
在 github repostory 设置->webhooks 中我可以添加 webhook 来拉取到 master,这将调用我的服务器
我有一个用 node.js 编写的自制解决方案,可以从 git 中提取并重新启动服务,但想迁移到 ansible
我是 ansible 的新手,但了解甚少ansible-剧本
ansible 有 github webhook 模块https://docs.ansible.com/ansible/latest/github_hooks_module.html
但我不明白,我需要写什么 .yml 文件
此外,我还需要使用环境变量传递秘密 API 密钥。如何将其存储在密钥环中?
如何帮助
为 ansible-playbook 编写 .yml 文件,该服务 Web 服务器用于带有 secret 字段的钩子,并git pull
运行类似于npm i
repo 中指定的 git hooks(来自非特权用户)并说明如何使用它
说说,我可以将 github webhook 模块与 bitbucket 一起使用吗?
答案1
该github_hooks
模块已弃用,并从 Ansible 用于在 Github 上创建钩子。您需要的是 Git 推送完成后抛出的钩子调用(反之亦然)。
当您希望 Ansible 开始执行某项操作时,Github 需要调用 HTTP 服务。Ansible 本身无法执行此操作,因为它不是服务器,也不会监听任何内容。它只是一个“脚本”。
您有两个选择:将所有 Ansible 脚本等放入 AWX/Ansible Tower。这是一个 Web 服务,具有 REST-API。请查看https://keithtenzer.com/2019/06/24/ci-cd-with-ansible-tower-and-github/以获得良好的描述。
如果您不想安装 AWX,请在 ansible 控制机器上安装某种 HTTP 服务器,并编写一个脚本(就像您已经编写的脚本一样),当 Github 调用它时启动 Ansible-Playbook。