Azureの小ネタ (改)

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

Azure CLI で仮想ネットワーク作成

色々とバグがありますしおすし。

リージョン仮想ネットワークがサポートされてないです。locationを指定すると、勝手にAffinity Groupを作成しにいくのですが、前記事のLabelプロパティのバグを勝手に踏んでエラーになります。

既存の仮想ネットワークが定義されていないとエラーになります。

以下、既存の仮想ネットワークがない場合

$ azure network vnet create azurestudy-vnet --affinity-group "japan-west"
info:    Executing command network vnet create
info:    Using default address space start IP: 10.0.0.0
info:    Using default address space cidr: 8
info:    Using default subnet start IP: 10.0.0.0
info:    Using default subnet cidr: 11
+ Getting network configuration
error:   Network configuration does not exist.
info:    Error information has been recorded to azure.err
error:   network vnet create command failed

以下、既存の仮想ネットワークがある場合。

$ azure network vnet create azurestudy-vnet --affinity-group "japan-west"
info:    Executing command network vnet create
info:    Using default address space start IP: 10.0.0.0
info:    Using default address space cidr: 8
info:    Using default subnet start IP: 10.0.0.0
info:    Using default subnet cidr: 11
+ Getting network configuration
+ Getting or creating affinity group
+ Getting affinity groups
info:    Using affinity group japan-west
+ Updating Network Configuration
info:    network vnet create command OK

Affinity Group の謎を追え

タイトルは釣りです。もう、Affinity Group(アフィニティグループ)は、オワコン感があるのですが、Azure CLI使っていたら納得いかない動きがあったので、スコシ追ってみました。

Azure CLI では

Azure CLI でAffinity Groupを作成する場合

azure account affinity-group create hoge --location "japan west" --label "label"

としなくてはなりません。Labelを省略すると、Affinity Groupが作成できません。

azure account affinity-group create bar --location "japan west"
info:    Executing command account affinity-group create
+ Creating affinity group
error:   The affinity group label is invalid.
info:    Error information has been recorded to azure.err
error:   account affinity-group create command failed

ラベルを指定すると、管理ポータルでは以下のように表示されます。

f:id:StateMachine:20141001191552p:plain

続きを読む

UserPrincipal 情報を取得する

C#でUserPrincipal情報の取得について備忘録、例によってLINQPadでの実行コード。System.DirectoryServices.AccountManagement の参照設定とNamespaceの設定が必要です。

void Main()
{
    // 対象はLocalMachine
    using (var context = new PrincipalContext(ContextType.Machine))
    {
        // こんな方法や
        using (var searcher = new PrincipalSearcher(new UserPrincipal(context)))
        {
            searcher.QueryFilter.SamAccountName = "Guest";
            searcher.FindOne().Dump();
        }

        // こんな方法で検索できます
        var up = UserPrincipal.FindByIdentity(context, "Guest");
        up.Dump();
    }
}

ちなみにDumpメソッドはLINQPadの拡張で、オブジェクトの中身をダンプしてくれる便利なメソッドです。

Domainの場合や、全部だす場合はこんな感じ。

void Main()
{
    // ドメインの場合
    using (var context = new PrincipalContext(ContextType.Domain, "hoge.local"))
    {
        // 全部出す
        using (var searcher = new PrincipalSearcher(new UserPrincipal(context)))
        {
            foreach (var result in searcher.FindAll()) 
            {
                  result.Dump()
            }
        }
    }
}