我对 Ansible 和整个 DevOps 团队都很陌生。之前我有使用 Laravel 提供的 Envoyer 的经验。现在我想使用 Ansible 或类似的服务来处理自动部署任务。我的意思是我希望能够仅使用单个命令来部署我的应用程序git push
,并且根据我推送到应用程序的分支将其部署到不同的服务器。
在我阅读了有关 Ansible 的内容后,我似乎至少需要运行额外的命令,例如执行 playbook,另外,任何在同一个项目上工作的开发人员都需要在本地机器上安装 ansible。
因此 Envoyer 或 CodeShip 使用 git hooks 来实现这一点,推送完成后,CodeShip 会执行 git pull 并运行必要的命令。不确定 Ansible 能否在这里提供帮助。
另外,重要的是,当我部署由构建的前端应用程序时npm run build
,我意识到我只需要部署此命令的结果,例如包含连接和最小化等文件的文件夹,保存构建的结果。构建过程本身可能应该在另一台机器上完成。所以我想 Ansible 在这里不会帮助我?
答案1
持续集成工具的主要用例是构建和测试软件包。配置管理工具(如 Ansible)的主要用例是安装和配置主机。
但是,由于两者都可以运行任意命令,因此您可以让它们相互调用。您选择的 CI 可以监视特定的存储库,构建软件,并将其暂存到某个位置。CI 还可以监视不同的存储库,并定期从中调用 ansible-playbook 进行部署和配置。提交对软件存储库的更改并构建修复包,在清单文件中提交新的测试 VM,它将使用标准配置进行部署。
开发人员不必安装 ansible。他们可以从 UNIX 服务器测试他们的剧本,只需要 Python。或者使用 Tower 产品的 Web 界面。
答案2
对于个人或非常小的用例,git hooks 和 ansible 可能会有用,但你真的应该测试在部署代码(持续部署)之前,请先检查代码(持续集成)。如果您想要符合行业最佳实践的 CI 和 CD 管道,那么像 GitLab w/GitLab CI 这样的工具是理想的解决方案(https://about.gitlab.com/features/gitlab-ci-cd/)。使用 GitLab CI,您可以在一个文件中指定测试和部署逻辑.gitlab-ci.yml
,该文件可以根据 git 分支有条件地运行。GitLab 是开源的,可以免费自托管。
注意:我不是 GitLab 的员工,我只是该工具的忠实粉丝!