[備忘録] Ansibleもくもく会 （第4回）で使ったEthapad #ansiblejp

# Ansbileもくもく会（第4回）

こんにちは。レッドハットでAnsibleのビジネス開発をしている中村[@fideleruuth](https://twitter.com/fideleruuth/)です。2018年07月17日の19時からレッドハット恵比寿オフィスにて4回目のAnsibleもくもく会を実施いたしました。備忘までに質疑応答のやり取りをそのまま残しておきたいと思います。今後実施する際のナレッジの蓄積としても利用できるのと、Ansible関連で役に立つ情報があるかもしれませんので。

枠は44名分準備しておりましたが、実際に参加された方はリモート枠も含めて29名でした。ありがとうございました。
https://ansible-users.connpass.com/event/92701/

Ansibleもくもく会は、Red Hatから場所（東京の場合に限る）とAWS上にデプロイされたAnsibleが利用できる環境を提供し、皆様が自分のペースで学習してもらう場です。今回から、リモート枠を設けることで、関東圏内でも恵比寿に来にくい方や、地方からの参加者の方々も学ぶ場を設けました。結果的にリモート枠でご登録された方はおそらく全員参加頂いたかと思いますので、今後は少し枠を増やすことも考えたいと思います。また、先日のAnsible Night in Osakaでも地方開催をリクエストいただきましたので、計画中です。

成果共有LT枠はいつも登録の人気が低いのですが、例えば「今日は初めてAnsibleを触りました、XXXに躓きました。」みたいな一言程度の軽いものです。通常LTというとプレゼンするイメージですが、軽量なので過去4回参加出来ていない方で次回こそは！という方にはおすすめです。

![Ansiblemokumoku.png](https://qiita-image-store.s3.amazonaws.com/0/211121/ecac38c8-6e48-9b4d-d5bb-8dd2bf49d0b1.png)

ブロガー枠参加のお二方の記事もどうぞ！（早々に投稿ありがとうございます！）
[新人が学ぶAnsibleもくもく会 ネットワーク編 報告会](https://qiita.com/ichigism/items/156c677e07ffc6b5b4ef)
[Ansibleもくもく会（ネットワーク編）まとめ](https://qiita.com/ken5owata/items/c9bf954abb3725df2ef1)

# 質問のやり取り
- copyモジュール等で指定できるsrcなのですが、別のロールにあるファイルを指定することはできますでしょうか?（再度上げておきますｗ）
	- Towerでは制約(https://docs.ansible.com/ansible-tower/3.2.2/html_ja/administration/proot_func_variables.html )がある場合がありますが、通常のplaybookをansible-playbookコマンドから実行する場合は、相対パスでも絶対パスでも指定可能です。(なおした！）

- 質問2：Ansible ワークショップの演習にて”web”というホストグループがinventory.iniに定義されているようであることを確認したのですが、/etc/ansible/hostsにも同じような(webはないですが)書き方をした定義っぽいのがあるのですが、hostは使われないということでしょうか？(ありがとうございます。　なんか前の質問が消えている気がするのですが、もしかして私が消しました？)
	- ansible.cfgは優先順位があります。今回の環境では~/.ansible.cfg にある inventory が使われています。
	- ansible-playbook コマンドで -i にて指定して頂く Inventory に web というホストグループがあれば、/etc/ansible/hosts よりも優先されます。優先順位は カレントディレクトリの ansible.cfg → ~/.ansible.cfg → /etc/ansible/ansible.cfg です。
	- 最も優先度の高いansible.cfgファイルのみが有効になるので注意してください。このとき優先度の低いansible.cfgの設定内容は反映されません。
	- はやい！！

- 設定ファイルのtypoでplaybookの実行に失敗した場合って、同じように再実行すればよいのでしょうか？
	- はい基本、修正頂いて問題ないです。
	- ありがとうございますー！site.retryに再実行するホストが書かれるのですね。
	- 基本的にべき等性が担保されているモジュール(shellやcommandモジュールなどを除く)であれば、何度再実行しても問題ないです :)
 
- *.retryファイルが邪魔な場合は、ansible.cfgの設定値を変更することで、作成しないor別の場所に作成することができます。
	- RETRY_FILES_ENABLED、RETRY_FILES_SAVE_PATH

- EtherPadの更新歴履歴は見れますか？
	- はい、右上の時計のマークをクリックすると過去に遡るスライドが出ます。デグレったときにお使いください。

- 日本語資料の演習1.3（http://jp-redhat.com/ansible-workshop/exercise1.3.html）で「setupというtaskが」とあるが実際は「Gathering Facts」というログが出ます。なにか違う？また、これは何をしているタスク？
	- 同じです。ファクトという、対象ノードのホスト名、NIC情報、リソース情報などのシステム構成情報を取得するタスクです。取得した情報は特別は変数に格納され、利用することができます。不要であれば、時間短縮のため、「gather_facts: false」や「gather_facts: no」にしておきます。
	- # ansible -m setup localhost でどんな情報を拾ってきているかが見れますよ :)

- towerのインストールの途中でignoreされたエラーがあったのですが、ご愛嬌でしょうか？
- TASK [migrations : Check Tower version for supervisor configuration] ************************
fatal: [localhost]: FAILED! => {"changed": false, "cmd": "cat /var/lib/awx/.tower_version", "delta": "0:00:00.003020", "end": "2018-07-17 07:02:47.390258", "msg": "non-zero return code", "rc": 1, "start": "2018-07-17 07:02:47.387238", "stderr": "cat: /var/lib/awx/.tower_version: No such file or directory", "stderr_lines": ["cat: /var/lib/awx/.tower_version: No such file or directory"], "stdout": "", "stdout_lines": []}
...ignoring
	- 新規インストールなので supervisor のmigration が skipされたはずです。fatalであっても先に進んで最後にfailedがなければ基本大丈夫なはずですです。
failedになるtaskも何個か出てきますが、だいたいignoringになっていると思います。最終的に成功していれば大丈夫です（たぶん）
	- ｗw
	- なんとなくわかりました

- Ansible TowerをButton一つでログインができるようになる、Ansible Buttonを持ってきました。興味がある方は是非。
- Machine CredentialのPrivate Key Passphraseがハイライトされる件は、UIのバグのようです(秘密鍵を設定せずに、Passphraseのみを設定すると、これを削除しても保存することができません)。upstreamにissue登録されています(https://github.com/ansible/awx/issues/1518 )。後ほど確認してみます(大佐が)。ご協力ありがとうございます :)
	- 確認してみます :)

- ansible_engine の guide の Exercise 3 (https://github.com/ansible/lightbulb/tree/master/guides/ansible_engine/3-variables) のPlaybookで、ときどき{% raw %}{% endraw %}が出てきますが、これはPlaybookには記載しなくていいもの、であってますでしょうか？
	- それは jinja2 の変数をhtml上で変数展開せずに出すときに使うのですが、Web上の表記はおそらく誤記なので無視してOKです。前回、同じ所でつまづいたので
		- ありがとうございます！（メンターなのに質問しちゃいました :-) ）

- 演習1.3にてプレイブック実行すると「fatal: [node-1]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: ssh: Could not resolve hostname <52.221.200.160>: Name or service not known\r\n", "unreachable": true}」と3ノードともssh接続に失敗してしまいます。sshコマンドにて上記IPを指定すると接続できるのです… 
- 解決しました。hostsにansible_host=<52.221.200.160>と書いていました…。 

- 自分で作ったPlaybookをAnsible Towerに登録するやり方を教えてください。
	- ① /var/lib/awx/projects/ 配下にディレクトリを作成　※OSユーザawxがアクセスできるように
	- ② ①で作成したディレクトリにPlaybookをコピー　※OSユーザawxがアクセスできるように
	- ③ Tower の Project で 「SCM Type」=手動(Manual)で 「Playbookディレクトリー」に①のディレクトリを登録
	- ④ ジョブテンプレートのProjectで③で作成したやつを指定、Playbookの一覧に②でコピーしたPlaybookが出てくるはずです。(ここでリストアップされるには Playbook のヘッダに hosts: セクションを含んでいる必要があります)

	- ご自身で作ったPlaybookをGitなどに登録して、Ansible TowerのProjectを作成して先に作ったGitレポジトリを指定することでも可能です。
	- Privateなrepoの場合は、Source control credentialを作ってProjectに割り当ててください :)

- Ansible Tower についてはこのスライドも参考になるかも +1
	- https://www.slideshare.net/ssuserf487dc/ansible-tower

- vimを使っている方は :set paste しておくとコピペする時にインテンドずれなくなって幸せになれるかもです。

- おすすめ書籍は？
	- Ansible実践ガイド 第2版 (https://book.impress.co.jp/books/1117101100)
	- Ansible徹底入門  (https://www.shoeisha.co.jp/book/detail/9784798149943)
- おすすめブログは？
	- https://tekunabe.hatenablog.jp/
		- ご紹介ありがとうございます (^^) ネットワークモジュールを中心に攻めています。
	- https://awsbloglink.wordpress.com/

# 所感

途中経過ですが、参加された9名の方からアンケートに回答頂いております。ネットワーク関連の内容もやってみたいとの声が強いですね。

![アンケート経過.png](https://qiita-image-store.s3.amazonaws.com/0/211121/43c9fd90-ff45-35d3-8052-0bf6080286ed.png)

また、メンター枠で参加頂いた方々もご活躍いただきました。Red Hat社員いらないんじゃないかくらいスピーディーに前回の経験を踏まえてサポートいただきありがとうございます。メンター用のステッカーを作ることを検討中です。

今回はじめてAnsibleを触ったという方もちらほらいらっしゃいました。今後はAnsibleが使えるリソースを自由にリクエストできるように、コミュニティにオープンに勉強してもらう場を作っていきたいと思います。そのためには支援していただけるメンターのような方のご協力は非常に重要ですので、引き続きよろしくお願いいたします。