docker
Ansible

【Ansible】DockerでAnsibleハンズオン


概要

VirtualboxやVagrantを使った入門は、ハードルが高めなので、

Dockerを使って、Ansibleにハンズオンします。


構成

Dockerを用いることで、Ansibleのコンテナを1台、Targetのコンテナを2台作る。

Ansibleコンテナから、2台のTargetコンテナに対して、Ansibleコマンドを実行する。

Ansibleコンテナから、Target01Target02コンテナ内に、hoge というファイルを作成してみる。

alt


ハンズオン

1 . git cloneする。


clone

git clone https://github.com/Naoto92X82V99/docker-ansible.git



ディレクトリ構成

.

├── README.md
├── docker
│   ├── ansible
│   │   └── Dockerfile ansibleのDocerfile
│   └── target
│   └── Dockerfile targetのDockerfile
├── docker-compose.yml docker-composeファイル
├── inventry.ini hostsファイル
└── playbook.yml playbookファイル

2 . コンテナを起動する。


コンテナの起動

docker-compose up -d



  1. Ansibleコンテナに接続する


Ansibleコンテナに接続

docker exec -it ansible



  1. Ansibleコンテナから、target01target02コンテナに対し、ssh接続する。


sshの接続確認

ssh target01    # yesで接続

exit
ssh target02 # yesで接続
exit

6 . target01target02コンテナに対し、ansibleコマンドを実行する。

ansible-playbook -i inventry.ini playbook.yml


Ansibleコマンドの実行結果

PLAY [target] ********************************************************************************************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************************************************************************
ok: [target01]
ok: [target02]

TASK [???] ***********************************************************************************************************************************************************************
[WARNING]: Consider using the file module with state=touch rather than running touch. If you need to use command because file is insufficient you can add warn=False to this
command task or set command_warnings=False in ansible.cfg to get rid of this message.

changed: [target02]
changed: [target01]

PLAY RECAP ***********************************************************************************************************************************************************************
target01 : ok=2 changed=1 unreachable=0 failed=0
target02 : ok=2 changed=1 unreachable=0 failed=0


7 . target01target02コンテナに再接続し、hogeが作成されていることを確認する。


Ansibleコマンドの動作確認

ssh target01

ls # hoge
exit
ssh target02
ls # hoge


解説

本質と外れるため、Dockerについての説明はしません。

Ansibleの基本ファイルは、hostsファイルとplaybookです。


hostsファイル

hostsファイルは、Ansibleコマンドを実行する対象サーバを記述します。

今回は、target01target02コンテナを対象とするため、以下のようになります。


hosts

[target]

target01
target02


playbookファイル

playbookファイルには、サーバの状態を定義していきます。

今回は、hostsファイルに記載されたtargetに対し、touch hogeを実行します。


playbook.yml

- hosts: target

tasks:
- name: "テスト"
shell: |
touch hoge


まとめ

Dockerを使って、Ansibleにハンズオンする方法を書きました。

playbookファイルを書いて、Ansibleコマンドを実行する環境が、

docker-compose upのみで実現できます。

ハンズオンで用いたtouchコマンドは、冪等性が担保されないため、実際には使用しないでください。

ハンズオン後は、playbook.ymlを編集し、Ansibleコマンドを試してみて下さい。

間違い・指摘等があればコメントお願いします。