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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
AIペネトレーションテスト・ セキュリティ検証「AgenticSec」紹介資料
laysakura
2
9.2k
【CEDEC2026】Creative Approaches to Localizing the Dialects and Unique Speech of Umamusume: Pretty Derby Characters in English
cygames
PRO
3
25k
老害フォレンジッカーはAI羊の夢を見るか?
tadmaddad
0
350
AIコーディングの次。コードレビューと理解負荷を解消して組織の開発生産性を高める
moongift
PRO
2
2.7k
カートの信頼性を担保するWireMockを使ったe2eテスト
ykagano
0
530
[ChatGPT Work LT]事務作業が苦手な人のための バックオフィスの「半」自動化
chimaki_iot
0
330
トークンマネジメントでAIにとって働きやすい環境を実現する
hikaruegashira
0
100
Genie Codeハンズオン応用編
taka_aki
0
120
現場回帰したデータエンジニアが考える AI 時代のキャリア開発 / Career Development in the Age of AI Perspectives from a Hands-on Data Engineer
medley
0
120
コーチングの奥義 何もしないテクニック
jinwatanabe
0
110
My broken English still works: speaking at global OSS events
naruoga
0
110
Apache Icebergインフラストラクチャ:ストレージ・カタログ・エンジンの選択肢とClouderaプラットフォームでの実装
tsugiyama
0
120
Featured
See All Featured
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.5k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
990
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.8k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
So, you think you're a good person
axbom
PRO
2
2.1k
Exploring anti-patterns in Rails
aemeredith
3
470
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Code Review Best Practice
trishagee
74
20k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
440
Building AI with AI
inesmontani
PRO
1
1.1k
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