Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
64
Help us understand the problem. What is going on with this article?
@Naoto9282

【Ansible】DockerでAnsibleハンズオン

More than 1 year has passed since last update.

概要

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

64
Help us understand the problem. What is going on with this article?
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
Naoto9282
株式会社 JS-Pro. CTO
js-pro
JavaScriptに特化した"オンラインプログラミング学習"サービスを提供しています。日本全体の技術力の向上を目指して、わかりやすいプログラミング学習コンテンツを提供していきます。 https://js-pro.jp

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
64
Help us understand the problem. What is going on with this article?