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
仮想基盤でのVM大量生産を自動化してみた / automation_20220202_2
Search
Rakus_Dev
February 04, 2022
Technology
450
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
複数プロダクト組織のAIネイティブ化における戦略 / AICon2026_kude
rakus_dev
0
610
伝票作成AIエージェントを支える、LLMOpsとインフラの選択肢 / AICon2026_takeda
rakus_dev
0
340
複数プロダクトで進めるAI機能実装 ── 実践から得たリアルな学びとロードマップ実現への挑戦 / AICon2026_yanari
rakus_dev
1
570
仕様駆動開発、導入半年。「本当に速くなってるの?」にデータで答える / AICon2026_hirakawa
rakus_dev
0
410
「顧客の声を聞かなければ何も始まらない」 ── 顧客の声から生まれた『AI返信補助機能』の開発プロセス / AICon2026_shikata_imai
rakus_dev
1
930
「早く出す」より「事業に効く」 ── 顧客の業務サイクルから逆算するAI時代の二重ループ開発と「変化の設計者」 / devsumi2026
rakus_dev
1
730
螺旋型キャリアの生存戦略 / kinoko-conf2026
rakus_dev
1
3.2k
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
540
主体的に活躍する内製QA組織の作り方と組織文化の醸成 / How to Build a Proactive In-house QA Organization and Foster Its Culture
rakus_dev
0
300
Other Decks in Technology
See All in Technology
オートロックマンションなのに、各部屋は施錠なし!? 攻撃者が組織内ネットワークで大暴れする理由 / The Front Door Is Locked, but the Rooms Are Wide Open: Why Attackers Move Freely Inside Enterprise Networks
nttcom
0
1k
Master Dataグループ紹介資料
sansan33
PRO
1
4.8k
AI工学特論: MLOps・継続的評価
asei
11
3.1k
Webの技術とガジェットで子どもも大人も楽しめるワクワク体験を提供する / Qiita Tech Festa Day 2026
you
PRO
1
330
NYC Summit 2026 におけるAmazon Bedrock AgentCore のアップデート
ren8k
3
300
Escolhendo LLMs na Prática: Lições Reais em Busca Agêntica no Mercado Livre —TDC 2026 Floripa
jpbonson
0
120
歴史から理解するクラウドインフラのしくみ
kizawa2020
1
200
数値で見る Microsoft MVP 〜Spec Kit と GitHub Copilot Agent で作るデータ可視化ダッシュボード〜
yutakaosada
0
180
AI驚き屋発見器
yama3133
2
400
『三匹の子ぶた』から学ぶネットワークセキュリティの昔と今 / Network Security: Then and Now Through the Lens of The Three Little Pigs
nttcom
1
1.2k
セキュリティ研修【MIXI 26新卒技術研修】
mixi_engineers
PRO
32
27k
AIがAPIを書く時代に、私たちは何を設計すべきか
nagix
0
200
Featured
See All Featured
Information Architects: The Missing Link in Design Systems
soysaucechin
0
1k
How STYLIGHT went responsive
nonsquared
100
6.2k
Evolving SEO for Evolving Search Engines
ryanjones
0
250
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
What does AI have to do with Human Rights?
axbom
PRO
1
2.3k
Skip the Path - Find Your Career Trail
mkilby
1
180
Joys of Absence: A Defence of Solitary Play
codingconduct
1
420
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
600
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
820
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
750
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. ご清聴ありがとうございました。