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
2.9k
pyvmomiで始めるvSphere_API生活_初級編_.pdf
sky_joker
1
4.8k
NSXのAnsibleモジュールについて調べてみた
sky_joker
2
750
VMwareで作ったIaaSにAnsible Towerを導入した話
sky_joker
4
2.1k
Other Decks in Technology
See All in Technology
Agentic AI 時代のテスト手法: Kiro とはじめるプロパティベーステスト (AWS Summit Japan 2026 | DEV212)
ymhiroki
0
200
AWS Summit 2026で見えたSIerにとっての Amazon Quickの位置づけ
maf_0521
0
160
“ID沼入口” - 基本とセキュリティから始める、考え続けるためのID管理技術勉強会 告知&イントロ
ritou
0
380
Kotlin 開発のツラミを爆破した話! / Explode the difficulty of Kotlin dev!
eller86
0
140
Keeping applications secure by evolving OAuth 2.0 and OpenID Connect
ahus1
PRO
1
110
FinOps X 2026 Recap from Engineer Side #JapanFinOps
chacco38
0
240
Docker Desktop不要の時代が来る? WSL標準の「wslc」で Linuxコンテナを動かしてみた.
ueponx
0
560
背中から、背中へ /paying forward to community
naitosatoshi
0
210
スタートアップにおけるアジャイルの実践について #shibuyagile
murabayashi
3
2k
技術・能力を向上する原理原則 #きのこセッションa #きのこ2026
bash0c7
0
200
Baseline対応のDOMの型定義を作った
uhyo
2
600
5分でわかる Amazon Connect_20260608
hwangbyeonghun
0
170
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
Marketing to machines
jonoalderson
1
5.5k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
430
Product Roadmaps are Hard
iamctodd
PRO
55
12k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.2k
Paper Plane (Part 1)
katiecoart
PRO
0
9.5k
New Earth Scene 8
popppiees
3
2.4k
Balancing Empowerment & Direction
lara
6
1.2k
How GitHub (no longer) Works
holman
316
150k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.5k
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.3k
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