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
700
複数プロダクト組織のAIネイティブ化における戦略 / AICon2026_kude
rakus_dev
0
1.2k
伝票作成AIエージェントを支える、LLMOpsとインフラの選択肢 / AICon2026_takeda
rakus_dev
0
1.6k
複数プロダクトで進めるAI機能実装 ── 実践から得たリアルな学びとロードマップ実現への挑戦 / AICon2026_yanari
rakus_dev
1
1.2k
仕様駆動開発、導入半年。「本当に速くなってるの?」にデータで答える / AICon2026_hirakawa
rakus_dev
1
3.1k
「顧客の声を聞かなければ何も始まらない」 ── 顧客の声から生まれた『AI返信補助機能』の開発プロセス / AICon2026_shikata_imai
rakus_dev
1
1.5k
「早く出す」より「事業に効く」 ── 顧客の業務サイクルから逆算するAI時代の二重ループ開発と「変化の設計者」 / devsumi2026
rakus_dev
1
1.4k
螺旋型キャリアの生存戦略 / kinoko-conf2026
rakus_dev
1
4.1k
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
700
Other Decks in Technology
See All in Technology
続・ソフトウェアアーキテクトのための意思決定術: Decision Readiness, Revisited — When AI Changes the Economics of Software Architecture
snoozer05
PRO
9
2.8k
Metadata - Section 3 : Dublin Core Standard · DC
mohab1
0
120
An Introduction to Context Ontology Accelerator (teaching AI agents what your data means)
inariku
PRO
1
200
大江戸Ruby会議でデータベース クライアントの話をするのは 間違っているだろうか
yahonda
1
110
内製アプリとClaudeスキルのセキュリティチェック、 Backlogの課題で回しています。
ayaka_egaaa
0
160
AI Agent 時代のデータ基盤: ClickHouse で実現する 超高速分析とコスト削減の両立
jozono
0
220
業務でAWSをあまり使っていない私が、AWSへのモチベを保つ方法
smt7174
0
180
「いつか使う」の「いつか」は来ない 〜AI駆動開発における「作らない」判断について〜
ikki0006
0
180
思考過程から秘密が漏れる:Amazon Bedrock上のKimi K3を5つの方法で攻めたら、25回中22回漏洩した話
yama3133
1
100
Claude Codeで作ったアプリを安全に公開する/Built with Claude Japan 2026
yoshidashingo
0
220
Active Directory と Entra ID のむむむな関係
murachiakira
PRO
4
1.8k
cdkd (CDK Direct)
gotok365
4
280
Featured
See All Featured
Raft: Consensus for Rubyists
vanstee
143
7.9k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Speed Design
sergeychernyshev
33
2.2k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
660
Rails Girls Zürich Keynote
gr2m
96
14k
[SF Ruby Conf 2025] Rails X
palkan
3
1.5k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.7k
Building the Perfect Custom Keyboard
takai
2
950
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.3k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
70
68k
For a Future-Friendly Web
brad_frost
184
11k
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. ご清聴ありがとうございました。