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
780
VMwareで作ったIaaSにAnsible Towerを導入した話
sky_joker
4
2.1k
Other Decks in Technology
See All in Technology
Driving AI Adoption Using In-House GPUs to Serve Qwen
po3rin
2
450
いかに伝えるか 〜新卒エンジニアの教育のための、ライトノベル活用の一例
ikedon
1
190
Redmine 7.0で私が開発した新機能の狙いと背景
vividtone
1
110
動画配信アプリでの Engage SDK 導入 — TVer Android が Play ストアにコンテンツを届けるまで
techtver
PRO
0
110
DINO-EdgeQuery:Edge-First Polygon Decoding for Building Footprint Extraction from Satellite Imagery
lehupa
0
140
JAWS-UG初心者支部#88わいわい初心塾(夏休みの宿題やったかGit編)
otsuki
0
120
プロダクト思考 × 基盤思考を AIで実現する Compound Engineering
tkc66buzz
1
260
リージョンの壁を越える、 ちょっと変わったAWSサービスの話
falken
PRO
0
250
[RSJ26] NarrativeFlow: Flow-Based Vision-Language-Action Model Using Robot Velocity Fields
keio_smilab
PRO
0
160
現場に行くだけでは足りない——プロダクトエンジニアが業務の流れを捉える観点と、その鍛え方
takumiengineering
0
280
振り返りこそエンジニアの本領
negima
0
290
Beyond the Hype: Practical AI for Your Oracle Database with MCP
thatjeffsmith
1
260
Featured
See All Featured
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
From π to Pie charts
rasagy
0
350
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
570
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.3k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
440
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
250
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
720
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
190
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
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