我水也

われみずなり

Azure仮想ネットワークをRubyで作る

事前準備

前回の記事(Azureリソースグループの作成)を行います。
matcu.hatenablog.com

仮想ネットワークとは?

クラウド内にユーザー独自のネットワーク環境が作成出来、仮想マシンなどはこのネットワーク内に配置されます。
azure.microsoft.com

仮想ネットワークを作る

では、Azure SDK for Rubyを使って仮想ネットワークを作ってみます。
今回は以下の構成でネットワークを作成します。

  • SampleVNet 192.168.0.0/16
    • FrontSubnet 192.168.1.0/24
    • BackSubnet 192.168.2.0/24
利用環境
  • ruby 2.2.5p292
  • Bundler version 1.11.2
Rubyスクリプトの作成

前回の記事で作成したプロジェクトに移動します。

cd azure_sample

仮想ネットワークを作成するスクリプトを作成します。
実際に利用する場合には、設定情報などはyamlで外出しすると使いやすくなります。

$:.unshift File.expand_path(File.join(File.dirname(__FILE__)))
require 'bundler/setup'
require 'azure_mgmt_network'
require 'dotenv'

# Include SDK modules to ease access to compute classes.
include Azure::ARM::Network
include Azure::ARM::Network::Models

Dotenv.load

# Create authentication objects.
token_provider = MsRestAzure::ApplicationTokenProvider.new(ENV['AZURE_TENANT_ID'], ENV['AZURE_CLIENT_ID'], ENV['AZURE_CLIENT_SECRET'])
credentials = MsRest::TokenCredentials.new(token_provider)

#
# Create a virtual network.
#
client = NetworkManagementClient.new(credentials)
client.subscription_id = ENV['AZURE_SUBSCRIPTION_ID']

vn_props = VirtualNetworkPropertiesFormat.new

# アドレス設定
address_space = AddressSpace.new
address_space.address_prefixes = '192.168.0.0/16'
vn_props.address_space = address_space

# サブネット設定
subnets = []

# FrontSubnet設定
subnet_prop = SubnetPropertiesFormat.new
subnet_prop.address_prefix = '192.168.1.0/24'

subnet = Subnet.new
subnet.name = 'FrontSubnet'
subnet.properties = subnet_prop
subnets << subnet

# BackSubnet設定
subnet_prop = SubnetPropertiesFormat.new
subnet_prop.address_prefix = '192.168.2.0/24'

subnet = Subnet.new
subnet.name = 'BackSubnet'
subnet.properties = subnet_prop
subnets << subnet

vn_props.subnets = subnets

# SampleVNet設定
params = VirtualNetwork.new
params.location = 'japanwest'
params.properties = vn_props

promise = client.virtual_networks.create_or_update('sample-group', 'SampleVNet', params)
result = promise.value!

スクリプトを実行すると「SampleVNet」という仮想ネットワークと「FrontSubnet/BackSubnet」というサブネットが作成されます!