Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
AnsibleNight_2021-02-10
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
hito58
February 14, 2021
Technology
2.9k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AnsibleNight_2021-02-10
Ansible Night Online 2021.02.10
hito58
February 14, 2021
Other Decks in Technology
See All in Technology
SDDの運用にめげずに向き合った話
sansantech
PRO
1
130
購入ドメインでの課題と取り組み
ykagano
0
150
オンラインゲームのシステム全体像 - コロプラ 2026年度 新卒研修
colopl
0
870
OSC2026on_the-world-is-waiting-for-your-voice.pdf
naruoga
0
360
20260930_Gemma4_Hands-on
tsho
0
230
The seven pitfalls of AI (revised version)
ufried
0
280
DWH の限界突破! AI エージェント向け爆速リアルタイムデータ基盤 ClickHouse
jozono
1
210
カンファレンスに参加した後の浮遊感とセルフケア
pauli
0
310
脆弱性診断って、何をしているの? 〜弱点を見つけて、会社の改善につなげるまで〜
keeg
0
390
ミイダス株式会社 テックチームのご紹介 / MIIDAS Tech Team
miidas
0
160
Snapshot Testing in Practice: Predictable and Reliable SwiftUI Views
fespinoza
0
140
AI駆動開発の時代になったのでトヨタ生産方式から見直す
terurou
2
4k
Featured
See All Featured
Faster Mobile Websites
deanohume
310
32k
The Pragmatic Product Professional
lauravandoore
37
7.5k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
Building an army of robots
kneath
307
47k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.9k
Darren the Foodie - Storyboard
khoart
PRO
4
4k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
710
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
42k
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 | || ||