概要
先にDockerをある程度使いこなせて、これからAnsibleを勉強しようとしている方向けです。
勉強用のゲスト環境をvagrant + VMで作るのって気が引けませんか?私はそうなりました・・・
なので、せっかくDockerを覚えたならゲスト環境をDockerで構築したくなりませんか?
ということでDockerでゲスト環境とAnsible実行環境を1つにまとめました.。
また、Dockerの特性を活かして、Ansibleの勉強で汚した環境を躊躇なく捨てて常にクリーンな環境で勉強できるのが、Dockerならではと思います。
以下はこちらのコードをベースに説明していきます。
※コンテナにsshサーバを導入していますが、あくまでも勉強用に導入しています。
※すぐに学習始められるようにゲスト環境用のsshキー(パスキーなし)をあえて入れます。
(変えたい場合は再生成し、イメージを再ビルドしてください)
コンテナの構成
- centos7、ubuntu20 ・・・ ゲスト環境(CentoOS派とUbuntu派がいると思いますのでw)
- myansible ・・・ ubuntuベースのAnsible実行環境(2.9.x)
myansibleコンテナでansibleコマンドを実行し、各ゲスト環境を更新する流れです。
起動方法
以下のコマンドでゲスト環境とansible実行環境が起動されます。
なお、VSCodeのRemote Containerにも対応しておりますので、
該当の手順で起動することも可能です。
> docker-compose up -d
Ansibleコンテナにログイン
> docker exec -it myansible bash
疎通確認
myansibleコンテナの/myansible
配下で以下のコマンドを実行
root@myansible:/myansible# ansible-playbook -i hosts book.yml
実行結果
以下の様に表示されればOKです!
PLAY [all] ***************************************************
TASK [Gathering Facts] ***************************************
ok: [ubuntu20]
ok: [centos7]
TASK [debug] *************************************************
ok: [centos7] => {
"msg": "hello from centos7 !!"
}
ok: [ubuntu20] => {
"msg": "hello from ubuntu20 !!"
}
PLAY RECAP ****************************************************
centos7 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ubuntu20 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
playbookの実行
playbooksをmyansibleコンテナの/playbooks
にマウントしているので、
playbooks内にplaybookなどを作成し、ansibleコマンドを実行してください。
ゲスト環境が増えた場合
- docker-compose.ymlの新たなゲストとなるサービスを追加
-
playbooks/hosts
に手順1で追加したサービス名を追加
参考
https://kizawa.info/docker-sshlogin
https://docs.docker.com/engine/examples/running_ssh_service/#build-an-eg_sshd-image