LoginSignup
0
0

More than 1 year has passed since last update.

[03] Ansible 検証環境用 Docker コンテナで「docker_image」モジュールを使う

Last updated at Posted at 2022-01-22
本シリーズのトップページ
https://qiita.com/robozushi10/items/1790fdf5ba220b00a2a2

概要

[01] の手順によって、次の Docker コンテナ環境を構築した.

本記事では下表の Master から Slave に対して、Ansible の「docker_image」モジュールを使って
Docker イメージを操作するための設定を記す

コンテナ構成 (2022/01/22 時点)

用途 台数 OS 備考
Ansible Master 1台 Ubuntu 18.04 ■本コンテナに導入する Ansible バージョンは次の通り.
・ansible = 3.4.0-1ppa~bionic
・ansible-base = 2.10.16-1ppa~bionic
■Slave に対して、アカウント「foo」であればパスワードなしで ssh 接続可能である.
■必要ないはずだが、一応、アカウントのパスワードは Dockerfile に記している.
Ansible Slave 8台 Ubuntu 18.04 ■基となる Docker Image は上記 Master と同じである.(横着した)

セットアップ手順

1. slave01 コンテナにログインする

$ docker-compose exec -u foo slave01 bash

2. docker エンジンをインストールする

公式ドキュメントを参照すること.

3. /lib/systemd/system/docker.service に対して「--storage-driver=vfs」を追加する

コンテナの場合は /lib/systemd/system/docker.service に対して、
次の「--storage-driver=vfs」設定をしなければ後述のエラーが起きてしまう

+ExecStart=/usr/bin/dockerd --storage-driver=vfs -H fd://
-ExecStart=/usr/bin/dockerd -H fd://

「--storage-driver=vfs」が無ければ生じるエラー

「docker run hello-world」というサンプルコンテナを起動したときのエラーである.
なお、表示の都合で改行している.

$ sudo docker run hello-world
docker: Error response from daemon: error creating aufs mount to 
/var/lib/docker/aufs/mnt/9f0e8f8f31837467fb95620cc001a43bb6eb377ac5bc370d9bda2c4e17f0cbce-init: mount target=/var/lib/docker/aufs/mnt/9f0e8f8f31837467fb95620cc001a43bb6eb377ac5bc370d9bda2c4e17f0cbce-init 
data=br:/var/lib/docker/aufs/diff/9f0e8f8f31837467fb95620cc001a43bb6eb377ac5bc370d9bda2c4e17f0cbce-
init=rw:/var/lib/docker/aufs/diff/937737d2d1c47ab012cd1b845be39669b150ac7a6700207b8e5e6b1ffab8e6fe=ro+wh,dio,xino=/dev/shm/aufs.xino: invalid argument.

4. python の docker 関連パッケージをインストールする

$ sudo apt install python3-docker -y
$ sudo apt install python3-pip -y
$ pip3 install docker

 

動作確認

1. master コンテナにログインする

$ docker-compose exec -u foo master bash

2. master から slave01 に対して、Docker イメージ「hello-world」を pull するよう

$ ansible -m docker_image slave01 --args "name=hello-world source=pull" 

3. slave01 上に Docker イメージ「hello-world」が存在していれば OK

$ ssh slave01 'docker images'

 

補足

docker コンテナ「hello-world」を pull したい場合は「docker_container」モジュールを使う

$ ansible -m docker_container slave01 --args "name=hello-world image=hello-world"

 

以上

0
0
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
0
0