如何使用docker容器作为主机并在gitlab-ci上的docker容器中运行ansible?

时间:2018-12-03 14:36:24

标签: docker ansible gitlab-ci

我想使用docker容器使用gitlab-ci测试我们的部署。 我正在尝试创建一个工作,该工作使用在其中安装了ansible的docker conainter并将另一个docker容器用作ansible-playbook的主机。

deploy-test:
    stage: deploy-test
    image: stretch-ansible-docker-container
    script:
        - ansible-playbook -i <use-another-docker-container> test-deploy.yaml

如何创建和定义应该用作主机的docker-container?

1 个答案:

答案 0 :(得分:1)

有不同的方法,主要取决于您是使用docker-in-docker来构建docker还是共享主机的/var/run/docker.sock。如果是第二种选择,则您的步骤可能会以某种方式出现:

首先为您的可爱容器创建Dockerfile。可以将它们放在您项目的源代码中,比如说Dockerfiles\子文件夹

然后在您的管道中添加一个阶段,例如: gitlab-ci.yml

stages:
  - prepare-dockers
  - test

prepare:
  stage: prepare-dockers
  image: docker:latest
  script:
    - docker build -t <use-another-docker-container> Dockerfiles

因此,您可以在下一阶段准备好容器。不要忘记,如果您使用的是Docker共享(不是纯dind),则您已连接到主机的Docker注册表,并且所有映像都将出现在其中。

但是您也不要忘记通过编辑gitlab-config.toml以允许docker共享(暴露/var/run/docker.sock)来共享docker套接字。