使用Docker Compose来创建Ansible的执行环境

你好。

当团队正在使用Ansible。

    • 昔に作ったPlaybookがAnsibleのバージョンアップにより動かない

 

    複数メンバーでの環境の統一が難しい

你是否遇到过类似的问题?
因此,我考虑使用Docker和Docker-Compose来分发Ansible的执行环境。

构成

├ docker-compose.yml
└ ansible-images
    └ Dockerfile

./ansible-镜像/Dockerfile

FROM amazonlinux

RUN yum install python27-pip.noarch python27-PyYAML openssh-clients -y && \
    pip install --upgrade pip && \
    pip install ansible==2.5.0 && \
    yum clean all && \
    mkdir /playbooks

WORKDIR /playbooks

ENTRYPOINT ["/usr/local/bin/ansible-playbook"]
CMD ["--version]

讲解

pip install ansible==2.5.0PIPのオプションを利用し、Ansibleのバージョンを指定しています。

RUNAnsibleに必要パッケージ一式をインストールしています。
作成された/playbooksをカレントディレクトリとするためWORKDIRで/playbooksを指定します。

WORKDIR は、RUN CMD ENTRYPOINT COPY ADDを実行する際のワーキングディレクトリを指定します。

/playbooksはdocker-composeにて、ホストのディレクトリのマウント用です。

ENTRYPOINTはAnsibleへのパスを指定しています。

CMDはdocker runの実行時に引数がない際に実行されるコマンドオプションです。コマンドに引数を指定すれば、上書きされます。

./docker-compose.yml可以改写为: Docker 集装箱组合.yml

version: '2'
services:
 ansible:
    build: ./ansible-images
    image: ansible-images:latest
    volumes:
      - /PATH/TO/YOUR/ANSIBLE-PLAYBOOK:/playbooks
    command:
      "--check -i ./hosts/inventory.yml ./setup.yml"

说明

volumes: インスタンスににホスト上のPlaybookを読み込ませるためマウントをしています。

command: Dockerfileで指定したCMDを上書きします。

执行

在当前目录下执行 docker-compose up 命令会触发 Ansible 的执行。

广告
将在 10 秒后关闭
bannerAds