Ansible実践ガイド 第3版を読み…実践しました
なぜ読んだのか?
Ansibleを業務で利用したく、勉強するために読んでみた
白状すると、Ansible自体これまでに一度しか使ったことなかった・・・・
本のガイド [Ansible実践ガイド]
この本は、第 1 章〜第 8 章の400ページ近い本である
全部、読むと正直時間がかかる
人間の時間は有限なので、暇な人以外は本を全て読まなくて良いと言う考えなので個人的な章ごとのガイドを記載します
※私は全て読みました
Ansible基礎編(1章〜3章)
正直、忙しい人はここだけで良い
Ansibleを使わない人は、1章と3章の「3-2-1 YAML の基本」だけは読んでもらいたい
Ansible活用事例編(4章〜6章)
ここも正直全て読まなくて良い
Ansibleよりも、他の知識が必要なため、時間なければ自分の知りたい部分のみで良い
第 4 章 アプリケーションデプロイメント - Orchestration
→ フロント・バックエンド・MW エンジニア
第 5 章 システムの構成管理 - Configuration Management
5-1 Linux の構成管理 5-2 Windows の構成管理
→ インフラエンジニア(サーバ系)
第 5 章 システムの構成管理 - Configuration Management
5-3 ネットワーク機器の構成管理
→ インフラエンジニア(ネットワーク系)
第 6 章 ブートストラッピング - Bootstrapping
6-1 クラウド API の利用 6-2 Azure の連携
→ クラウドエンジニア(クラウドやるよ・できる!!エンジニア)
第 6 章 ブートストラッピング - Bootstrapping
6-3 Dockerの連携
→ コンテナ運用している人
※「6-3-1 Docker環境における Ansible の利用」にKubernetesあるのに何でAnsible必要なの? みたいなのが書いてあるの読んでおくだけでためになる
Ansibleを本気で使う人(7章〜8章)
7章は、Ansibleの並列処理とか、Debugg方法があるので知っているととても役に立つ(読んだ方が良い)
8章は、Ansible Towerや無償版のAWXの簡単な説明がしてある
感想
正直中身については購入して読んでもらえれば良い
1章の説明はとても素晴らしい
ymlファイルの書き方「3-2-1 YAML の基本」とかは中々他の本になくて、結構軽視しがちだが丁寧に説明されてて素晴らしい
4章以降は正直、自分で環境作らないといけなくて面倒である(ネットワーク環境には捕捉がある)
playbookなどは、「Ansible実践ガイド」出版しました。にあるので参考になると思います
実践
4章を参考に簡単環境で、Ansibleを試したいと考えた
4章の環境を見るロードバランサーが2台で、wordpresが3台、そこにロード・・
いや、Macひとつじゃ作れない・・・
❶ Dockerでサーバー作って
❷ Ansibleで反映すれば良いのじゃない!?
できました!!
https://github.com/taku333/ansible_wordpress_in_docker
❶ Dockerで環境作成
【Ansible】DockerでAnsibleハンズオン と クイックスタート・ガイド:Docker Compose と Wordpress を参考にしながら作成しました
❷ Ansibleのイベント・プレイブック作成
(ansible)wordpressを構築するを参考しながら構築しました
※のちに上記の手順通りにvagrantで作れば簡単だったなと・・
❸ 実行
クーロンする
git clone https://github.com/taku333/ansible_wordpress_in_docker
起動する
docker compose up --build -d
playbookの反映
docker exec -it ansible /bin/bash
$ ansible-playbook -i inventry.ini playbook.yml
http://localhost:8000/wordpress/ でログイン!
また、mysqlの ユーザー・パスワード・DB名は「wordpress」ホスト名は「mysql」を登録する
作成完了しました
困った点
centos7のコンテナで、systemdはデフォルトで使えないためAnsibleのplay-book反映時に下記のようなエラーが発生する
Could not find the requested service httpd
Docker Hub centosの「Dockerfile for systemd base image」を見ればわかるのだが、Dockerfileに「CMD /usr/sbin/init 」を設定したいのだが「CMD /sbin/sshd -D」が既にある
そこで、startup.shを作成しDockerfileを下記のように変更した
CMD ["/startup.sh"]
startup.shは下記のようになった
/sbin/sshd -D
exec /usr/sbin/init
しかし、これでもうまくいかなくsshで繋がらなくなったりした。
そこで下記のように変更した
/sbin/sshd -D &
sleep 5
exec /usr/sbin/init
この変更で、sshも繋がりsystemdコマンドも実行できるようになった
※ここが本当に上手くいかなくてすごく時間がかかりました・・・
終わりに
ここまで読んでくださった皆さん本当にありがとうございます。
全然分からなくて朝4時くらいまでがんばりました、正直しんどかった・・・
Warning直す余裕なかったので、心に余裕ができた時に直せらばと
この記事が気に入ったらサポートをしてみませんか?