Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
仮想基盤でのVM大量生産を自動化してみた / automation_20220202_2
Search
Rakus_Dev
February 04, 2022
Technology
460
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
仮想基盤でのVM大量生産を 自動化してみた / automation_20220202_2
Rakus_Dev
February 04, 2022
More Decks by Rakus_Dev
See All by Rakus_Dev
エンジニアが「なぜ作るか」を知っている組織は、速い
rakus_dev
1
580
複数プロダクト組織のAIネイティブ化における戦略 / AICon2026_kude
rakus_dev
0
970
伝票作成AIエージェントを支える、LLMOpsとインフラの選択肢 / AICon2026_takeda
rakus_dev
0
1.3k
複数プロダクトで進めるAI機能実装 ── 実践から得たリアルな学びとロードマップ実現への挑戦 / AICon2026_yanari
rakus_dev
1
940
仕様駆動開発、導入半年。「本当に速くなってるの?」にデータで答える / AICon2026_hirakawa
rakus_dev
1
2.7k
「顧客の声を聞かなければ何も始まらない」 ── 顧客の声から生まれた『AI返信補助機能』の開発プロセス / AICon2026_shikata_imai
rakus_dev
1
1.3k
「早く出す」より「事業に効く」 ── 顧客の業務サイクルから逆算するAI時代の二重ループ開発と「変化の設計者」 / devsumi2026
rakus_dev
1
1.3k
螺旋型キャリアの生存戦略 / kinoko-conf2026
rakus_dev
1
3.9k
AIで久々にコードを書いたらエンジニアへの依頼が"増えた" ── 元エンジニアのPdMの話 / Using AI to Code Again After a Long Break Increased My Requests to Engineers: Insights from a Former Engineer PdM
rakus_dev
0
620
Other Decks in Technology
See All in Technology
データ_AIの事業の勝敗をわけるもの
nek0128
1
460
AIエージェントを最高のパートナーに育てる方法|評価と判断軸を育てる5つのステップ
koichiaoki
1
150
LTのテーマ どうきめてる?〜5つの型と私のやり方〜
yama3133
1
110
AIに任せた品質は、誰が見立てるのか - AI時代のテストマネジメント
nakanao
3
2.3k
アプリをもっと"iOSアプリっぽく"する小さな工夫 / Small Touches That Make Your App Feel More Like an iOS App
matsuji
2
960
Azure Serverless 2026:Production-ready な AI エージェント基盤 / Azure Serverless 2026: Production-Ready AI Agent Platform
miyake
2
300
作って終わりじゃないサーバーレス 〜9年運用する大規模EC物流API基盤の設計・運用のリアル〜
zozotech
PRO
0
240
なぜ「決定性」が 決定的に重要なのか? Durable Execution 基盤の数理的理解 #serverlessjp / ServerlessDays Tokyo 2026
ytaka23
3
870
AIを活用するために決めた "やらないこと" - 価値に注目する / Not betting on AI
soudai
PRO
3
560
事業課題から技術的負債に向き合う
sansantech
PRO
2
2k
バイブコーディング時代のWebアプリ開発入門~Cloud Runで学ぶセキュアなビルドとデプロイ
waiwai2111
1
140
絵ではじめるKubernetesセキュリティ
aoi1
4
680
Featured
See All Featured
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
500
My Coaching Mixtape
mlcsv
0
320
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
76k
The Curious Case for Waylosing
cassininazir
1
510
A better future with KSS
kneath
240
18k
So, you think you're a good person
axbom
PRO
2
2.2k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.1k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
3
4.3k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
360
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
Transcript
©2021 RAKUS Co., Ltd. ©2021 RAKUS Co., Ltd. 仮想基盤でのVM大量生産を 自動化してみた
株式会社ラクス インフラ開発部 中井基晴
©2021 RAKUS Co., Ltd. 自己紹介 20歳からずっとインフラまわりの業務に従事し、現在で18年目。 ラクスに入社して約10年目。 特技:蚊に刺されない
趣味①:コーラ&ポテチをお供に歴史小説を読む 趣味②:お城・お寺巡り 趣味③:「信長の野望」、「シムシティ系」のシミュレーションゲーム ※子供産まれてからは全然できてない。でも新作出たら買う。
©2021 RAKUS Co., Ltd. 仮想基盤、VMとは? VM(Virtual Machine)= 仮想マシン を指します。 ホスト
(物理筐体) 論理ストレージボリューム ハイパーバイザー ・・・・・・・ ホスト (物理筐体) ホスト (物理筐体) 仮想基盤 仮想環境イメージ図 = 仮想的な筐体の中に、OS・ミドルウェア・APPが実装され、 1つのイメージデータとして扱う 仮想基盤は、「サーバ仮想化」を提供するシステム基盤。 VMに対して、CPU・メモリのコンピューティングリソースや、 ストレージ領域を提供する。
©2021 RAKUS Co., Ltd. 仮想基盤でサーバ構築する際の流れ 以下のような流れで対応します。(事例の1つ) OS 必要なOSを実装した、 ベースとなるテンプレート VMを用意しておく
ホスト名、IPアドレス等の 固有情報を設定 テンプレートVMをコピー して新VMを作成 ミドルウェアやアプリケーションを実装 その他設定、動作確認 サーバ リリース 1~2時間 1時間~3日 新規VMデプロイ (VMクローン) OSセットアップ ミドルウェア、APPインストール その他設定 仮想基盤の管理用 WEB画面上でポチ ポチと操作する サーバOSに対して処理 コマンド流し込む 周辺設定
©2021 RAKUS Co., Ltd. 課題 構築対象となるサーバ台数が多くなると面倒。(一度に数十台のケースとかも) OS OS OS OS
Middle APP OS Middle APP OS Middle APP OS Middle APP OS Middle APP OS Middle APP 特にこの部分が めんどい。 OS サーバ リリース テンプレート VM VMクローン
©2021 RAKUS Co., Ltd. じゃあ、そこも自動化してみよう 仮想基盤で提供されているRest APIを使って「VMクローン」も実行できそう。 って訳で、1台ずつVMクローン&セットアップする直列化処理を想定。 パラメータ 定義
VMクローン 作成 OS設定 カスタマイズ VM パワーオン サービスアプリ 実装 ・ターゲットホスト名 ・クローン元VM名 ・仮想基盤クラスタ情報 ・その他アプリ関連情報 ・内部パラメータ取得 ・クローン実行 ・ネットワーク関連設定 ・その他カスタマイズ ・ミドルウェア実装 ・アプリケーション実装 仮想基盤に対してAPIコマンドで実行 サーバ内部での設定処理 (別途Ansibleによる自動化を実装済み) 実装対象
©2021 RAKUS Co., Ltd. スクリプト化におけるトピックス 各種情報を確認するには、該当する”UUID“が必要 # curl -k -Ss
-X GET --header ‘Accept: application/json’ -u ‘admin:{パスワード}’ ‘{対象URL}/PrismGateway/services/rest/v2.0/vms/' | jq -r '.entities[]' 全VM情報を表示するコマンド。 例)1台分の情報のみ抜粋 # curl -Ss -X GET --header 'Accept: application/json' -u 'admin:'$PASSWORD'' ¥ ''$CLUSTER_URL'/PrismGateway/services/rest/v2.0/vms/' | ¥ jq -r '.entities[] | {vm_name: .name, vm_uuid: .uuid} | select(.vm_name == "'$SOURCE_NAME'")' | ¥ grep "vm_uuid" | awk '{ print $2 }' | sed 's/"//g' ※スクリプト内では、可変の情報をなるべく変数で代入するようにしておく。 { "allow_live_migrate": true, "gpus_assigned": false, "boot": { "uefi_boot": false }, "description": "Test_Server", "ha_priority": 0, “host_uuid”: “06bcc356-0d8e-441f-9883-*********", "memory_mb": 8192, "name": “server01.test.jp", "num_cores_per_vcpu": 2, "num_vcpus": 2, "power_state": "on", "timezone": "UTC", "uuid": "17e9d2a7-4202-4af6-83f3-***********", "vm_features": { "AGENT_VM": false, "VGA_CONSOLE": true }, "vm_logical_timestamp": 10, "machine_type": "pc" } VM名に紐づくUUIDのみを表示させたい こんな感じの力技で・・ # curl -Ss -X GET --header 'Accept: application/json' -u 'admin:'$PASSWORD'' ¥ ''$CLUSTER_URL'/PrismGateway/services/rest/v2.0/networks/' | ¥ jq -r '.entities[] | { nw_name : .name , nw_uuid : .uuid } | ¥ select(.nw_name == "Front Network")' | grep "nw_uuid" | awk '{ print $2 }' | sed 's/"//g' 仮想基盤上のネットワークに関するUUIDとかも。
©2021 RAKUS Co., Ltd. VMクローンする際のAPIコマンド 正常にVMクローンが生成された curl -X POST --header
'Content-Type: application/json' ¥ --header 'Accept: application/json' -u 'admin:'$PASSWORD'' -d ' { "spec_list": [ { "name":"'$TARGET_NAME'", "memory_mb":4096, "num_vcpus":1, "num_cores_per_vcpu":2, "vm_nics": [ { "network_uuid":"'$FR_NW_UUID'" }, { "network_uuid":"'$BK_NW_UUID'" } ], "override_network_config":true, "clone_affinity":false, "boot_config": { "uefi_boot":false, "boot_device_type":"DISK", "disk_address": { "device_bus":"scsi", "device_index":0, "disk_label":"scsi.0", "is_cdrom":false, "vmdisk_uuid":"'$DISK_UUID'" } } } ] }' ''$CLUSTER_URL'/PrismGateway/services/rest/v2.0/vms/'$SOURCE_VM_UUID'/clone' サーバスペックの指定。ここでは固定化。 NICの設定。ネットワークセグメント単位で。 ディスク割り当ての設定。 前述の処理で取得した各種UUIDを利用 他の処理についても検証を実施 1つのスクリプト内で呼び出されるように実装
©2021 RAKUS Co., Ltd. 結果:作業内容がシンプルに WEB画面上でのポチポチ作業も不要となり、非常にシンプルかつ対応コスト削減が可能に! playbook REST API OS
OS Middle APP VMクローン(デプロイ) OSセットアップ ミドルウェア・APP実装 構築対象サーバ分の パラメータ定義リスト 事前に用意 自動化処理に反映 構築対象のサーバ台数に関わらず、 スクリプトを1回実行するだけでOK。 ※まだ自動化を適用できそうなフェーズは残っているものの、そのへんはいずれ対応していくつもり。。
©2021 RAKUS Co., Ltd. ご清聴ありがとうございました。