Microsoft Azure Linuxエージェント
Downcodes のエディターは、Linux プロビジョニングと仮想マシンの Azure ファブリック コントローラーとの対話を管理するツールである Microsoft Azure Linux Agent (waagent) を紹介します。 Linux IaaS 導入に次の機能を提供します。
1. イメージ プロビジョニング: waagent は、ネットワークの構成、ドライバーのインストール、初期ユーザー アカウントの設定など、Linux 仮想マシンの初期プロビジョニング プロセスの管理を担当します。
2. ネットワーク管理: waagent は Azure ファブリック コントローラーと連携して、IP アドレス、サブネット マスク、ゲートウェイなどの仮想マシンのネットワーク設定を構成します。
3. カーネル管理: waagent は、仮想マシンのカーネル更新を管理して、仮想マシンが常に最新の安全なカーネル バージョンを実行していることを確認できます。
4. 診断: waagent は、問題の診断と障害の解決に役立つ仮想マシンの健全性情報を収集および報告できます。
5. SCVMM 導入: waagent は、仮想マシンを管理およびプロビジョニングするための System Center Virtual Machine Manager (SCVMM) との統合をサポートします。
6. 仮想マシン拡張機能: waagent は、ソフトウェアのインストールやメトリクスの監視などの追加機能とカスタマイズを提供する仮想マシン拡張機能の実行をサポートします。
7. 通信: waagent は、次の 2 つのチャネルを通じて Azure ファブリック コントローラーと通信します。
* 起動時追加 DVD: IaaS 導入の場合、OVF 互換構成ファイルを含む起動時追加 DVD により、(SSH キー ペアに加えて) プロビジョニング情報が提供されます。
* REST API: デプロイメントおよびトポロジー構成を取得するための REST API を公開する TCP エンドポイント。
waagent は、httpproxy (HTTP リクエストの場合) または httpsproxy (HTTPS リクエストの場合) 環境変数を介して HTTP プロキシを使用できます。 Python の制限により、waagent は認証を必要とする HTTP プロキシをサポートしません。
同様に、no_proxy 環境変数が設定されている場合、waagent はプロキシをバイパスします。
これらの環境変数が waagent サービスに対して定義される方法は、ディストリビューションによって異なることに注意してください。 systemd を使用したディストリビューションの場合、一般的なアプローチは、サービス定義の [Service] セクションで、Environment または EnvironmentFile を使用することです。たとえば、オーバーライドまたはファイルの挿入を使用します (オーバーライドについては systemctl edit を参照してください)。
例
`
cat /etc/systemd/system/walinuxagent.service.d/http-proxy.conf
[サービス]
環境 = "http_proxy=http://proxy.example.com:80/"
環境 = "https_proxy=http://proxy.example.com:80/"
#
`
waagent は、実行する仮想マシン拡張機能 (httpproxy や httpsproxy など) にその環境を渡すため、waagent のプロキシを定義すると、仮想マシン拡張機能のプロキシも定義されます。
HttpProxy.Host 構成変数と HttpProxy.Port 構成変数を使用すると、それらは環境設定をオーバーライドします。これらの構成変数は waagent プロセスに対してローカルであり、仮想マシン拡張機能には渡されないことに注意してください。
waagent が適切に機能するには、いくつかのシステム パッケージが必要です。これらのパッケージはディストリビューションによって異なります。
サポートされているインストール方法は、配布パッケージ リポジトリを介したインストールのみです。
カスタムの場所へのインストールやカスタム イメージの作成など、より高度なオプションを使用してソースからインストールできます。ただし、ソースからインストールすると、ディストリビューションによって waagent に対して行われたカスタマイズが上書きされる可能性があり、上級ユーザーのみを対象としています。このメソッドに対するサポートは非常に限られています。
ソースからインストールするには、setuptools を使用できます。
`
sudo python setup.py install --register-service
`
Python 3 の場合は、次を使用します。
`
sudo python3 setup.py install --register-service
`
次のコマンドを実行すると、その他のインストール オプションを表示できます。
`
sudo python setup.py install --help
`
waagent ログ ファイルは /var/log/waagent.log に保存されます。
最後に、以下の DEB および RPM セクションで提供される構成例を使用して、独自の RPM または DEB パッケージをカスタマイズできます。この方法は上級ユーザーにも適していますが、この方法に対するサポートは非常に限られています。
サポートされている方法は、配布パッケージ リポジトリを介したアップグレードまたは自動更新の使用のみです。詳細については、「Linux エージェントの更新」を参照してください。
waagent をソース コードからアップグレードするには、setuptools を使用できます。ソースからのアップグレードは上級ユーザーのみを対象としており、この方法のサポートは非常に限られています。
`
sudo python setup.py install --force
`
waagent サービスを再起動します。
`
sudoサービスwaagentの再起動
`
Ubuntu の場合は、次を使用します。
`
sudoサービスwalinuxagentの再起動
`
CoreOS の場合は、以下を使用します。
`
sudo systemctl 再起動 waagent
`
-verbose: 指定されたコマンドの詳細度を高めます。
-force: 一部のコマンドの対話型確認をスキップします。
-help: サポートされているコマンドとフラグをリストします。
-deprovision: 以下を削除して、システムをクリーンアップし、再プロビジョニングに適した状態にしようとします。
* すべての SSH ホスト キー (構成ファイル内の Provisioning.RegenerateSshHostKeyPair が「y」の場合)。
* /etc/resolv.conf のネームサーバー設定。
* /etc/shadow の root パスワード (構成ファイルの Provisioning.DeleteRootPassword が「y」の場合)。
* キャッシュされた DHCP クライアント リース。
* ホスト名を localhost.localdomain にリセットします。
警告してください!プロビジョニング解除は、イメージからすべての機密情報が削除されていること、および再配布に適していることを保証できません。
-deprovision+user: プロビジョニング解除 (上記) ですべてのアクションを実行し、最後にプロビジョニングされたユーザー アカウントとその関連データを削除します。
-version: waagentのバージョンを表示します。
-serialconsole: ttyS0 (最初のシリアル ポート) をブート コンソールとしてマークするように GRUB を設定します。これにより、カーネル ブート ログがシリアル ポートに送信され、デバッグに使用できるようになります。
-daemon: waagent をデーモン プロセスとして実行し、プラットフォームとの対話を管理します。このパラメータは、waagent 初期化スクリプトで waagent に指定されます。
-start: waagent をバックグラウンド プロセスとして実行します。
-collect-logs [-full]: ログ収集ユーティリティを実行します。これは、デバッグ目的でエージェント関連のログを収集し、ディスク上のエージェント フォルダに保存します。実行すると正確な位置が表示されます。より包括的なログ収集には、-full フラグを使用します。
構成ファイル (/etc/waagent.conf) は、waagent の動作を制御します。空行と最初の文字が # の行は無視されます (行末コメントはサポートされていません)。
構成ファイルの例を以下に示します。
`
Extensions.Enabled=y
Extensions.GoalStatePeriod=6
プロビジョニング.エージェント=自動
プロビジョニング.DeleteRootPassword=n
Provisioning.RegenerateSshHostKeyPair=y
Provisioning.SshHostKeyPairType=rsa
プロビジョニング.MonitorHostName=y
Provisioning.DecodeCustomData=n
プロビジョニング.ExecuteCustomData=n
プロビジョニング.PasswordCryptId=6
Provisioning.PasswordCryptSaltLength=10
ResourceDisk.Format=y
ResourceDisk.Filesystem=ext4
ResourceDisk.MountPoint=/mnt/resource
ResourceDisk.MountOptions=なし
ResourceDisk.EnableSwap=n
ResourceDisk.EnableSwapEncryption=n
ResourceDisk.SwapSizeMB=0
Logs.Verbose=n
ログ.収集=y
ログ.収集期間=3600
OS.AllowHTTP=n
OS.RootDeviceScsiTimeout=300
OS.EnableFIPS=n
OS.OpensslPath=なし
OS.SshClientAliveInterval=180
OS.SshDir=/etc/ssh
HttpProxy.Host=なし
HttpProxy.Port=なし
`
さまざまな構成オプションについては、以下で詳しく説明します。設定オプションは、ブール値、文字列、整数の 3 つのタイプに分類されます。ブール構成オプションは「y」または「n」として指定できます。特別なキーワード「None」は、以下で説明するように、特定の文字列構成項目で使用できます。
タイプ: ブール値
デフォルト値: y
このオプションを使用すると、ユーザーはエージェントの拡張処理機能を有効または無効にすることができます。有効な値は「y」または「n」です。拡張処理が無効になっている場合でも、ターゲットのステータスは引き続き処理され、仮想マシンのステータスは 5 分ごとに報告されます。ターゲット状態の拡張構成は無視されます。パスワードのリセット、SSH キーの更新、バックアップなどの機能は拡張機能に依存していることに注意してください。拡張機能がまったく必要ない場合にのみ、このオプションを無効にしてください。
注: この方法で拡張機能を無効にすることは、プロキシをまったく使用しないことと同じではありません。これを行うには、使用する API を通じてプロビジョニング時に ProvisionVMAgent フラグを設定する必要があります。これについては、Wiki で詳細を説明する予定ですが、まだ公開されていません。
タイプ: ブール値
デフォルト値: n
仮想マシンの拡張を実行する前に、cloud-init が完了するまで待ちます (cloud-init status --wait)。
Cloud-init と仮想マシン拡張機能はどちらも、初期展開時に仮想マシンをカスタマイズする一般的な方法です。デフォルトでは、エージェントは、cloud-init がまだ「構成」フェーズにある間にスケーリングの実行を開始し、「最終」フェーズが完了するまで待機しません。 cloud-init と拡張機能は、互いに競合する操作を実行する可能性があります (たとえば、両方ともパッケージのインストールを試行する可能性があります)。このオプションを「y」に設定すると、cloud-init がすべてのステージを完了した後にのみ仮想マシンの拡張が実行されます。
このオプションを使用するには、カスタム イメージを作成し、このオプションの値を「y」に設定して、仮想マシンの初期展開中に待機操作が確実に実行されるようにする必要があることに注意してください。
タイプ: 整数
デフォルト値: 3600
エージェントがクラウド初期化を待機するタイムアウト (秒単位)。タイムアウトが経過しても、エージェントは仮想マシンの拡張を続行します。詳細については、「Extensions.WaitForCloudInit」を参照してください。
タイプ: 整数
デフォルト値: 6
新しいターゲットのステータスをポーリングし、仮想マシンと拡張機能のステータスを報告する頻度 (秒単位)。ターゲット状態は、仮想マシン上の拡張機能の望ましい状態を記述します。
注: このパラメーターを数分以上設定すると、Azure portal で仮想マシンの状態が応答なし/使用不可として報告される場合があります。さらに、この設定は、エージェントがスケーリングの実行を開始する速度に影響します。
タイプ: ブール値
デフォルト値: y
拡張機能ハンドラーの自動更新を有効にします。拡張機能ハンドラーは、拡張機能の管理と仮想マシンのステータスの報告を担当します。エージェントのコア機能は拡張ハンドラーに含まれており、ユーザーは最新バージョンを維持するためにこのオプションを有効にすることをお勧めします。
このオプションを有効にすると、エージェントは新しいバージョンが利用可能になったときにインストールします。無効にすると、エージェントは新しいバージョンをインストールしませんが、仮想マシンにすでにインストールされている最新バージョンを使用します。
例証します:
エージェントのバージョンの詳細については、FAQ を参照してください。
エージェントのアップデートの詳細については、FAQ を参照してください。
AutoUpdate.UpdateTolatestVersion および AutoUpdate.Enabled の詳細については、FAQ を参照してください。
タイプ: ブール値
デフォルト値: y
拡張機能ハンドラーの自動更新を有効にします。このフラグは従来の理由からサポートされており、このフラグの代わりに AutoUpdate.UpdateTolatestVersion を使用することを強くお勧めします。
これら 2 つのフラグの違いは、「n」に設定すると、AutoUpdate.Enabled はイメージにプリインストールされている拡張機能ハンドラーのバージョンを使用するのに対し、AutoUpdate.UpdateTolatestVersion は仮想マシンに (自動更新経由で) インストールされている最新バージョンを使用することです。 。
ほとんどのディストリビューションでは、デフォルト値は「y」です。
タイプ: 文字列
デフォルト値: 自動
使用するプロビジョニング エージェントを選択します (または、「auto」を指定して waagent がこれを決定できるようにします)。可能なオプションは、「auto」(デフォルト)、「waagent」、「cloud-init」、または「disabled」です。
タイプ: ブール値
デフォルト値: y
このオプションを使用すると、ユーザーはエージェントのプロビジョニング機能を有効または無効にすることができます。有効な値は「y」または「n」です。プロビジョニングが無効になっている場合、イメージ内の SSH ホストとユーザー キーは保持され、Azure Provisioning API で指定された構成は無視されます。
注: この設定オプションは削除され、何の効果もありません。 waagent は、cloud-init をプロビジョニング エージェントとして自動的に検出するようになりました (オプションで Provisioning.Agent を使用してオーバーライドされます)。
タイプ: ブール値
デフォルト値: n
ホスト名の変更を監視し、DHCP リクエスト経由で変更を公開します。
タイプ: 整数
デフォルト値: 30
ホスト名の変更を監視する頻度 (秒単位)。 MonitorHostName が設定されていない場合、この設定は無視されます。
タイプ: ブール値
デフォルト値: n
このオプションは、cloud-init を介したプロビジョニングのサポートを有効または無効にします。
true (「y」) の場合、エージェントは拡張機能をインストールして最新のターゲット状態を処理する前に、cloud-init が完了するのを待ちます。 Provisioning.Enabled このオプションを有効にするには、無効 (「n」) にする必要があります。 Provisioning.Enabled を true (「y」) に設定すると、このオプションがオーバーライドされ、組み込みのエージェント プロビジョニング コードが実行されます。
注: この設定オプションは削除され、何の効果もありません。 waagent は、cloud-init をプロビジョニング エージェントとして自動的に検出するようになりました (オプションで Provisioning.Agent を使用してオーバーライドされます)。
タイプ: ブール値
デフォルト値: n
このオプションが設定されている場合、/etc/shadow ファイル内の root パスワードはプロビジョニング中に削除されます。
タイプ: ブール値
デフォルト値: y
このオプションを設定すると、/etc/ssh/ 内のすべての SSH ホスト キー ペア (ecdsa、dsa、および rsa) がプロビジョニング中に削除されます。新しいキーペアを生成します。
新しいキー ペアの暗号化タイプは、Provisioning.SshHostKeyPairType エントリを通じて構成できます。一部のディストリビューションでは、SSH デーモンの再起動時 (再起動後など) に、不足している暗号化タイプの SSH キー ペアが再作成されることに注意してください。
タイプ: 文字列
デフォルト: rsa
これは、仮想マシン上の SSH デーモンによってサポートされる暗号化アルゴリズムのタイプに設定できます。一般的にサポートされる値には、「rsa」、「dsa」、および「ecdsa」が含まれます。
「ecdsa」は Windows 上の「putty.exe」ではサポートされていないことに注意してください。したがって、Windows 上で putty.exe を使用して Linux 展開に接続する予定がある場合は、「rsa」または「dsa」を使用してください。
タイプ: ブール値
デフォルト値: y
このオプションが設定されている場合、waagent は Linux 仮想マシンのホスト名の変更 (「hostname」コマンドによって返される) を監視し、変更を反映するためにイメージ内のネットワーク構成を自動的に更新します。名前の変更を DNS サーバーにプッシュするために、仮想マシン内のネットワークが再起動されます。これにより、インターネット接続が短時間切断されます。
タイプ: ブール値
デフォルト値: n
このオプションが設定されている場合、waagent は Base64 から CustomData をデコードします。
タイプ: ブール値
デフォルト値: n
このオプションが設定されている場合、waagent はプロビジョニング後に CustomData を実行します。
タイプ: 文字列
デフォルト値: 6
パスワード ハッシュを生成するときに crypt によって使用されるアルゴリズム。
タイプ: 文字列
デフォルト値: 10
パスワード ハッシュの生成時に使用されるランダム ソルトの長さ。
タイプ: ブール値
デフォルト値: y
このオプションが設定されている場合、「ResourceDisk.Filesystem」でユーザーが要求したファイル システム タイプが「ntfs」でない限り、プラットフォームによって提供されるリソース ディスクは waagent によってフォーマットされ、マウントされます。 Linux (83) タイプの単一パーティションがディスク上に提供されます。このパーティションが正常にマウントできた場合は、フォーマットされないことに注意してください。
タイプ: 文字列
デフォルト: ext4
リソースディスクのファイルシステムタイプを指定します。サポートされる値は Linux ディストリビューションによって異なります。文字列が X の場合、mkfs.X が Linux イメージに存在する必要があります。 SLES 11 イメージでは通常、「ext3」を使用する必要があります。 BSD イメージでは、ここでは「ufs2」を使用する必要があります。
タイプ: 文字列
デフォルト値: /mnt/resource
リソースディスクをマウントするパスを指定します。
タイプ: 文字列
デフォルト値: なし
mount -o コマンドに渡すディスク マウント オプションを指定します。これは、「nodev,nosuid」などのカンマ区切りの値のリストです。詳細については、mount(8) を参照してください。
タイプ: ブール値
デフォルト値: n
このオプションが設定されている場合、スワップ ファイル (/swapfile) がリソース ディスク上に作成され、システムのスワップ領域に追加されます。
タイプ: ブール値
デフォルト値: n
このオプションが設定されている場合、スワップ ファイル (/swapfile) は暗号化されたファイルシステムとしてマウントされます (フラグは FreeBSD でのみサポートされます)。
タイプ: 整数
デフォルト値: 0
スワップ ファイルのサイズ (メガバイト単位)。
タイプ: ブール値
デフォルト値: n
このオプションを設定すると、ログの詳細度が高まります。 waagent は /var/log/waagent.log にログを記録し、システムの logrotate 関数を使用してログをローテーションします。
タイプ: ブール値
デフォルト値: y
このオプションを設定すると、サポート性を向上させるために、エージェント ログが定期的に収集され、安全な場所にアップロードされます。
注: この機能はエージェントのリソース使用機能 (cgroup) に依存します。このフラグはサポートされていないディストリビューションでは無効です。
タイプ: 整数
デフォルト値: 3600
これにより、ログが収集およびアップロードされる頻度が構成されます。デフォルト値は時間単位です。
注: これは、Logs.Collect オプションが有効な場合にのみ有効です。
タイプ: ブール値
デフォルト値: n
SSL サポートが Python にコンパイルされていない場合、プロキシはすべての HTTPS リクエストに失敗します。このオプションを「y」に設定すると、プロキシがリクエストを失敗させる代わりに HTTP にフォールバックするようになります。
注: HTTP を許可すると、安全なデータが誤って公開される可能性があります。
タイプ: ブール値
デフォルト値: n
このオプションが設定されている場合、エージェントは、基盤となるハードウェアのファームウェア バージョンと一致する RDMA カーネル ドライバーのインストールとロードを試みます。
タイプ: ブール値
デフォルト値: n
このオプションが設定されている場合、エージェントは OpenSSL コマンドの実行時に「OPENSSL_FIPS=1」を環境に出力します。これにより、インストールされている FIPS 準拠ライブラリを使用するように OpenSSL に指示されます。
エージェント自体には FIPS 関連のコードがないことに注意してください。 FIPS 準拠の証明書がインストールされていない場合、このオプションを有効にすると、すべての OpenSSL コマンドが失敗します。
タイプ: 整数
デフォルト値: 30
エージェントは DHCP クライアントの再起動を監視し、再起動が発生したときにネットワーク ルールを復元します。この設定は、監視を再開する頻度を秒単位で決定します。
タイプ: 整数
デフォルト値: 300
これにより、ルート デバイスの SCSI タイムアウトが秒単位で設定されます。設定されていない場合は、システムのデフォルトが使用されます。
タイプ: 整数
デフォルト値: 30
ルートデバイスで SCSI タイムアウトを設定する頻度 (秒単位)。 RootDeviceScsiTimeout が設定されていない場合、この設定は無視されます。
タイプ: 文字列
デフォルト値: なし
これを使用して、暗号化操作に使用される openssl バイナリへの代替パスを指定できます。
タイプ: 整数
デフォルト値: 30
永続的なネットワークインターフェイス名に対して udev ルール (75-persistent-net-generator.rules および /etc/udev/rules.d/70-persistent-net.rules) が削除される頻度 (秒単位)。
タイプ: 整数
デフォルト: 180
この値は、エージェントが SSH ClientAliveInterval 構成オプションに使用する秒数を設定します。
タイプ: 文字列
デフォルト: /etc/ssh
このオプションを使用すると、SSH 構成ディレクトリのデフォルトの場所をオーバーライドできます。
タイプ: 文字列
デフォルト値: なし
このオプションが設定されている場合、エージェントは HTTP/HTTPS リクエストにこのプロキシ サーバーを使用します。これらの値は、httpproxy または httpsproxy 環境変数をオーバーライドします。最後に、HttpProxy.Host を使用する場合は必須ですが、HttpProxy.Port はオプションです。
タイプ: ブール値
デフォルト値: y
このオプションが設定されている場合、エージェントは、拡張プロセスだけでなくエージェント プロセス自体の CPU とメモリにも cgroups 制限を設定しようとします。これについての詳細は wiki を参照してください。
タイプ: 文字列
デフォルト値: カスタムスクリプト、実行コマンド
cgroups の制限から除外する拡張子のリスト。これはカンマで区切る必要があります。
WALinuxAgent は、製品とサービスの改善に役立てるため、使用状況データを収集して Microsoft に送信します。収集されたデータは、サービスの正常性を追跡し、Azure サポート リクエストを支援するために使用されます。収集されたデータには、個人を特定できる情報は含まれません。詳細については、プライバシーに関する声明をお読みください。
WALinuxAgent は現在、テレメトリの無効化をサポートしていません。テレメトリ収集を無効にするには、WALinuxAgent を削除する必要があります。この機能が必要な場合は、GitHub で問題を開き、ニーズを説明してください。
このリポジトリではパッケージ化情報は管理されていませんが、参考のためにいくつかの例を以下に示します。公式に保守されているパッケージについては、ダウンストリーム リリース リポジトリを参照してください。
公式の Ubuntu WALinuxAgent パッケージはここにあります。
1 回実行します。
必要なパッケージをインストールする
`
sudo apt-get -y install ubuntu-dev-tools pbuilder python-all debhelper
`
pbuilder環境を作成する
`
sudo pbuilder create --debootstrapopts --variant=buildd
`
ダウンストリーム パッケージ リポジトリから waagent.dsc を取得します
パッケージをコンパイルするには、最上位のディレクトリから次の操作を実行します。
ソースコードパッケージをビルドする
`
dpkg-buildpackage -S
`
ビルドパッケージ
`
sudo pbuilder ビルド waagent.dsc
`
ビルドされたパッケージを取得します。通常は /var/cache/pbuilder/result にあります。
次の手順では、rpm パッケージをビルドする方法について説明します。
セットアップツールをインストールする
`
カール https://bootstrap.pypa.io/ez_setup.py -o - |
`
次のコマンドはバイナリ RPM とソース RPM をビルドします。
`
Python setup.py bdist_rpm
`
このプロジェクトは、オープン ソース コードに対する Microsoft の行動規範を採用しています。詳細については、行動規範に関する FAQ を参照するか、追加の質問やコメントがあれば [email protected] までお問い合わせください。
例:
Apache-2.0 ライセンス