使用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 的执行。