77
70

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.

【Ansible】DockerでAnsibleハンズオン

Last updated at Posted at 2019-02-07

概要

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

77
70
4

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
77
70

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?