Make your Ansible playbooks flexible, maintainable, and scalable youtu.be/kNDL13MJG6Y @YouTubeさんから
2019-08-07 20:42:48@YouTube Ansible Playbookを公開する リモートのターゲットに対してPlaybookが適正に実行される事を保証するのは当然であり(これは主にCI的な理由、テスト環境はAWS等のクラウドなので) ローカルでもPlaybookが実行できるように調整する事が要求される pic.twitter.com/0FVFPihssc
2019-08-07 20:45:15@YouTube Roleは再利用できる形でコード化する 例えばhttpdをインストール、設定する操作対象が複数ある場合、roleをまず1つ作成し設定は各自のシステムで変数ファイル等で設定するようにする 可能なら作成したroleをAnsible Galaxyに登録し他のユーザーからのプレビューを受けると尚良い pic.twitter.com/2bmFlQsYUw
2019-08-07 20:53:56@YouTube 作成したroleには必ずversionを付ける versionを指定する形にしておかないと意図しないバージョンアップでPlaybookが壊れる pic.twitter.com/7GLTT4ATXm
2019-08-07 20:59:21@YouTube Ansible PlaybookのCI/CDパイプラインの例 テストはmoleculeで書く moleculeは正式にAnsibleのモジュールに含まれることになったので今後はAnsibleの標準のテストツールとなる pic.twitter.com/lghtOMau9c
2019-08-07 21:39:40@YouTube - Ansibleが出力するDEPRECATION WARNINGSには都度都度細かく目を通す - Ansibleのバージョンが上がるときは移行手順のドキュメントを良く読み込む - Ansibleが明らかに不適切な警告を出力する場合はTask単位で警告を無効化する事が出来る pic.twitter.com/kzJyndLbN3
2019-08-07 21:53:04@YouTube 「YAMLはプログラミング言語ではない」 Taskの中で明らかに不適切な記述をしないと処理が実装できない場合(例えば数行のPythonコードが必要、複雑なfilteringが要求される、等) こう言う時はPlugin化もしくはmodule化する事を検討すべき pic.twitter.com/OOhHgZdAkc
2019-08-07 22:01:37@YouTube CIの速度は最速を目指す Playbookのテストに2時間も掛かってるようではいけない - 「gather_facts」は無効化する(ほとんどの場合このオプションを有効にする必要ない) - 最大同時実行可能数を増やす(forksの初期値は5だが必要なら増やす) pic.twitter.com/JDgXGwJv8E
2019-08-07 22:09:47@YouTube - package系のモジュールは基本的に1つずつ処理するので遅い - copyモジュールは標準では1つずつファイルやディレクトリを処理する。可能ならasyncオプション等を使う - lineinfileモジュールは行数の多いファイルの書き換えには向かない。行数が多い時はtemplateモジュールを検討する pic.twitter.com/AwWWGefU4Z
2019-08-07 22:26:07@YouTube asyncの使用例 Is there a way to run with_items loops in parallel in Ansible? - DevOps Stack Exchange devops.stackexchange.com/questions/3860…
2019-08-07 22:27:13@YouTube callbackプラグインを使い実行速度の測定を行う - profile_rolesでrole単位の処理速度を計測する - profile_tasksでtask単位の処理速度を計測する 何がボトルネックになっているか常に注意しPlaybookのチューニングに努める pic.twitter.com/ZFQxJsPZHq
2019-08-07 22:33:55@YouTube Playbookの実行対象システムがEC2などでIPアドレスが固定ではなくInventoryファイルが何回も変更される場合 - Dynamic Inventoryを導入する - Inventoryを作成するスクリプトを実装する どちらかの手段を講じる Inventoryを作成する処理はどの言語で書いてもそれほど難しくはない pic.twitter.com/6VIMZZ7DZU
2019-08-07 22:42:24@YouTube 最後に - 自動化は「全て自動化するか全くしないか」の2択だ - 曖昧さを排除せよ(例えばstateの記述は必要ない場合でも明示的に書いておけ) - callbackプラグインは便利なのでどんどん使っていけ pic.twitter.com/09kVNYrMgG
2019-08-08 06:33:15