我水也

いろんなことに興味をもっています。

AzureリソースグループをRubyで作る

事前準備

前回の記事に書いた事前準備を実施すると、RubyでAzureを触る準備は完璧です。あとはRubyで書くだけでOK。
matcu.hatenablog.com

リソースグループとは?

Azure Resource Managerでは、全てのリソースをグループとして管理します。
そのため、まずはこのリソースグループを作成する必要があります。
azure.microsoft.com

リソースグループを作る

では、Azure SDK for Rubyを使ってリソースグループを作ってみます。

利用環境
  • ruby 2.2.5p292
  • Bundler version 1.11.2
プロジェクトの準備

まずはプロジェクトを作ります。

gem install bundler -v '1.11.2'
mkdir azure_sample
cd azure_sample
bundle init

作成されたGemfileに必要なgemを追加します。
dotenvは前回記事でゲットした3つの情報を設定するために使います。

source 'https://rubygems.org'

gem 'dotenv'
gem 'azure_mgmt_resources'

上記で追加したgemをプロジェクトのbundleディレクトリにインストールします。

bundle install --path bundle

.envファイルに認証に必要な情報を書きます。

AZURE_TENANT_ID="00000000-0000-0000-0000-000000000000"
AZURE_CLIENT_ID="00000000-0000-0000-0000-000000000000"
AZURE_CLIENT_SECRET="00000000000000000000000000000000000000000000"
AZURE_SUBSCRIPTION_ID="00000000-0000-0000-0000-000000000000"

最後にリソースグループを作成するスクリプトを作成します。

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

include Azure::ARM::Resources
include Azure::ARM::Resources::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 resource group.
client = ResourceManagementClient.new(credentials)
client.subscription_id = ENV['AZURE_SUBSCRIPTION_ID']

resource_group = ResourceGroup.new()
resource_group.location = 'centralus'

promise = client.resource_groups.create_or_update('sample-group', resource_group)
result = promise.value!

スクリプトを実行すると「sample-group」というリソースグループが作成されます!

次の記事では仮想ネットワークの作成を行いたいと思います。

Azure(Resource Manager)をRubyで触るための準備

Azure SDK for Ruby(Resource Manager版)

Azureには従来のクラシックとリソースマネージャーという2つのモデルがあり、現行で開発が進んでいるのがリソースマネージャーになります。

まだまだ開発中であったりすることもあり、SDKはありますが未対応であったりしたため、Windows PowerShellで頑張っていたのですが、先日「Microsoft Azure SDK for Ruby」のARM対応版があることを見つけました。(まだプレビュー版です)
github.com

プレビューとは言いつつ結構な範囲が触れそうでしたので、これは使ってみないとと思い、使ってみましたので、その際の事前準備を紹介します。

使うには?

After creating the service principal, you should have three pieces of information, a client id (GUID), client secret (string) and tenant id (GUID) or domain name (string).

ということなので、サービスプリンシパルを作成し、Client ID/Client Secret/Tenant IDをゲットします。

サービスプリンシパルの作成

このページにやり方が載っていましたので、詳細は省きます。
azure.microsoft.com

Client ID/Client Secret/Tenant IDこの3つの情報をゲットすれば、準備はOKです。

続きは次の記事で。。。