Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Ansible Roleの継続的自動Update
Search
chroju
April 25, 2018
Technology
1
6.4k
Ansible Roleの継続的自動Update
Ansible Night in Tokyo 2018.04
chroju
April 25, 2018
Tweet
Share
More Decks by chroju
See All by chroju
ポエム駆動転職
chroju
0
120
Other Decks in Technology
See All in Technology
生成AI活用の組織格差を解消する 〜ビジネス職のCursor導入が開発効率に与えた好循環〜 / Closing the Organizational Gap in AI Adoption
upamune
2
950
5min GuardDuty Extended Threat Detection EKS
takakuni
0
140
標準技術と独自システムで作る「つらくない」SaaS アカウント管理 / Effortless SaaS Account Management with Standard Technologies & Custom Systems
yuyatakeyama
3
1.2k
製造業からパッケージ製品まで、あらゆる領域をカバー!生成AIを利用したテストシナリオ生成 / 20250627 Suguru Ishii
shift_evolve
PRO
1
140
生成AIで小説を書くためにプロンプトの制約や原則について学ぶ / prompt-engineering-for-ai-fiction
nwiizo
4
1.5k
“社内”だけで完結していた私が、AWS Community Builder になるまで
nagisa53
1
380
生成AI時代 文字コードを学ぶ意義を見出せるか?
hrsued
1
290
Windows 11 で AWS Documentation MCP Server 接続実践/practical-aws-documentation-mcp-server-connection-on-windows-11
emiki
0
960
あなたの声を届けよう! 女性エンジニア登壇の意義とアウトプット実践ガイド #wttjp / Call for Your Voice
kondoyuko
4
440
生成AI時代の開発組織・技術・プロセス 〜 ログラスの挑戦と考察 〜
itohiro73
0
140
20250625 Snowflake Summit 2025活用事例 レポート / Nowcast Snowflake Summit 2025 Case Study Report
kkuv
1
310
米国国防総省のDevSecOpsライフサイクルをAWSのセキュリティサービスとOSSで実現
syoshie
2
1.1k
Featured
See All Featured
Optimizing for Happiness
mojombo
379
70k
Visualization
eitanlees
146
16k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
700
For a Future-Friendly Web
brad_frost
179
9.8k
Code Reviewing Like a Champion
maltzj
524
40k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
60k
The Straight Up "How To Draw Better" Workshop
denniskardys
234
140k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.3k
KATA
mclloyd
29
14k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
Making Projects Easy
brettharned
116
6.3k
Transcript
ANSIBLE ROLE の継 ANSIBLE ROLE の継 続的自動UPDATE 続的自動UPDATE Ansible Night
in Tokyo 2018.04 chroju
自己紹介 自己紹介 chroju / / インフラの面倒を見たり運用の改善したりする仕事 Ansible / Terraform /
in uxDB / Python あたり GitHub Qiita Twitter
INFRASTRUCTURE AS CODE における INFRASTRUCTURE AS CODE における コードの再利用 コードの再利用
例えば複数のサービスでnginx を使いたい場合 NG → サービスごとにコードを書く OK → 1 回書いたコードを各サービスで再利用 する コード再利用でスノーフレークサーバーを防ぐ
ANSIBLE ROLE での再利用 ANSIBLE ROLE での再利用 Ansible でコードを再利用する仕組みはAnsible Role task,
handler, 変数, template 等をまとめてモジュ ール化 Role の管理は ansible-galaxy コマンドと requirements.yml で可能 $ ansible-galaxy install bennojoy.nginx - src: https://github.com/bennojoy/nginx version: master name: nginx_role
ROLE を再利用 ROLE を再利用
再利用 … 再利用 …
ROLE を更新すると? ROLE を更新すると?
Role を使い回すほど管理が大変になる
ROLE の更新をPLAYBOOK にどう ROLE の更新をPLAYBOOK にどう 反映する? 反映する? Role の更新をいかに各Playbook
側でキャッチする のか? Playbook ごとにRole の更新→テストを全部やるの か? 1000 Playbook あったら? 継続的自動的にやるしかないのでは?
ソフトウェア開発に倣う ソフトウェア開発に倣う Infrastructure as Code は、ソフトウェ ア開発のプラクティスをインフラの オートメーションに活かすアプロー チだ。 (Kief
Morris 『Infrastructure as Code 』p.5)
ROLE ≒ プログラムのPACKAGE ROLE ≒ プログラムのPACKAGE Ansible Role はRubyGems やJS
のyarn など、プログ ラムで言うpackage やmodule と似た位置付け ソフトウェアでもimported package の継続的更新は 課題になっている 定期的にyarn update するには - おもしろweb サー ビス開発日記 Jenkins に bundle update した上で Pull Request させる - @kyanny’s blog
JENKINS !! (OR CI) JENKINS !! (OR CI)
ROLE もCI で継続的UPDATE ROLE もCI で継続的UPDATE こんな感じでうまくいきそう? 1. 更新確認用のブランチにcheckout 2.
install しているrole の更新を確認 3. 更新があればupdate 4. update 後にserverspec 等テストを回す 5. テストが通ったらJenkins からPR 6. 結果をslack に通知
ANSIBLE-GALAXY ANSIBLE-GALAXY での実現 での実現 やりたいのは requirements.yml の記載バージョン から更新があるかの確認 しかし requirements.yml
にバージョン指定されて いると、install -fr しても最新は入らない 最新を追いかける手段がない
バージョンをLOCK する バージョンをLOCK する requirements.yml を2 種類用意する(Gem le.lock の 発想)
requirements.lock.yml にバージョン指定を書く 普段の実行時にはこちらを使う requirements.yml はバージョン指定しない 更新確認ではこちらを使い、lock.yml より新しい バージョンが入るか確認する
SAMPLE SAMPLE # まずlockからインストール $ ansible-galaxy install -r requirements.lock.yml $
ansible-galaxy list -p ./roles > before # 次にrequirements.ymlから $ ansible-galaxy install -fr requirements.yml $ ansible-galaxy list -p ./roles > after $ if [[ $(diff before after | wc -l) -gt 0 ]]; then ... # この後でtestしてpushしてPRして通知
余談: ROLE の後方互換性 余談: ROLE の後方互換性 Role を更新するとき、Playbook 側でなるべく作業が 必要ないよう配慮する
Role の破壊的な変更はなるべくしない Role 名や変数名は変えない 変数をdeprecated にするなら、debug module で その旨を実行時に出力するなど、気付かせてあげ るべき 変数追加時は必ず defaults/ で初期値を設定する
まとめ まとめ Ansible でも依存モジュールを継続的自動更新をす るべき ansible-galaxy obsolete コマンドがほしい 何かいい方法があったら教えてほしいです