この機能と他の新しいWindows Azureの機能を使用するには、無料のプレビューにサインアップしてください。
はじめに
Windows AzureのLinuxエージェント(waagent)は、Windows Azureファブリック·コントローラーを備えた仮想マシンの相互作用を管理します。これは、Linux IaaSの展開の次の機能を提供します。
*イメージのプロビジョニング
ユー
ザーアカウントの作成。 SSH認証の種類を設定。 SSH公開鍵と鍵のペアの配置 ホスト名を設定 プラットフォームのDNSにホスト名を公開する
プラットフォームへのSSHホスト鍵の指紋を報告する リソースのディスクの管理 リソースディスクをフォーマットするとマウント
スワップ領域を構成する
*ネットワーキング
プラットフォームDHCPサーバとの互換性を向上させるためにルートを管理する ネットワークインタフェース名の安定性を確保
*カーネル
仮想NUMA構成 /dev/randomのためのHyper-Vのエントロピーを消費 ルートデバイスの設定、SCSIのタイムアウト(リモートの場合もあります)
*診断
シリアルポートへのリダイレクトを慰める
プ
ラットフォームからエージェントへの情報の流れは、2つのチャネルを介して行われます。 TCPエンドポイントは、REST
APIとIaaSの展開のためのブート時に接続されたDVDを公開しています。
DVDには、実際のSSH鍵ペア以外のすべてのプロビジョニング情報を含むOVFに準拠したコンフィギュレーション·ファイルが含まれています。
配置構成とトポロジは、REST APIを介して取得されます。
サポートされるLinuxディストリビューション
*CentOSの6.0 + *Ubuntuの12.04 + - SUSE(SLES)11SP2 + *のOpen SUSE 12.1 +
必要条件 Waagentが正しく機能するために、いくつかのシステムパッケージに依存します。
*Pythonの2.4 + *opensslの1.0 + *opensshの5.3 + *ファイルシステムユーティリティ:sfdisk、fdiskとmkfs *パスワードツール:chpasswd *テキスト処理ツール:sed、grep
インストール
RPMまたはDEBパッケージを使用してインストールすることが好ましい。手動でインストールする場合は、waagentは、/usr/sbin/waagentにコピーし、実行してインストールする必要があります。
/usr/sbin/waagent -install
コマンドラインオプション
フラグ
verbose:指定されたコマンドの冗長表示 force:いくつかのコマンドの対話型の確認をスキップする
コマンド
*help:サポートされているコマンドとフラグの一覧を表示します。
*install:必要な依存関係のためのシステムをチェックします。
SysV
initスクリプト(/etc/init.d/waagent)、logrotateの設定ファイル(を/etc/logrotate.d
/waagent)を作成し、ブート時にinitスクリプトを実行するイメージを設定します。を/etc/waagent.confにサンプルの設定ファ
イルを書き込みます。既存の設定ファイルは/etc/waagent.conf.oldに移動されます。カーネルのバージョンを検出し、必要に応じて
VNUMA回避策を適用します。は/var/libにネットワークを妨げる可能性がudevルール(/lib/udev/rules.d/75-
persistent-net-generator.rules
/etc/udev/rules.d/70-persistent-net.rules)を移動します/waagent/。
*uninstall:システムを削除し、そこからinitスクリプトの登録を解除します。削除されの/etc/waagent.confでlogrotateの設定とwaagent configファイルを。
VNUMAの回避策の復帰自動はサポートされていません - 必要に応じて、NUMA再度有効にするには、手でGRUBの設定ファイルを編集してください。任意の移動udevルールを復元します。
*deprovision:
システムをきれいにし、再プロビジョニングに適するように試みます。次の項目が削除されます。:
○すべてのSSHホストキー(Provisioning.RegenerateSshHostKeyPairが、コンフィギュレーションファイルに設定さ
れている場合)
○/etc/resolv.confにネームサーバーの設定
○/etc/shadowを(Provisioning.DeleteRootPasswordは、コンフィギュレーションファイルに設定されている場
合)からrootのパスワード ○キャッシュされたDHCPクライアントのリース。
○localhost.localdomainをにリセットし、ホスト名を指定します。WARNING!このイメージはすべての機密情報がクリアされ、再
配布に適していることを保証するものではありません。
○deprovision+user:プロビジョンの下のすべて(above)と削除され最後のユーザー·アカウントをプロビジョニングおよび関連する
データ ○virsion:waagentのバージョンを表示 ○serialconsole:Configures
GRUBにマークされたttyS0がブートコンソールとなります。
これは、カーネルの起動ログがシリアルポートに送信され、デバッグのために利用できるようにされるようになります。
○daemon:プラットフォームとの相互作用を管理するデーモンとしてwaagentを実行します。この引数はwaagent initスクリプトでwaagentに指定されています。
設定
コンフィギュレーションファイル(/ etc / waagent.conf)がwaagentの動作を制御します。サンプルの設定ファイルを以下に示します。
#
# Windows Azure Linux Agent Configuration
#
Role.StateConsumer=None
Role.ConfigurationConsumer=None
Role.TopologyConsumer=None
Provisioning.Enabled=y
Provisioning.DeleteRootPassword=n
Provisioning.RegenerateSshHostKeyPair=y
Provisioning.SshHostKeyPairType=rsa
Provisioning.MonitorHostName=y
ResourceDisk.Format=y
ResourceDisk.Filesystem=ext4
ResourceDisk.MountPoint=/mnt/resource
ResourceDisk.EnableSwap=n
ResourceDisk.SwapSizeMB=0
LBProbeResponder=y
Logs.Verbose=n
OS.RootDeviceScsiTimeout=300
OS.OpensslPath=None
さまざまな構成オプションは、以下に詳細に記載されています。構成オプション:は、ブール値、
文字列または整数3つのタイプがあります。ブール値の設定オ プションが"Y"または
"N"として指定することができます。以下に詳述するように特殊なキーワード"None"は、いくつかの文字列型の設定エントリのために使用することはで
きません。
Role.StateConsumer:
Type: String Default: None
実行可能プログラムへのパスが指定された場合、プログラムは2つのイベントで呼び出されます。
1.waagentイメージをプロビジョニングしており、"Ready"状態が約ファブリックに報告されています。プログラムに指定された引数は、 "Ready"となります。
waagentを続行する前に返すようにプログラムを待つことはありません。
2.waagent
は、ファブリックからシャットダウン要求を受信し、シャットダウン時に仮想マシンをしようとしたとき。プログラムに指定された引数は、
"shutdown"になります。 waagentがシャットダウンプロセスを開始する前に返すようにプログラムを待ちます。
Role.ConfigurationConsumer:
Type: String Default: None
実
行可能プログラムへのパスが指定されている場合、ファブリックコンフィギュレーションファイルは、仮想マシンのために利用可能であることを示したと
きに、プログラムが呼び出されます。
XML構成ファイルへのパスは、実行可能ファイルへの引数として提供されています。いつでもコンフィギュレーションファイルの変更これは、複数回呼び出さ
れることがあります。サンプルファイルは、付録に記載されています。
このファイルの現在のパスは/var/lib/waagent/HostingEnvironmentConfig.xmlです。
Role.
TopologyConsumer?:
Type: String Default: None
実
行可能プログラムへのパスが指定されている場合、ファブリックは、新しいネットワークトポロジのレイアウトは、XML構成ファイルへの仮想
machine.Theパスの利用可能であることを示したときに、プログラムが呼び出される実行可能ファイルへの引数として提供されています。これは複数
回呼び出される可能性がいつでもネットワークトポロジの変更(例えば、サービスの治癒のために)。サンプルファイルは、付録に記載されています。このファ
イルの現在の場所は/var/lib/waagent/SharedConfig.xmlです。
Provisioning.Enabled:
Type: Boolean Default: y
こ
れにより、ユーザはエージェントのプロビジョニング機能を有効または無効にすることができます。有効な値は "Y"または
"N"です。プロビジョニングが無効になっている場合は、画像内のSSHホストとユーザキーが保存され、Windows
AzureのプロビジョニングAPIで指定された任意の設定は無視されます。
Provisioning.DeleteRootPassword:
Type: Boolean Default: n
設定されている場合は、/etc/shadowファイルにrootのパスワードは、プロビジョニングプロセス中に消去されます。
Provisioning.
RegenerateSshHostKeyPair?:
Type: Boolean Default: y
設定されている場合、すべてのSSHホストキーペア(ECDSA、DSAおよびRSA)はの/etc/ssh/からプロビジョニングプロセス中に削除されます。と、単一の新鮮な鍵ペアが生成されます。
新
鮮な鍵ペアの暗号化タイプはProvisioning.SshHostKeyPairTypeエントリによって構成されています。
SSHデーモン(たとえば、再起動時に)再起動したときにいくつかのディストリビューションが欠落している暗号化タイプのためにSSH鍵ペアを再作成
することに注意してください。
Provisioning.SshHostKeyPairType:
Type: String Default: rsa
こ
れは、仮想マシン上のSSHデーモンでサポートされている暗号化アルゴリズムのタイプに設定することができます。一般的にサポートされている値は、
"RSA"、 "DSA"と "ECDSA"です。 Windowsの "putty.exe"は
"ECDSA"をサポートしないことに注意してください。それで、あなたはLinuxデプロイメントに接続するWindows上でputty.exeを使
用する場合は、 "RSA"または "DSA"を使用してください。
Provisioning.MonitorHostName:
Type: Boolean Default: y
設
定されている場合、waagentは、ホスト名の変更(として
"hostname"コマンドによって返される)は、Linux仮想マシンを監視し、自動的に変更を反映するイメージのネットワーク構成を更新します。
DNSサーバーへの名前の変更をプッシュするために、ネットワークが仮想マシンで再起動されます。これは、インターネット接続を簡単に失われます。
ResourceDisk?.Format:
Type: Boolean Default: y
設定されている場合 "
ResourceDisk?.Filesystem"
のユーザによって要求されたファイルシステムタイプが
"NTFS"以外である場合は、プラットフォームによって提供されるリソースのディスクをフォーマットし、waagentによってマウントされます。タイ
プのLinux(83)の単一のパーティションは、ディスク上の利用可能になります。それが正常にマウントできる場合は、このパーティションがフォーマッ
トされませんのでご注意ください。
ResourceDisk?.Filesystem:
Type: String Default: ext4
これは、リソースディスクのファイルシステムタイプを指定します。サポートされている値は、Linuxディストリビューションによって異なります。文字列がXである場合、mkfs.Xは、Linuxイメージ上に存在する必要があります。
ResourceDisk?.
MountPoint?:
Type: String Default: /mnt/resource
これは、リソースのディスクがマウントされているパスを指定します。
ResourceDisk?.
EnableSwap?:
Type: Boolean Default: n
設定されている場合、スワップファイル(/スワップ)はリソースディスク上に作成し、システムのスワップ領域に追加されます。
ResourceDisk?.SwapSizeMB:
Type: Integer Default: 0
メガバイト単位のスワップファイルのサイズ。
LBProbeResponder:
Type: Boolean Default: y
設定されている場合、waagentは、プラットフォーム(存在する場合)からバランサのプローブをロードするために応答します。
Logs.Verbose:
Type: Boolean Default: n
設定されている場合、ログの冗長性がブーストされています。 Waagentは、/ var / log / waagent.logにログインし、ログを回転させるシステムのlogrotate機能を活用しています。
OS.
RootDeviceScsiTimeout?:
タイプ:整数 デフォルト:300
これは、ルートデバイス上の秒単位でSCSIタイムアウトを設定します。設定されていない場合、システムのデフォルト値が使用されます。
OS.
OpensslPath?:
タイプ:文字列 デフォルト:なし
これは、暗号化操作に使用するOpenSSLのバイナリの代替パスを指定するために使用することができます。
付録
サンプルロールコンフィギュレーション·ファイル
<?xml version="1.0" encoding="utf-8"?>
<HostingEnvironmentConfig version="1.0.0.0" goalStateIncarnation="1">
<StoredCertificates>
<StoredCertificate name="Stored0Microsoft.WindowsAzure.Plugins.RemoteAccess.PasswordEncryption" certificateId="sha1:C093FA5CD3AAE057CB7C4E04532B2E16E07C26CA" storeName="My" configurationLevel="System" />
</StoredCertificates>
<Deployment name="a99549a92e38498f98cf2989330cd2f1" guid="{374ef9a2-de81-4412-ac87-e586fc869923}" incarnation="14">
<Service name="LinuxDemo1" guid="{00000000-0000-0000-0000-000000000000}" />
<ServiceInstance name="a99549a92e38498f98cf2989330cd2f1.4" guid="{250ac9df-e14c-4c5b-9cbc-f8a826ced0e7}" />
</Deployment>
<Incarnation number="1" instance="LinuxVM_IN_2" guid="{5c87ab8b-2f6a-4758-9f74-37e68c3e957b}" />
<Role guid="{47a04da2-d0b7-26e2-f039-b1f1ab11337a}" name="LinuxVM" hostingEnvironmentVersion="1" software="" softwareType="ApplicationPackage" entryPoint="" parameters="" settleTimeSeconds="10" />
<HostingEnvironmentSettings name="full" Runtime="rd_fabric_stable.111026-1712.RuntimePackage_1.0.0.9.zip">
<CAS mode="full" />
<PrivilegeLevel mode="max" />
<AdditionalProperties><CgiHandlers></CgiHandlers></AdditionalProperties></HostingEnvironmentSettings>
<ApplicationSettings>
<Setting name="__ModelData" value="<m role="LinuxVM" xmlns="urn:azure:m:v1"><r name="LinuxVM"><e name="HTTP" /><e name="Microsoft.WindowsAzure.Plugins.RemoteAccess.Rdp" /><e name="Microsoft.WindowsAzure.Plugins.RemoteForwarder.RdpInput" /><e name="SSH" /></r></m>" />
<Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountEncryptedPassword" value="…" />
<Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountExpiration" value="2015-11-06T23:59:59.0000000-08:00" />
<Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountUsername" value="rdos" />
<Setting name="Microsoft.WindowsAzure.Plugins.RemoteAccess.Enabled" value="true" />
<Setting name="Microsoft.WindowsAzure.Plugins.RemoteForwarder.Enabled" value="true" />
<Setting name="startpage" value="Hello World!" />
<Setting name="Certificate|Microsoft.WindowsAzure.Plugins.RemoteAccess.PasswordEncryption" value="sha1:C093FA5CD3AAE057CB7C4E04532B2E16E07C26CA" />
</ApplicationSettings>
<ResourceReferences>
<Resource name="DiagnosticStore" type="directory" request="Microsoft.Cis.Fabric.Controller.Descriptions.ServiceDescription.Data.Policy" sticky="true" size="1" path="a99549a92e38498f98cf2989330cd2f1.LinuxVM.DiagnosticStore\" disableQuota="false" />
</ResourceReferences>
</HostingEnvironmentConfig>
サンプルロールトポロジーファイル
<?xml version="1.0" encoding="utf-8"?>
<SharedConfig version="1.0.0.0" goalStateIncarnation="2">
<Deployment name="a99549a92e38498f98cf2989330cd2f1" guid="{374ef9a2-de81-4412-ac87-e586fc869923}" incarnation="14">
<Service name="LinuxDemo1" guid="{00000000-0000-0000-0000-000000000000}" />
<ServiceInstance name="a99549a92e38498f98cf2989330cd2f1.4" guid="{250ac9df-e14c-4c5b-9cbc-f8a826ced0e7}" />
</Deployment>
<Incarnation number="1" instance="LinuxVM_IN_1" guid="{a7b94774-db5c-4007-8707-0b9e91fd808d}" />
<Role guid="{47a04da2-d0b7-26e2-f039-b1f1ab11337a}" name="LinuxVM" settleTimeSeconds="10" />
<LoadBalancerSettings timeoutSeconds="32" waitLoadBalancerProbeCount="8">
<Probes>
<Probe name="LinuxVM" />
<Probe name="03F7F19398C4358108B7ED059966EEBD" />
<Probe name="47194D0E3AB3FCAD621CAAF698EC82D8" />
</Probes>
</LoadBalancerSettings>
<OutputEndpoints>
<Endpoint name="LinuxVM:Microsoft.WindowsAzure.Plugins.RemoteAccess.Rdp" type="SFS">
<Target instance="LinuxVM_IN_0" endpoint="Microsoft.WindowsAzure.Plugins.RemoteAccess.Rdp" />
<Target instance="LinuxVM_IN_1" endpoint="Microsoft.WindowsAzure.Plugins.RemoteAccess.Rdp" />
<Target instance="LinuxVM_IN_2" endpoint="Microsoft.WindowsAzure.Plugins.RemoteAccess.Rdp" />
</Endpoint>
</OutputEndpoints>
<Instances>
<Instance id="LinuxVM_IN_1" address="10.115.38.202">
<FaultDomains randomId="1" updateId="1" updateCount="2" />
<InputEndpoints>
<Endpoint name="HTTP" address="10.115.38.202:80" protocol="tcp" isPublic="true" loadBalancedPublicAddress="70.37.56.176:80" enableDirectServerReturn="false" isDirectAddress="false" disableStealthMode="false">
<LocalPorts>
<LocalPortRange from="80" to="80" />
</LocalPorts>
</Endpoint>
<Endpoint name="Microsoft.WindowsAzure.Plugins.RemoteAccess.Rdp" address="10.115.38.202:3389" protocol="tcp" isPublic="false" enableDirectServerReturn="false" isDirectAddress="false" disableStealthMode="false">
<LocalPorts>
<LocalPortRange from="3389" to="3389" />
</LocalPorts>
<RemoteInstances>
<RemoteInstance instance="LinuxVM_IN_0" />
<RemoteInstance instance="LinuxVM_IN_2" />
</RemoteInstances>
</Endpoint>
<Endpoint name="Microsoft.WindowsAzure.Plugins.RemoteForwarder.RdpInput" address="10.115.38.202:20000" protocol="tcp" isPublic="true" loadBalancedPublicAddress="70.37.56.176:3389" enableDirectServerReturn="false" isDirectAddress="false" disableStealthMode="false">
<LocalPorts>
<LocalPortRange from="20000" to="20000" />
</LocalPorts>
</Endpoint>
<Endpoint name="SSH" address="10.115.38.202:22" protocol="tcp" isPublic="true" loadBalancedPublicAddress="70.37.56.176:22" enableDirectServerReturn="false" isDirectAddress="false" disableStealthMode="false">
<LocalPorts>
<LocalPortRange from="22" to="22" />
</LocalPorts>
</Endpoint>
</InputEndpoints>
</Instance>
<Instance id="LinuxVM_IN_0" address="10.115.58.82">
<FaultDomains randomId="0" updateId="0" updateCount="2" />
<InputEndpoints>
<Endpoint name="Microsoft.WindowsAzure.Plugins.RemoteAccess.Rdp" address="10.115.58.82:3389" protocol="tcp" isPublic="false" enableDirectServerReturn="false" isDirectAddress="false" disableStealthMode="false">
<LocalPorts>
<LocalPortRange from="3389" to="3389" />
</LocalPorts>
</Endpoint>
</InputEndpoints>
</Instance>
<Instance id="LinuxVM_IN_2" address="10.115.58.148">
<FaultDomains randomId="0" updateId="2" updateCount="2" />
<InputEndpoints>
<Endpoint name="Microsoft.WindowsAzure.Plugins.RemoteAccess.Rdp" address="10.115.58.148:3389" protocol="tcp" isPublic="false" enableDirectServerReturn="false" isDirectAddress="false" disableStealthMode="false">
<LocalPorts>
<LocalPortRange from="3389" to="3389" />
</LocalPorts>
</Endpoint>
</InputEndpoints>
</Instance>
</Instances>
</SharedConfig>