Azureの小ネタ (改)

~Azureネタを中心に、色々とその他の技術的なことなどを~

WebAppsの常時接続をPowerShellから有効にする

タイトルどおり、備忘録です。Azure PowerShellにはピンポイントで有効にする引数がなかったので。

その1

方法はいくつかあって、Set-AzureRmResourceコマンドを使うことです。Set-AzureRmResourceは、低レベルなARMのコマンドで、そのままJSONをPUTするような形になるので、特定のコマンドが用意されてなくてもなんとかなります。JSONは、Hash形式でデータを用意しておけば、なんとなくシリアライズしてくれます。

ただし、成功・失敗が分かりにくいので、 https://resources.azure.com/ で確認しつつやるといいでしょう。

$PropertiesObject = @{
    alwaysOn = $True;
}
Set-AzureRmResource -PropertyObject $PropertiesObject -ResourceGroupName hoge -ResourceType Microsoft.Web/sites/config -ResourceName fuga/web -ApiVersion 2015-08-01 -Force

上のResourceNameの引数のfugaの部分をWebAppの名前にしてください。

その2

Get-AzureRmWebSApp でWebAppの情報を取得すると、 SiteConfig.AlwaysOn プロパティがありますので、これに Trueを設定し、Set-AzureRmWebAppで設定します。

$app = Get-AzureRmWebApp -ResourceGroupName hoge -Name fuga
$app.SiteConfig.AlwaysOn = $true
$app| Set-AzureRmWebApp

特定の引数は、Set-AzureRmWebApp直接指定できますが、オプションが増えすぎて、あまり追加されないぽいので、こういうやり方になっている気がします。

1つめは、PUT一回、2つめは、GET/PUTの2回通信が必要になるくらいですけど、まあどっちでもよいでしょう。

.NET Framework 4.6 をアンインストールする

備忘録として、Windows 2012R2 の .NET Framework 4.6 系をアンインストールする方法。

Windows 10はデフォルトが4.6なのでアンインストール出来ない模様。

手順

Windows の プログラムと機能から、インストールされた更新プログラムを表示する。

KB Ver
KB3102467 .NET Framework 4.6.1
KB3045563 .NET Framework 4.6

の順でアンインストールし、適宜指示に従って再起動。以下にバージョン確認のバッチがあるので、確認できる。

www.atmarkit.co.jp

Azure SDK for Java 1.0.0-beta2 VM編

今回は、よくあるVMの操作についてです。

一覧

AzureインスタンスからVM一覧を取得できます。各プロパティが、getter/setterではなくて、単なるname()とか、computerName()とかになってます。 前々から不便だったresource group を取得するメソッドも増えました。GroupbalResourceというインタフェースが増えたみたいです。

        Azure azure = Azure.authenticate(new File("my.azureauth")).withDefaultSubscription();

        for (VirtualMachine vm : azure.virtualMachines().list()) {
            System.out.println(vm.name());
            System.out.println(vm.computerName());
            System.out.println(vm.resourceGroupName());
        }

VMの作成

VMの作成もFluent Interfaceで楽に記述できるようになってます。よくある構成は以下のコードでさくっとできてしまいます。

良くなった点として

  • イメージの宣言が容易されている
  • 同じくインスタンスサイズも
  • 一々関連リソースを手続き的に作成しなくてもよくなった

感じでしょうか。宣言は最初から用意しておけよというかんじですし、ARM APIとしては採取的にARM Templateに準拠したJSONが投げられるだけなので、 いままでが冗長すぎた感じでしょうか。

    public static void CreateVM(Azure azure, String password) throws Exception {
    
        VirtualMachine linuxVM = azure.virtualMachines().define("myLinuxVM")
                .withRegion(Region.ASIA_EAST)
                .withNewResourceGroup("testfromjava")
                .withNewPrimaryNetwork("10.0.0.0/28")
                .withPrimaryPrivateIpAddressDynamic()
                .withNewPrimaryPublicIpAddress("mylinuxvmdns")
                .withPopularWindowsImage(KnownWindowsVirtualMachineImage.WINDOWS_SERVER_2012_R2_DATACENTER)
                .withAdminUserName("azureuser")
                .withPassword(password)
                .withSize(VirtualMachineSizeTypes.STANDARD_A1)
                .create();
    }

というわけで、今回は以上。いままでのAPIと.NET 側がどうなったか少しきになりますね。