LoginSignup
8
7

More than 5 years have passed since last update.

Mac で PowerShell + Azure 操作する (Preview)

Posted at

Azure 管理に、Windows で使う powershell コマンドを Mac で開発できる? という疑問を解決してみたら出来たという手順紹介。いい時代になってきた。

パッケージ バージョン
OS X 10.11.6 , El Capitan
PowerShell v6.0.0-alpha.14
AzureRM.NetCore.Preview (PowerShell Module) 0.3.4

前提 :

公式こちらのエントリーなどを参考に、PowerShellをMacにインストールしてください。

正常にインストールされると shell から powershell コマンドが使えるようになります。

$ which powershell
/usr/local/bin/powershell

やりたいこと :

Azure を スクリプトで操作したいと考えました。先々、Windowsクライアントで管理するため PowerShell でやれたらいいなと。

検索したら、MSさんから公式ライブラリも提供あり。

が、こちらの Module で Mac はサポートされてないことがインストールして判明。Macがというか .NetCore での動作がサポートされていないというのが正確みたい。確かに Tag 打たれてないわ。

探した結果、こっちなればいける。Tag にも Mac ってあるし (もちろん Linux も)。
GitHub にも説明あった

それで、ここにあるってことは、PowerShellからも取得できるよね?と、やってみた(のが、本題)。

やったこと :

5.0から、パッケージマネージャー Package Management(旧OneGet)が同梱 されたということで、確認。

PS > Get-PackageProvider

Name                     Version          DynamicOptions                         
----                     -------          --------------                         
NuGet                    2.8.5.208        Destination, ExcludeVersion, Scope, ...
PowerShellGet            1.1.2.0          PackageManagementProvider, Type, Sco...

標準Providerに、PowerShellGet が登録されているので、新たに登録せずにOK (PowerShellGallaryを探しにいってくれる) 。

PS > Find-Package AzureRM.NetCore.Preview

Name                           Version          Source           Summary         
----                           -------          ------           -------         
AzureRM.NetCore.Preview        0.3.4            PSGallery        [PowerShell C...

ちゃんと発見!じゃあインストール。

まずは root で PowerShell を起動 (あとの Install で怒られないように)

$ sudo powershell
Password:xxxyyyzzz

PowerShell 
Copyright (C) 2016 Microsoft Corporation. All rights reserved.

PS > 
PS > Install-Package AzureRM.NetCore.Preview

依存パッケージと共にインストールされた。

PS > Get-Package                                                                                  

Name                           Version          Source                          
----                           -------          ------                          
AzureRM.NetCore.Preview        0.3.4            https://www.powershellgallery...
AzureRM.Profile.NetCore.Pre... 0.3.4            https://www.powershellgallery...
AzureRM.Resources.NetCore.P... 0.3.4            https://www.powershellgallery...
PackageManagement              1.1.2.0          https://powershell.myget.org/...
PowerShellGet                  1.1.2.0          https://powershell.myget.org/...

つかってみる :

PS > Import-Module AzureRM.NetCore.Preview

PS > Login-AzureRmAccount

ブラウザあげて、デバイス認証を通す

PS > Get-AzureRmResourceGroup                                                                     


ResourceGroupName : hogehoge
Location          : japanwest
ProvisioningState : Succeeded
Tags              : 
...

使えた!

あとは公式のデモを参照するとよさげです。

Cmdlet一覧みてみるとこんな感じ

> Get-Command -Module AzureRm*                                                                 

CommandType     Name                                               Version    Sou
                                                                              rce
-----------     ----                                               -------    ---
Alias           Login-AzureRmAccount                               0.3.4      Azu
Alias           Select-AzureRmSubscription                         0.3.4      Azu
Cmdlet          Add-AzureRmAccount                                 0.3.4      Azu
Cmdlet          Add-AzureRmEnvironment                             0.3.4      Azu
Cmdlet          Disable-AzureRmDataCollection                      0.3.4      Azu
Cmdlet          Enable-AzureRmDataCollection                       0.3.4      Azu
Cmdlet          Export-AzureRmResourceGroup                        0.3.4      Azu
Cmdlet          Find-AzureRmResource                               0.3.4      Azu
Cmdlet          Find-AzureRmResourceGroup                          0.3.4      Azu
Cmdlet          Get-AzureRmADApplication                           0.3.4      Azu
Cmdlet          Get-AzureRmADGroup                                 0.3.4      Azu
Cmdlet          Get-AzureRmADGroupMember                           0.3.4      Azu
Cmdlet          Get-AzureRmADServicePrincipal                      0.3.4      Azu
Cmdlet          Get-AzureRmADUser                                  0.3.4      Azu
Cmdlet          Get-AzureRmContext                                 0.3.4      Azu
Cmdlet          Get-AzureRmEnvironment                             0.3.4      Azu
Cmdlet          Get-AzureRmLocation                                0.3.4      Azu
Cmdlet          Get-AzureRmPolicyAssignment                        0.3.4      Azu
Cmdlet          Get-AzureRmPolicyDefinition                        0.3.4      Azu
Cmdlet          Get-AzureRmProviderFeature                         0.3.4      Azu
Cmdlet          Get-AzureRmProviderOperation                       0.3.4      Azu
Cmdlet          Get-AzureRmResource                                0.3.4      Azu
Cmdlet          Get-AzureRmResourceGroup                           0.3.4      Azu
Cmdlet          Get-AzureRmResourceGroupDeployment                 0.3.4      Azu
Cmdlet          Get-AzureRmResourceGroupDeploymentOperation        0.3.4      Azu
Cmdlet          Get-AzureRmResourceLock                            0.3.4      Azu
Cmdlet          Get-AzureRmResourceProvider                        0.3.4      Azu
Cmdlet          Get-AzureRmRoleAssignment                          0.3.4      Azu
Cmdlet          Get-AzureRmRoleDefinition                          0.3.4      Azu
Cmdlet          Get-AzureRmSubscription                            0.3.4      Azu
Cmdlet          Get-AzureRmTenant                                  0.3.4      Azu
Cmdlet          Invoke-AzureRmResourceAction                       0.3.4      Azu
Cmdlet          Move-AzureRmResource                               0.3.4      Azu
Cmdlet          New-AzureRmADApplication                           0.3.4      Azu
Cmdlet          New-AzureRmADServicePrincipal                      0.3.4      Azu
Cmdlet          New-AzureRmPolicyAssignment                        0.3.4      Azu
Cmdlet          New-AzureRmPolicyDefinition                        0.3.4      Azu
Cmdlet          New-AzureRmResource                                0.3.4      Azu
Cmdlet          New-AzureRmResourceGroup                           0.3.4      Azu
Cmdlet          New-AzureRmResourceGroupDeployment                 0.3.4      Azu
Cmdlet          New-AzureRmResourceLock                            0.3.4      Azu
Cmdlet          New-AzureRmRoleAssignment                          0.3.4      Azu
Cmdlet          New-AzureRmRoleDefinition                          0.3.4      Azu
Cmdlet          Register-AzureRmProviderFeature                    0.3.4      Azu
Cmdlet          Register-AzureRmResourceProvider                   0.3.4      Azu
Cmdlet          Remove-AzureRmADApplication                        0.3.4      Azu
Cmdlet          Remove-AzureRmADServicePrincipal                   0.3.4      Azu
Cmdlet          Remove-AzureRmEnvironment                          0.3.4      Azu
Cmdlet          Remove-AzureRmPolicyAssignment                     0.3.4      Azu
Cmdlet          Remove-AzureRmPolicyDefinition                     0.3.4      Azu
Cmdlet          Remove-AzureRmResource                             0.3.4      Azu
Cmdlet          Remove-AzureRmResourceGroup                        0.3.4      Azu
Cmdlet          Remove-AzureRmResourceGroupDeployment              0.3.4      Azu
Cmdlet          Remove-AzureRmResourceLock                         0.3.4      Azu
Cmdlet          Remove-AzureRmRoleAssignment                       0.3.4      Azu
Cmdlet          Remove-AzureRmRoleDefinition                       0.3.4      Azu
Cmdlet          Save-AzureRmProfile                                0.3.4      Azu
Cmdlet          Save-AzureRmResourceGroupDeploymentTemplate        0.3.4      Azu
Cmdlet          Select-AzureRmProfile                              0.3.4      Azu
Cmdlet          Set-AzureRmContext                                 0.3.4      Azu
Cmdlet          Set-AzureRmEnvironment                             0.3.4      Azu
Cmdlet          Set-AzureRmPolicyAssignment                        0.3.4      Azu
Cmdlet          Set-AzureRmPolicyDefinition                        0.3.4      Azu
Cmdlet          Set-AzureRmResource                                0.3.4      Azu
Cmdlet          Set-AzureRmResourceGroup                           0.3.4      Azu
Cmdlet          Set-AzureRmResourceLock                            0.3.4      Azu
Cmdlet          Set-AzureRmRoleDefinition                          0.3.4      Azu
Cmdlet          Stop-AzureRmResourceGroupDeployment                0.3.4      Azu
Cmdlet          Test-AzureRmResourceGroupDeployment                0.3.4      Azu
Cmdlet          Unregister-AzureRmResourceProvider                 0.3.4      Azu

ちなみに :

Azure Module をいれても、Import-Moduleのところで落ちます

Import-Module : The given assembly name or codebase was invalid. (Exception from 
HRESULT: 0x80131047)
At line:1 char:1
+ Import-Module Azure
+ ~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Import-Module], FileLoadExcepti 
   on
    + FullyQualifiedErrorId : System.IO.FileLoadException,Microsoft.PowerShell.C 
   ommands.ImportModuleCommand

こちら の情報をもとに、.NetCore.Preview に行き着きました。

プラットフォーム自身の依存関係、PackageManagerで解決してくれるようになったら最強だなぁ。

感想 :

これまで VM 上のWin であれこれやってたけど、Windows本体を管理するケース以外は、このような使い方が広まるのかも。.NetCore と .Net本体との差分がどれだけあるかは知らないので、.NetCore側のモジュールが追いつくには、しばらく先の話かも。

PowerShell のコマンドは、慣れてくるとCmdletの命名規則も一環してたりと結構好きです。

その他 :

Mac特有の情報は、公式がまとまっていていいと思いました。
* Package installation instructions > MacOS 10.11

6.0-alpha-14.0 では Get-Snapin が使えない事が、別の操作でわかりました。なんでもかんでもサポートってわけには、まだ行きませんね(プラットフォーム違うのだから当たり前)

8
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7