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 TowerでCICDの検証をしてみた話
Search
sky_joker
February 13, 2020
Technology
2.6k
9
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Ansible TowerでCICDの検証をしてみた話
https://ansible-users.connpass.com/event/162758/
sky_joker
February 13, 2020
More Decks by sky_joker
See All by sky_joker
NetboxとAnsibleを使ってvSphere環境の管理・作業の自動化をしてみよう
sky_joker
0
2k
Ansible Collections概要
sky_joker
1
1.3k
Molecule VMware Driverの紹介
sky_joker
0
1.5k
VMwareとAnsible_Towerで実現する自動化2.0の世界
sky_joker
4
1.3k
Ansible VMwareモジュールの今までとこれから
sky_joker
3
2.9k
vCenterシミュレーターを使ってCIをやってみよう.pdf
sky_joker
6
3k
pyvmomiで始めるvSphere_API生活_初級編_.pdf
sky_joker
1
4.9k
NSXのAnsibleモジュールについて調べてみた
sky_joker
2
770
VMwareで作ったIaaSにAnsible Towerを導入した話
sky_joker
4
2.1k
Other Decks in Technology
See All in Technology
Kiro Crew入門 - 常駐エージェントの仕組みと使いどころ / Intro to Kiro Crew
k_adachi_01
1
480
2026-08-15 JAWS-UG 茨城 #16 Secrets ManagerにおけるSecret値の管理(Terraformの場合) / Secrets Manager Secrets
masasuzu
0
280
その“隠したつもり”が命取り ── 自前と平文をやめて「正解」に委ねる
kuroneko13
0
130
システム思考で問題に対処する
yussak
0
340
Agent 時代の Kaggle 展望 / kaggle-in-the-agentic-era
upura
1
830
JavaScript 研修 (2026)
recruitengineers
PRO
2
630
ソフトウェアサプライチェーンの構造的リスクとコンテナ環境の保護
kyohmizu
4
610
Genie Codeハンズオン基礎編
taka_aki
1
130
도구에서 동료까지: 10년차 AI 스타트업의 AI 적응기
inureyes
PRO
0
210
攻撃と防御で学ぶAI時代のプロダクトセキュリティ演習
recruitengineers
PRO
9
3.1k
SmartHR Engineering Team Deck
smarthr
1
2.8k
Apache Icebergインフラストラクチャ:ストレージ・カタログ・エンジンの選択肢とClouderaプラットフォームでの実装
tsugiyama
0
120
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Leo the Paperboy
mayatellez
8
2.2k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Done Done
chrislema
186
16k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
210
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.4k
Raft: Consensus for Rubyists
vanstee
141
7.6k
The Spectacular Lies of Maps
axbom
PRO
1
930
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
350
Claude Code のすすめ
schroneko
67
230k
Practical Orchestrator
shlominoach
191
12k
Transcript
Ansible TowerでCICDの検証を やってみた話 Ansible ディベロッパー部 2020.02
今日話す事 01. 背景 02. 課題 03. 検証、デモ(動画) 04. まとめ、今後の課題
自己紹介 3 --- - 名前: 大嶋 健容 Twitter: @sky_jokerxx GitHub:
sky-joker 仕事: 自動化エンジニア コントリビュート: ansible: - Zabbix - VMware - etc 今欲しいもの: - 第10世代 NUC - AMD Ryzen 3990X @sky_jokerxx 得意: - ansible - VMware(vSphere, NSX) - vSphere/NSX APIを使った開発 - OSSとVMwareの組み合わせ 興味: - 自動化 - コンテナ(k8s, OpenShift) - CICD 趣味: - 自宅ラックで検証 - Ansibleモジュール開発 ナナチスキ
背景 4
そもそものきっかけ 5 今までにいくつかのクラウドサービスの立ち上げから設計、構築、運用、自動 化というのを一通りやってきたなかで、Ansible Towerを使ったCICDが必要と感 じたきっかけは… からでした! サービスの拡大による運用申請が増えたこと
6 サービス立ち上げ時 サービスが拡大してくると しばらく時間が空くので開発や振り返りや自身のサービ ス拡張に時間が充てられる 了解〜 Aサービスの申請よろしく! 了解〜 コード修正、push、launch Bサービスの申請よろしく!
Aサービスの申請よろしく! 了解〜 Bサービスの申請よろしく! Cサービスの申請よろしく! あ、Aサービスの申請追加で! あ、Bサービスの申請追加で! ふえぇ〜〜
7 まぁ、一つのサービス なら よし、終わったから 自分の仕事しよう Aサービスの申請お願い Bサービスの申請お願い またか つらたん Cサービスの申請お願い
本当の仕事 自分の仕事 終わった Aサービスの申請お願い Bサービスの申請お願い 終わったから今度こそ 自分の仕事やるぞ 申請の悪循環 またか
8 さて、どうしたものか
9 ∧∧∧∧∧ ∧∧∧∧∧ ∧ ∧ ∧ ∧∧ ∧ ∧ ∧
∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧∧∧ 自動化2.0 の予感!! ボタン ボタン ボタン 自動化ボタン作るよ! 連携するよ! Aサービスの申請よろしく! 自動化ボタンあるから 自分でやってね! 自分の仕事に集中 するよ! 担当がいなくてもボタン があれば誰でもできる から帰るよ! スピードUP! Ansible Towerの UIを使うよ!
課題 10
自動化2.0の課題 11 • 誰でも出来るように操作はシンプルにし入力パラメーター標準化をしたい • 操作範囲や影響範囲は最小限にしたい • 今まで通りCIをやりたい(心理的安全性を確保したい) • Gitでパラメーターを管理しているので変更後マージしたい
Ansible TowerのWebUIで操作 Ansible Towerのロールで制御、SURVEYの使用 moleculeを使ったPlaybook(テンプレート)を作成して ワークフローテンプレートに組み込む Git更新用のPlaybook(テンプレート)を作成してワーク フローテンプレートに組み込む
検証 12
検証環境コンポーネント 13 項目 コンポーネント バージョン 備考 基盤 ESXi 6.7.0 vCenter
6.7.0 自動化ツール Ansible Tower 3.6.2 Ansible 2.9.3 venvを使用 テスト molecule 2.22 M/W bind 9.11.4-9.P2 今回は自動化はbindの設定を対象にしてみます
操作性のシンプルと入力パラメーターの標準化 14 レコード追加 add_records: - name: www rdclass: IN rdtype:
A rdata: 192.168.0.1 レコード更新 update_records: - name: www rdclass: IN rdtype: A rdata: 192.168.0.1 レコード削除 delete_records: - name: www rdclass: IN rdtype: A rdata: 192.168.0.1 add_records - name: www rdclass: IN rdtype: A rdata: 192.168.0.1 : ボタンを押す
影響範囲の制御(SURVEY) 15 番号 説明 操作対象 ① 設定を変更する必要なnamed.confのみ選択可能に した × ②
設定を変更する必要なゾーンのみ選択可能にした ◦ ③ Gitにpushする時のパスワード(標準埋込) × ④ 使用するbindのロールを入力(標準埋込) × ⑤ bind設定を保存するリポジトリ名(標準埋込) × ⑥ コミットメッセージを入力する ◦ ① ② ③ ④ ⑤ ⑥
moleculeで躓いた課題 16 検証開始 _人人人人人人人人人人人人人人人人人_ > ドライバーが無い事による突然の死 <  ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄
無いなら作ればええやん! 17 その前にPR見とこう 作るぞ!! あるやん! コメントを読み進めると 既にドライバーが沢山あるし、ほとんどの人は VagrantやDockerで済むし 需要あるか分からない コメント
ちーん
標準ドライバーを使わずテスト用インスタンスを 生成する方法 18 • Delegatedドライバーを使う • 標準ドライバーで対応出来ない場合、Delegatedドライバを使う 事でテスト用インスタンスを自由に作ることができます このドライバを使う場合は以下のPlaybookを作成する必要があ ります
• create.yml • テスト用インスタンスを作成するPlaybook • destroy.yml • 作成したテスト用インスタンスを削除するPlaybook
作成したワークフロー 19 開始 BIND設定正常性テスト BINDレコード更新 リポジトリの設定ファイル更新
BIND設定正常性テストの処理 20 開始 BIND設定正常性テスト BINDレコード更新 リポジトリの設定ファイル更新 bind-role bind-config CI TEST
更新 設定 • 構文チェック(yamllint) (略) • instance作成(create) • 事前準備(prepare) • 新設定の流し込み(converge) (略) • Instance削除(destroy) moleculeテスト項目 設定
BIND設定正常性テストの処理 21 開始 BIND設定正常性テスト BINDレコード更新 リポジトリの設定ファイル更新 bind-role bind-config CI TEST
• 構文チェック(yamllint) (略) • instance作成(create) • 事前準備(prepare) • 新設定の流し込み(converge) (略) • Instance削除(destroy) moleculeテスト項目 ESXi template instance リンククローン 更新 設定 設定 templateのシステムディスクを共有する リンククローンを使うことでinstance作成 の高速化を図る Read Only 差分のみ システム ディスク
BIND設定正常性テストの処理 22 開始 BIND設定正常性テスト BINDレコード更新 リポジトリの設定ファイル更新 bind-role bind-config CI TEST
• 構文チェック(yamllint) (略) • instance作成(create) • 事前準備(prepare) • 新設定の流し込み(converge) (略) • Instance削除(destroy) moleculeテスト項目 ESXi instance 更新 設定 設定 • bind-roleでbindの設定を入れる • bindの起動 設定
BIND設定正常性テストの処理 23 開始 BIND設定正常性テスト BINDレコード更新 リポジトリの設定ファイル更新 bind-role bind-config CI TEST
• 構文チェック(yamllint) (略) • instance作成(create) • 事前準備(prepare) • 新設定の流し込み(converge) (略) • Instance削除(destroy) moleculeテスト項目 ESXi instance 更新 設定 設定 • bind-roleでbindの更新設定を入れる • bindのリロード 設定 更新 設定
BIND設定正常性テストの処理 24 開始 BIND設定正常性テスト BINDレコード更新 リポジトリの設定ファイル更新 bind-role bind-config CI TEST
• 構文チェック(yamllint) (略) • instance作成(create) • 事前準備(prepare) • 新設定の流し込み(converge) (略) • Instance削除(destroy) moleculeテスト項目 ESXi instance 更新 設定 設定 • 問題なく設定が更新できたらinstance を削除する
BINDレコード更新の処理 25 開始 BIND設定正常性テスト BINDレコード更新 リポジトリの設定ファイル更新 bind-role bind-config main ESXi
• 本番環境にbind-roleでbindの更新設 定を入れる • bindのリロード bind 設定 設定 更新 設定
BINDレコード更新の処理 26 開始 BIND設定正常性テスト BINDレコード更新 リポジトリの設定ファイル更新 bind-role bind-config 更新 設定
更新 設定 up date 設定
デモ 27 https://vimeo.com/390750827
まとめ、今後の課題 28
まとめ 29 他の人でも対応できるように意識する(自動化2.0など) サービスが拡大することを意識して自動化する必要がある ただし、ワークフローを作るのは結構手間なので既存のCIツールの置き換えに はならないと思う Ansible Tower(AWX)を使えば簡易CICDの実装ができそう Ansible Tower(AWX)で操作をシンプルにすることができた
操作できる範囲や入力内容を最小限にしてシンプルにすることで初めての人 でも対応できそう
今後の課題 30 今回は設定ファイルの構文チェックとプロセスのリロードまでしか確認して いないため、反映後のレコードチェック(digなどで)が必要があると思う CIや本番への設定反映後のテストを作る必要 本番に設定を反映する時に失敗することも考慮する必要があるため、失敗し た時の自動切り戻しもワークフローに入れる必要があると思う 設定を反映した後に失敗した時の自動切り戻しが必要
Thank you For listening https://twitter.com/sky_jokerxx https://qiita.com/sky_jokerxx https://sky-joker.tech https://github.com/sky-joker @sky_jokerxx