2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

docker-composeを使ってAnsibleの実行環境を作る

2
Last updated at Posted at 2018-04-05

こんにちは。

Ansibleをチームで利用していると

  • 昔に作ったPlaybookがAnsibleのバージョンアップにより動かない
  • 複数メンバーでの環境の統一が難しい

などの問題にぶつかった事がありませんか?
そこで、DockerとDocker-Composeを使って、Ansibleの実行環境の配布を考えてみました。

構成

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

./ansible-images/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へのパスを指定しています。
  • CMDdocker runの実行時に引数がない際に実行されるコマンドオプションです。コマンドに引数を指定すれば、上書きされます。

./docker-compose.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が実行されます。

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?