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.5k
AnsibleNight_2021-02-10
Ansible Night Online 2021.02.10
hito58
February 14, 2021
Tweet
Share
Other Decks in Technology
See All in Technology
ビジネス職が分析も担う事業部制組織でのデータ活用の仕組みづくり / Enabling Data Analytics in Business-Led Divisional Organizations
zaimy
1
310
データ基盤からデータベースまで?広がるユースケースのDatabricksについて教えるよ!
akuwano
3
160
[SRE NEXT] ARR150億円_エンジニア140名_27チーム_17プロダクトから始めるSLO.pdf
satos
4
1.9k
Contributing to Rails? Start with the Gems You Already Use
yahonda
2
120
LLM時代の検索
shibuiwilliam
2
630
Claude Code に プロジェクト管理やらせたみた
unson
7
4.9k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
54
22k
american airlines®️ USA Contact Numbers: Complete 2025 Support Guide
supportflight
1
120
ゼロからはじめる採用広報
yutadayo
3
1k
CDK Vibe Coding Fes
tomoki10
1
480
AWS CDKの仕組み / how-aws-cdk-works
gotok365
10
810
United™️ Airlines®️ Customer®️ USA Contact Numbers: Complete 2025 Support Guide
flyunitedguide
0
770
Featured
See All Featured
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
980
A designer walks into a library…
pauljervisheath
207
24k
Adopting Sorbet at Scale
ufuk
77
9.5k
Code Reviewing Like a Champion
maltzj
524
40k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Site-Speed That Sticks
csswizardry
10
700
Visualization
eitanlees
146
16k
Side Projects
sachag
455
42k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Building an army of robots
kneath
306
45k
The World Runs on Bad Software
bkeepers
PRO
69
11k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
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 | || ||