Linux 用の DSC 拡張機能 (Microsoft.OSTCExtensions.DSCForLinux)

Desired State Configuration (DSC) は、コードで構成を行って IT および開発インフラストラクチャを管理するために使用できる管理プラットフォームです。

重要

Linux 用の Desired State Configuration VM 拡張機能は、2023 年 9 月 30 日に廃止されます。 Linux 用の Desired State Configuration VM 拡張機能を現在使用している場合は、この記事の情報を使用して、Azure Automanage のマシン構成機能への移行計画を開始してください。

Note

Linux 用の DSC 拡張機能と Linux 用の Log Analytics 仮想マシン拡張機能には現在競合があるため、並列構成ではサポートされていません。 2 つのソリューションを同じ VM で同時に使用しないでください。

DSCForLinux 拡張機能は Microsoft によって公開され、サポートされています。 拡張機能では、OMI および DSC のエージェントが Azure 仮想マシンにインストールされます。 DSC 拡張機能では、さらに次のアクションを実行できます。

  • Azure Automation サービスから構成をプルするために、Linux VM を Azure Automation アカウントに登録する (Register ExtensionAction)。
  • MOF 構成を Linux VM にプッシュする (Push ExtensionAction)。
  • ノード構成をプルするために、メタ MOF 構成を Linux VM に適用してプル サーバーを構成する (Pull ExtensionAction)。
  • カスタム DSC モジュールを Linux VM にインストールする (Install ExtensionAction)。
  • カスタム DSC モジュールを Linux VM から削除する (Remove ExtensionAction)。

前提条件

オペレーティング システム

Linux が実行されているノードの場合、DSC Linux 拡張機能では、PowerShell DSC に関するドキュメントに示されている Linux ディストリビューションがすべてサポートされます。

インターネット接続

DSCForLinux 拡張機能では、ターゲット仮想マシンがインターネットに接続されている必要があります。 たとえば、Register 拡張機能では、Automation サービスへの接続が必要です。 その他のアクション (Pull、Pull、Install など) では、Azure Storage や GitHub への接続が必要です。 これはお客様が提供する設定によって異なります。

拡張機能のスキーマ

パブリック構成

ここでは、サポート対象のパブリック構成パラメーターをすべて紹介します。

  • FileUri: (省略可能、文字列) MOF ファイル、メタ MOF ファイル、またはカスタム リソース zip ファイルの URI。
  • ResourceName: (省略可能、文字列) カスタム リソース モジュールの名前。
  • ExtensionAction: (省略可能、文字列) 拡張機能で実行されるアクションを指定します。 有効な値は Register、Push、Pull、Install、および Remove です。 指定しない場合、既定で Push アクションと見なされます。
  • NodeConfigurationName: (省略可能、文字列) 適用するノード構成の名前。
  • RefreshFrequencyMins: (省略可能、整数) プル サーバーからの構成の取得が DSC によって試行される頻度 (分単位) を指定します。 プル サーバー上の構成がターゲット ノード上の現在の構成と異なる場合、その構成は保留中ストアにコピーされてから適用されます。
  • ConfigurationMode: (省略可能、文字列) DSC によって構成が適用される方法を指定します。 有効な値は ApplyOnly、ApplyAndMonitor、および ApplyAndAutoCorrect です。
  • ConfigurationModeFrequencyMins: (省略可能、整数) DSC によって構成が望ましい状態にされる頻度 (分単位) を指定します。

Note

2\.3 より前のバージョンを使用する場合、モード パラメーターは ExtensionAction と同じです。 モードは多義な用語であるようです。 混同を避けるため、バージョン2.3 以降では ExtensionAction が使用されます。 下位互換性を実現するために、拡張機能ではモードと ExtensionAction の両方がサポートされます。

保護された構成

ここでは、サポート対象の保護された構成パラメーターをすべて紹介します。

  • StorageAccountName: (省略可能、文字列) ファイルが含まれているストレージ アカウントの名前
  • StorageAccountKey: (省略可能、文字列) ファイルが含まれているストレージ アカウントのキー
  • RegistrationUrl: (省略可能、文字列) Azure Automation アカウントの URL
  • RegistrationKey: (省略可能、文字列) Azure Automation アカウントのアクセス キー

シナリオ

Azure Automation アカウントを登録する

protected.json

{
  "RegistrationUrl": "<azure-automation-account-url>",
  "RegistrationKey": "<azure-automation-account-key>"
}

public.json

{
  "ExtensionAction" : "Register",
  "NodeConfigurationName" : "<node-configuration-name>",
  "RefreshFrequencyMins" : "<value>",
  "ConfigurationMode" : "<ApplyAndMonitor | ApplyAndAutoCorrect | ApplyOnly>",
  "ConfigurationModeFrequencyMins" : "<value>"
}

PowerShell 形式

$privateConfig = '{
  "RegistrationUrl": "<azure-automation-account-url>",
  "RegistrationKey": "<azure-automation-account-key>"
}'

$publicConfig = '{
  "ExtensionAction" : "Register",
  "NodeConfigurationName": "<node-configuration-name>",
  "RefreshFrequencyMins": "<value>",
  "ConfigurationMode": "<ApplyAndMonitor | ApplyAndAutoCorrect | ApplyOnly>",
  "ConfigurationModeFrequencyMins": "<value>"
}'

(Azure ストレージ アカウント内の) MOF 構成ファイルを VM に適用する

protected.json

{
  "StorageAccountName": "<storage-account-name>",
  "StorageAccountKey": "<storage-account-key>"
}

public.json

{
  "FileUri": "<mof-file-uri>",
  "ExtensionAction": "Push"
}

PowerShell 形式

$privateConfig = '{
  "StorageAccountName": "<storage-account-name>",
  "StorageAccountKey": "<storage-account-key>"
}'

$publicConfig = '{
  "FileUri": "<mof-file-uri>",
  "ExtensionAction": "Push"
}'

(パブリック ストレージ内の) MOF 構成ファイルを VM に適用する

public.json

{
  "FileUri": "<mof-file-uri>"
}

PowerShell 形式

$publicConfig = '{
  "FileUri": "<mof-file-uri>"
}'

(Azure ストレージ アカウント内の) メタ MOF 構成ファイルを VM に適用する

protected.json

{
  "StorageAccountName": "<storage-account-name>",
  "StorageAccountKey": "<storage-account-key>"
}

public.json

{
  "ExtensionAction": "Pull",
  "FileUri": "<meta-mof-file-uri>"
}

PowerShell 形式

$privateConfig = '{
  "StorageAccountName": "<storage-account-name>",
  "StorageAccountKey": "<storage-account-key>"
}'

$publicConfig = '{
  "ExtensionAction": "Pull",
  "FileUri": "<meta-mof-file-uri>"
}'

(パブリック ストレージ内の) メタ MOF 構成ファイルを VM に適用する

public.json

{
  "FileUri": "<meta-mof-file-uri>",
  "ExtensionAction": "Pull"
}

PowerShell 形式

$publicConfig = '{
  "FileUri": "<meta-mof-file-uri>",
  "ExtensionAction": "Pull"
}'

カスタム リソース モジュール (Azure ストレージ アカウント内の zip ファイル) を VM にインストールする

protected.json

{
  "StorageAccountName": "<storage-account-name>",
  "StorageAccountKey": "<storage-account-key>"
}

public.json

{
  "ExtensionAction": "Install",
  "FileUri": "<resource-zip-file-uri>"
}

PowerShell 形式

$privateConfig = '{
  "StorageAccountName": "<storage-account-name>",
  "StorageAccountKey": "<storage-account-key>"
}'

$publicConfig = '{
  "ExtensionAction": "Install",
  "FileUri": "<resource-zip-file-uri>"
}'

カスタム リソース モジュール (パブリック ストレージ内の zip ファイル) を VM にインストールする

public.json

{
  "ExtensionAction": "Install",
  "FileUri": "<resource-zip-file-uri>"
}

PowerShell 形式

$publicConfig = '{
  "ExtensionAction": "Install",
  "FileUri": "<resource-zip-file-uri>"
}'

VM からカスタム リソース モジュールを削除する

public.json

{
  "ResourceName": "<resource-name>",
  "ExtensionAction": "Remove"
}

PowerShell 形式

$publicConfig = '{
  "ResourceName": "<resource-name>",
  "ExtensionAction": "Remove"
}'

テンプレートのデプロイ

Azure VM 拡張機能は、Azure Resource Manager テンプレートでデプロイできます。 テンプレートは、デプロイ後の構成 (Azure Automation へのオンボードなど) が必要な仮想マシンを 1 つ以上デプロイするときに最適です。

サンプルの Resource Manager テンプレートは、dsc-linux-azure-storage-on-ubuntudsc-linux-public-storage-on-ubuntu です。

Azure Resource Manager テンプレートの詳細については、Azure Resource Manager テンプレートの作成に関するページを参照してください。

Azure CLI でのデプロイ

[Azure CLI][azure-cli] の使用

DSCForLinux 拡張機能をデプロイする前に、セクション 3 のさまざまなシナリオに応じて、public.jsonprotected.json を構成します。

クラシック

重要

クラシック デプロイ モデルで作成された VM は、2023 年 3 月 1 日に廃止される予定です。

Azure サービス管理の IaaS リソースを使用する場合は、2023 年 3 月 1 日までに移行を完了してください。 Azure Resource Manager の多数の機能強化を活用するために、早急に切り替えを行うことをお勧めします。

詳細については、「2023 年 3 月 1 日までに IaaS リソースを Azure Resource Manager に移行する」を参照してください。

クラシック デプロイ モードは、Azure サービス管理モードとも呼ばれます。 これに切り替えるには、次を実行します。

$ azure config mode asm

次を実行して DSCForLinux 拡張機能をデプロイできます。

$ azure vm extension set <vm-name> DSCForLinux Microsoft.OSTCExtensions <version> \
--private-config-path protected.json --public-config-path public.json

使用可能な最新バージョンの拡張機能を確認するには、次を実行します。

$ azure vm extension list

リソース マネージャー

Azure Resource Manager モードに切り替えるには、次を実行します。

$ azure config mode arm

次を実行して DSCForLinux 拡張機能をデプロイできます。

$ azure vm extension set <resource-group> <vm-name> \
DSCForLinux Microsoft.OSTCExtensions <version> \
--private-config-path protected.json --public-config-path public.json

Note

Azure Resource Manager モードでは現在、azure vm extension list は使用できません。

[Azure PowerShell][azure-powershell] の使用

クラシック

Azure サービス管理モードで Azure アカウントにサインインするには、次を実行します。

Add-AzureAccount

次を実行して DSCForLinux 拡張機能をデプロイします。

$vmname = '<vm-name>'
$vm = Get-AzureVM -ServiceName $vmname -Name $vmname
$extensionName = 'DSCForLinux'
$publisher = 'Microsoft.OSTCExtensions'
$version = '< version>'

前のセクションのさまざまなシナリオに応じて、$privateConfig と $publicConfig の内容を変更します。

$privateConfig = '{
  "StorageAccountName": "<storage-account-name>",
  "StorageAccountKey": "<storage-account-key>"
}'
$publicConfig = '{
  "ExtensionAction": "Push",
  "FileUri": "<mof-file-uri>"
}'
Set-AzureVMExtension -ExtensionName $extensionName -VM $vm -Publisher $publisher `
  -Version $version -PrivateConfiguration $privateConfig `
  -PublicConfiguration $publicConfig | Update-AzureVM

リソース マネージャー

Azure Resource Manager モードで Azure アカウントにサインインするには、次を実行します。

Login-AzAccount

Azure Resource Manager での Azure PowerShell の使用方法については、「Azure PowerShell を使用した Azure リソースの管理」を参照してください。

次を実行して DSCForLinux 拡張機能をデプロイできます。

$rgName = '<resource-group-name>'
$vmName = '<vm-name>'
$location = '< location>'
$extensionName = 'DSCForLinux'
$publisher = 'Microsoft.OSTCExtensions'
$version = '< version>'

前のセクションのさまざまなシナリオに応じて、$privateConfig と $publicConfig の内容を変更します。

$privateConfig = '{
  "StorageAccountName": "<storage-account-name>",
  "StorageAccountKey": "<storage-account-key>"
}'
$publicConfig = '{
  "ExtensionAction": "Push",
  "FileUri": "<mof-file-uri>"
}'
Set-AzVMExtension -ResourceGroupName $rgName -VMName $vmName -Location $location `
  -Name $extensionName -Publisher $publisher -ExtensionType $extensionName `
  -TypeHandlerVersion $version -SettingString $publicConfig -ProtectedSettingString $privateConfig

トラブルシューティングとサポート

トラブルシューティング

拡張機能のデプロイ状態に関するデータを取得するには、Azure portal か Azure CLI を使用します。 特定の VM の拡張機能のデプロイ状態を確認するには、Azure CLI を使用して次のコマンドを実行します。

az vm extension list --resource-group myResourceGroup --vm-name myVM -o table

拡張機能の実行の出力は、次のファイルにログ記録されます。

/var/log/azure/<extension-name>/<version>/extension.log file.

エラー コード:51 は、サポートされていないディストリビューションまたはサポートされていない拡張機能アクションのいずれかを表します。 場合によっては、より高いバージョンの OMI がマシンに既に存在するときに、DSC Linux 拡張機能で OMI のインストールが失敗します。 [エラー応答:(000003) ダウングレードは許可されていません]

サポート

この記事についてさらにヘルプが必要な場合は、いつでも MSDN の Azure フォーラムと Stack Overflow フォーラムで Azure エキスパートに問い合わせてください。 または、Azure サポート インシデントを送信できます。 Azure サポート サイトに移動して [Get support](サポートを受ける) を選択します。 Azure サポートの使用方法の詳細については、「 Azure Support FAQ (Microsoft Azure サポートに関する FAQ)」を参照してください。

次のステップ

拡張機能の詳細については、「Linux 用の仮想マシンの拡張機能とその機能」を参照してください。