Slide 1

Slide 1 text

AXLBIT Inc. 0 俺流!! Ansible学習ベストプラクティス @hiromaaa03

Slide 2

Slide 2 text

AXLBIT Inc. 1 自己紹介 • 竹西 宏真(@hiromaaa03) • AXLBIT株式会社 • ソリューション部 • インフラエンジニア • 趣味:バスケットボール、お酒 • コミュニティ活動:YOUTH TECH (@youthtechtokyo)

Slide 3

Slide 3 text

AXLBIT Inc. 2 やってること

Slide 4

Slide 4 text

AXLBIT Inc. 3 Built by 環境構築やってます。

Slide 5

Slide 5 text

AXLBIT Inc. 4 Released by リリースやってます。

Slide 6

Slide 6 text

AXLBIT Inc. 5 いま、おそらく社内で一番Playbookかいてます。

Slide 7

Slide 7 text

AXLBIT Inc. 6 もともと

Slide 8

Slide 8 text

AXLBIT Inc. 7 Ansible… なにそれ おいしいの?

Slide 9

Slide 9 text

AXLBIT Inc. 8 俺流!! 右も左もわからない新卒が実践した Ansible学習ベストプラクティス

Slide 10

Slide 10 text

AXLBIT Inc. 9 前提として • 自由につくってこわせる実行環境の用意 • Ansibleベストプラクティスを意識したシンプルなPlaybookの用意 https://docs.ansible.com/ansible/latest/user_guide/playbooks_best_practices.html#directory-layout https://github.com/ansible/ansible-examples/tree/master/lamp_simple

Slide 11

Slide 11 text

AXLBIT Inc. 10 では本題

Slide 12

Slide 12 text

AXLBIT Inc. 11 といっても

Slide 13

Slide 13 text

AXLBIT Inc. 12 4つのSTEPを繰り返すだけ

Slide 14

Slide 14 text

AXLBIT Inc. 13 STEP 1 魔法のansible-playbookコマンド

Slide 15

Slide 15 text

AXLBIT Inc. 14 STEP 2 手動での環境構築

Slide 16

Slide 16 text

AXLBIT Inc. 15 STEP 3 手順書の作成

Slide 17

Slide 17 text

AXLBIT Inc. 16 STEP 4 Playbookの作成

Slide 18

Slide 18 text

AXLBIT Inc. 17 Playbook理解への道のり

Slide 19

Slide 19 text

AXLBIT Inc. 18 Inventory • 対象ホストをグループに分けてホスト制御を確認 • インベントリファイルになるべくvars(変数)を記述しない ※好みの問題だと思ってます。僕はなるべくvarsの記述場所を統一したい派

Slide 20

Slide 20 text

AXLBIT Inc. 19 group_vars • まずvars(変数)の定義はgroup_varsのみで確認 – なれてきたらinventoryやhost_vars,extra_varsをつかってみる! – 内容をリスト定義してみたりするとよりgood!! • 優先順位を意識する https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html > 優先度:高 優先度:低 高 低

Slide 21

Slide 21 text

AXLBIT Inc. 20 task • taskには必ずnameをつける! • shellモジュールやcommandモジュールの使用を控える • 頻出モジュールを調査する(yum,template,files などなど…) • 個人的には”when”による条件分岐にはやく慣れる https://docs.ansible.com/ansible/latest/user_guide/playbooks_conditionals.html#the-when-statement

Slide 22

Slide 22 text

AXLBIT Inc. 21 filesとtemplates(設定ファイルの送付) • filesとtemplatesの違いを認識する – 送付するファイルに変数を使用しない場合、rolesディレクトリ内files配下に ファイルを格納し、copyモジュールを使用 – 送付するファイルに変数を使用する場合 、rolesディレクトリ内templates配下に ファイルを格納し、templateモジュールを使用 ※ チームでPlaybookを編集する場合など、filesとtemplatesの構成を理解せずに Playbookの編集をすると上記をごちゃごちゃに配置する人が出てくる恐れがあるので チームへの周知もかねて徹底しましょう!! (ちなみに実際にありました。。。)

Slide 23

Slide 23 text

AXLBIT Inc. 22 jinja2 • 便利!!だから使おう!!! https://docs.ansible.com/ansible/latest/user_guide/playbooks_templating.html http://jinja.pocoo.org/docs/2.10/ • Templateで設定ファイルを送付するときに柔軟な設定が可能 – 設定ファイル内でif分岐やforによるループ処理、varsに格納している変数の反映など • taskでも使用可能。 – 取得したvarsの配列からフィルターをかけて対象の要素のみを取り出せる – whenの判定にも使用可能など ※Jinja2テンプレート自体のバージョンによって使えるフィルターなどに違いがあるので注意

Slide 24

Slide 24 text

AXLBIT Inc. 23 ありがとうございました。

Slide 25

Slide 25 text

AXLBIT Inc. 24 AXLBITブログ立ち上げようとしてます。 まだ準備中なのでミラーサイトですが、Ansibleの多重ループについて記事を書きました。 良ければ、ご覧ください!! https://blog.axltest.biz/?p=40

Slide 26

Slide 26 text

AXLBIT Inc. 25 Accelerate your Business with IT