Runbook Hybrid Worker拡張機能の雑記

#### 初めに
以前にRunbook Hybrid Workerについて以下2本の記事を投稿しました。
+ [Azure Automation Hybrid Runbook Worker（拡張機能ベース）についてまとめておく](https://qiita.com/pienhalifax/items/acbb53392f43834e9822)
+ [LogicAppsからRunbook(Hybrid Runbook Worker)に入力パラメータを渡す方法](https://qiita.com/pienhalifax/items/ef4c0558c0267e97fadc)

今回は、Runbook Hybrid Worker拡張機能のマニアックな部分を記録していきます。Runbookで困ったらこの中にヒントがあるかもしれません。

<本書における前提条件>
OS：Redhat 8系
スクリプト実行環境：PowerShell 7.2

#### 目次
+ [Runbookの実行ユーザー](#runbookの実行ユーザー)
+ [hweautomationユーザー](#hweautomationユーザー)
+ [Workerプロセスの確認](#workerプロセスの確認)
+ [設定ファイル](#設定ファイル)

## Runbookの実行ユーザー
Runbookに以下記載して実行してみます。
~~~ username check
whoami
~~~
出力結果、rootユーザーでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678759/efb59b84-3a84-dcf6-c06e-9fe662c39221.png)

## hweautomationユーザー
[こちらのDocs](https://learn.microsoft.com/ja-jp/azure/automation/troubleshoot/extension-based-hybrid-runbook-worker)にでてくるhweautomationユーザーを見てみました。
以下、確認コマンド
~~~ 確認コマンド
cat /etc/passwd
~~~

結果こんな感じでした。
+ ホームディレクトリ：/home/hwautomation
+ ログインシェル名：/bin/bash

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678759/0083753c-a513-1a9b-c1ea-13f5d636d809.png)

##  Workerプロセスの確認
[こちらのDocs](https://learn.microsoft.com/ja-jp/azure/automation/troubleshoot/extension-based-hybrid-runbook-worker)に従って確認してみました。
~~~ 確認コマンド
ps aux | grep hwd
~~~

起動時の結果はこんな感じ
プロセスの見方については、[こちらの記事](https://qiita.com/toshihirock/items/565fe71d778d3ee36b96)を参照してください。
~~~ 実行結果
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root       99999  0.0  0.0  12216  1108 pts/0    S+   07:34   0:00 grep --color=auto hwd
~~~

## 設定ファイル
以下、ディレクトリとなります。<font color="red">version</font>はバージョンが入ります。
~~~ パス
/var/lib/waagent/Microsoft.Azure.Automation.HybridWorker.HybridWorkerForLinux-<version>
~~~ 

#### config/0.setting
Automation AccountURLやProtectedSettingsの記載があります。
こちらがAutomationAccountへの接続情報を持ったファイルになるかと思われます。
~~~ 0.settingファイル
{
    "runtimeSettings":
    [
        {
            "handlerSettings": 
            {
                 "publicSettings": 
                  {
                     "AutomationAccountURL": "<AutomationAzzountのURL>"
                   },
                "protectedSettings": null, 
                "protectedSettingsCertThumbprint": null
             }
        }
    ]
}
~~~

#### HybridWorkerAgentディレクトリ
インストール時に使用されるモジュールがいろいろ入っています。
hweautomationユーザー作るpythonとか設置されています。
lsコマンドの中身をここに記載しておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678759/ba94bab4-49ae-1591-4e99-451cf7c8c77d.png)

#### status/0.status
拡張機能名やインストール日、プロビジョニングの状態が記載されています。
~~~ 0.status
[
    {
        "version": "1.0", 
        "timestampUTC": "2024-07-02T12:16:28Z", 
        "status": 
        {
            "name": "Microsoft.Azure.Automation.HybridWorker.HybridWorkerForLinux", 
            "operation": "Enable", 
            "status": "success", 
            "code": "0", 
            "formattedMessage": 
            {
                "lang": "en-US", 
                "message": "Enable Successful."
            }
        }
    }
]
~~~

AzurePortalでは以下から同じ情報を確認できます。
Automationアカウント>ハイブリッドWorkerグループ>ハイブリッドWorker
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678759/4f80927e-fcf2-90cb-a125-b9fa37e735d6.png)


#### HandlerEnvironment.json
ログフォルダやConfigファイル、ステータスファイル等のディレクトリ情報が記載されたファイルとなります。
~~~ HandlerEnvironment.json
[
    {
        "name": "Microsoft.Azure.Automation.HybridWorker.HybridWorkerForLinux",
        "version": 1.0,
        "handlerEnvironment": 
        {
            "logFolder": "/var/log/azure/Microsoft.Azure.Automation.HybridWorker.HybridWorkerForLinux", 
            "configFolder": "/var/lib/waagent/Microsoft.Azure.Automation.HybridWorker.HybridWorkerForLinux-1.1.16/config", 
            "statusFolder": "/var/lib/waagent/Microsoft.Azure.Automation.HybridWorker.HybridWorkerForLinux-1.1.16/status", 
            "heartbeatFile": "/var/lib/waagent/Microsoft.Azure.Automation.HybridWorker.HybridWorkerForLinux-1.1.16/heartbeat.log", 
            "eventsFolder": "/var/log/azure/Microsoft.Azure.Automation.HybridWorker.HybridWorkerForLinux/events",
            "eventsFolder_preview": "/var/log/azure/Microsoft.Azure.Automation.HybridWorker.HybridWorkerForLinux/events"
            }
    }
]
~~~
#### config/HandlerStatusファイル
Runbookにおけるハンドラーの実行状況が格納されたファイルです。

~~~ HandlerStatus
{
    "name": "Microsoft.Azure.Automation.HybridWorker.HybridWorkerForLinux", 
    "version": "1.1.16", 
    "status": "Ready", 
    "code": 0, 
    "message": "Plugin enabled", 
    "supports_multi_config": false, 
    "extension_status": null
}
~~~
#### Troubleshooterディレクトリ
トラブルシューティング用のスクリプトの入ったディレクトリ。
Linuxでは以下をトラブルシューティングで使用するように[Docs](https://learn.microsoft.com/ja-jp/azure/automation/troubleshoot/extension-based-hybrid-runbook-worker)に記載があります。
~~~ パス
/var/lib/waagent/Microsoft.Azure.Automation.HybridWorker.HybridWorkerForLinux-<version>/Troubleshooter/LinuxTroubleshooter.py
~~~

## 終わりに
設定ファイルは未熟でよくわからない構成ファイルも多くあるので、わかったらここに追記していきます。なお、こちらの情報は拡張機能のバージョンによって変更となっている可能性がありますので、記載のパスを元にファイルを実際に確認しつつ判断してください。