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
AnsibleNight_2021-02-10
Search
hito58
February 14, 2021
Technology
1
2.6k
AnsibleNight_2021-02-10
Ansible Night Online 2021.02.10
hito58
February 14, 2021
Tweet
Share
Other Decks in Technology
See All in Technology
制約が導く迷わない設計 〜 信頼性と運用性を両立するマイナンバー管理システムの実践 〜
bwkw
3
1k
CDK対応したAWS DevOps Agentを試そう_20260201
masakiokuda
1
370
AIエージェントを開発しよう!-AgentCore活用の勘所-
yukiogawa
0
180
2026年、サーバーレスの現在地 -「制約と戦う技術」から「当たり前の実行基盤」へ- /serverless2026
slsops
2
260
AI駆動開発を事業のコアに置く
tasukuonizawa
1
320
Agile Leadership Summit Keynote 2026
m_seki
1
650
顧客との商談議事録をみんなで読んで顧客解像度を上げよう
shibayu36
0
270
広告の効果検証を題材にした因果推論の精度検証について
zozotech
PRO
0
210
SchooでVue.js/Nuxtを技術選定している理由
yamanoku
3
160
10Xにおける品質保証活動の全体像と改善 #no_more_wait_for_test
nihonbuson
PRO
2
320
M&A 後の統合をどう進めるか ─ ナレッジワーク × Poetics が実践した組織とシステムの融合
kworkdev
PRO
1
480
ブロックテーマでサイトをリニューアルした話 / 2026-01-31 Kansai WordPress Meetup
torounit
0
480
Featured
See All Featured
HDC tutorial
michielstock
1
390
The SEO Collaboration Effect
kristinabergwall1
0
350
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
170
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
170
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
140
Color Theory Basics | Prateek | Gurzu
gurzu
0
200
Building Adaptive Systems
keathley
44
2.9k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
170
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
230
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
140
SEO for Brand Visibility & Recognition
aleyda
0
4.2k
Transcript
Ansible Towerをみんなで使うためにやったこと @hito58 Ansible Night 2021.02
自己紹介 氏名: 木場 仁美(こば ひとみ, @hito58) 仕事: - 通信キャリアで音声系システム開発担当 -
入社5年目 - 運用を楽にするためにがんばってます
今日お話しすること
今日お話しすること 音声系システムの運用でAnsible Towerを使うにあたり やったこと ①インベントリを共通化する ②Playbookを1つのリポジトリで管理する この2つについて紹介 (本内容は所属団体とは無関係な個人の感想であり、正しいからやるべきというものではありません!)
①インベントリの共通化 そもそもの利用背景: Ansible Towerをつかって運用コマンドをうちたい
①インベントリの共通化 そもそもの利用背景: Ansible Towerをつかって運用コマンドをうちたい アンシブル タワー worker11 worker10 worker21 worker20
controller
①インベントリの共通化 そもそもの利用背景: Ansible Towerをつかって運用コマンドをうちたい (障害対応、計画的な保守業務) アンシブル タワー Playbook実行 worker11 worker10
worker21 worker20 controller
①インベントリの共通化 なぜ共通化が必要か: 操作内容によってインベントリにおけるhostsの定義が違う
①インベントリの共通化 なぜ共通化が必要か: 操作内容によってインベントリにおけるhostsの定義が違う MWが提供する保守用コマンドは controllerに入ってクラスタ単位でうつ view stats --cluster 1 worker11
worker10 worker21 worker20 controller hosts: で指定される単位
①インベントリの共通化 --- - name: 状態確認 hosts: all tasks: - shell:
view stats --cluster {{ cl_no }} register: result_status ・・・ # inventory worker1 cl_no=1 ansible_host=192.168.0.1 worker2 cl_no=2 ansible_host=192.168.0.1 全部同じアドレス(controllerのアドレス)
①インベントリの共通化 なぜ共通化が必要か: 操作内容によってインベントリにおけるhostsの定義が違う df -h リソース確認などLinuxコマンドは サーバ指定でうつ worker11 worker10 worker21
worker20 controller hosts:で 指定される単位
①インベントリの共通化 --- - name: 状態確認 hosts: all tasks: - shell:
{{ command }} register: result_status ・・・ # inventory controller ansible_host=192.168.0.1 worker10 ansible_host=192.168.0.2 worker11 ansible_host=192.168.0.3 worker20 ansible_host=192.168.0.4 worker21 ansible_host=192.168.0.5
①インベントリの共通化 これらをTowerから実行するために: ①それぞれのインベントリをTowerに登録 • 登録するhosts数がサーバ台数より多くなる →Towerは登録するhosts数に応じてライセンス費用決まる ②インベントリを正規化して共通のインベントリとして登録 • 既存Playbookを書き換えないといけない
①インベントリの共通化 これらをTowerから実行するために: ①それぞれのインベントリをTowerに登録 • 登録するhosts数がサーバ台数より多くなる →Towerは登録するhosts数に応じてライセンス費用決まる ②インベントリを正規化して共通のインベントリとして登録 • 既存Playbookを書き換えないといけない
①インベントリの共通化 方針: ・hostsは最小単位を採用、その他の概念はgroupsで表現 (groupはいくら登録してもノーカウント!) ・インベントリに合わせてplaybookを作りかえ (delegate_to節やhosts:にワイルドカード/正規表現つかうと楽!)
①インベントリの共通化 書き換え例: MW提供のコマンド利用するばあい --- - name: 状態確認 hosts: *0 tasks:
- delegate_to: controller shell: {{ command }} register: result_status ・・・ ) # inventory controller ansible_host=192.168.0.1 worker10 ansible_host=192.168.0.2 worker11 ansible_host=192.168.0.3 worker20 ansible_host=192.168.0.4 worker21 ansible_host=192.168.0.5 [worker1] worker10 Worker11 [worker2] worker20 worker21
今日お話しすること 音声系システムの運用でAnsible Towerを使うにあたり やったほうがいいこと ①インベントリを共通化する ②Playbookを1つのリポジトリで管理する この2つについて紹介
②Playbookを1つのリポジトリで管理する Ansible TowerはPlaybookをGitから呼び出して実行する Playbookを保管するリモートリポジトリが必要 アンシブル タワー サーバー① サーバー② Playbook実行 Playbooks
repository Playbook読み込み Git
②Playbookを1つのリポジトリで管理する • インベントリが全Playbook共通にできたからその流れで Playbookもまとめて1つのGitリポジトリで管理 • 共通処理はRoles/カスタムモジュールにし、別のリポジトリで 管理、submoduleとして紐づける アンシブル タワー Playbook/インベントリ読み込み
Playbooks repository Git Role①repository Role②repository Lib①repository submodule
②Playbookを1つのリポジトリで管理する リポジトリ内構成例: output_perser@xxxx/ run_mw_command@xxxx/ library/ ../output_perser/library/output_perser.py ../run_mw_command/library/run_mw_command.py pb_config_update/ main.yml pb_get_log/
main.yml roles/ vnfm@xxxx/ worker@xxxx/ ansible.cfg hosts.yml
②Playbookを1つのリポジトリで管理する リポジトリ内構成例: output_perser@xxxx/ run_mw_command@xxxx/ library/ ../output_perser/library/output_perser.py ../run_mw_command/library/run_mw_command.py pb_config_update/ main.yml pb_get_log/
main.yml roles/ vnfm@xxxx/ worker@xxxx/ ansible.cfg hosts.yml inventoryファイルも同一リポジトリ内 インベントリソースとしてTowerに登録 Jobテンプレートで使うPlaybookたち カスタムモジュールたち(Submodule) Roleたち(Submodule)
②Playbookを1つのリポジトリで管理する よかったこと: - このリポジトリだけプロジェクトとしてTowerに登録すればよい (Towerにプロジェクトが乱立されない) - cloneしたらTowerとほぼ同じ環境でPlaybookの実行確認ができる
まとめ • インベントリを正規化/共通化してメンテしやすくなった • リポジトリを1つにしてPlaybookを開発、試験しやすくなった • Towerを使わなかったとしても、わかりやすい構成で使えるかも
____________________________ < Thank you for listening! > ---------------------------- ¥ ^__^
¥ (oo)¥_______ (__) A )¥/¥ ||----w | || ||