如何使用GitLab CI + Docker + Ansible部署Rails应用程序?

我有一个托pipe的GitLab与一些Ruby on Rails项目。 我有一个CI脚本,用该项目构build一个Docker镜像并将其推送到GitLabregistry。 最后,我需要将该映像部署到临时服务器。

stages: - test - build - deploy # ... build_image: stage: build image: docker:latest services: - docker:dind variables: DOCKER_DRIVER: overlay script: - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN gitlab.host.com:4567 - docker build -t gitlab.host.com:4567/group/app:$CI_BUILD_REF_NAME . - docker push gitlab.host.com:4567/group/app:$CI_BUILD_REF_NAME only: - master 

我想用Ansible来做,但是不知道怎么做。 也许有人可以推荐要查找什么或读什么? 感谢名单

我build议不要在CI中使用Ansible。 这通常会使事情复杂化,因为运行您CI的容器需要安装Ansible才能正常工作。 这是可行的,但我有这样的设置。 另一个缺点是Ansible“吃”输出,如果出现错误,则以未格式化的方式打印。
如果你的意图不是在CI中使用Ansible,而只是用Ansible自己部署它,那么我也不得不提出这个build议。 这将导致所有想要在登台服务器上进行更新的人联系您,或者他们需要login登台服务器和正确的操作手册。 最后一次更新发生时,他们也会问自己。

最好把你的代码放在一个不同的步骤中,把ssh放入机器,拉取图像,停止以前的操作并启动新的。 您甚至可以在Gitlab中定义一个“分期”环境,并在最后一次更新完成时通知您。 这对于其他开发人员来说可能非常方便。
您可以将私钥ssh密钥放在Gitlab秘密variables中,并将其放在〜/ .ssh / id_rsa中作为第一个部署步骤。 这会让你访问你的登台机器。 你应该调用他的用户'gitlab-staging'或类似的东西,这样你可以跟踪主机上的访问日志回到这个configuration。

希望这有助于,如果你有任何问题让我知道。