69
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Organization

【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 /bin/exec
  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コマンドを試してみて下さい。
間違い・指摘等があればコメントお願いします。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
69
Help us understand the problem. What are the problem?