Armadilloフォーラム

ウェブサーバーからイメージのインストール(手動)時の通信について

e1234

2024年3月11日 11時09分

Armadillo Base OSでコンテナ更新をしたい為、Hawkbitサーバーを立てております。
以下の内容を参照し、実施しました。

 Armadillo Base OS:Hawkbitサーバーを用いてソフトウェアアップデートする方法
 https://armadillo.atmark-techno.com/blog/15349/13372

現在、「ウェブサーバーからイメージのインストール(手動)」を行いたいと思っています。

そのため、以下を行いました。
(1)上記Webページでは、Armadillo側から10分間隔でhawkbitサーバーにアクセスしに行っているので、
 Armadillo側のサービス(swupdate-hawkbitサービス)を停止
(2)上記Webページの「4.アップデート実行(Rollout)」を実行し、
 hawkbitサーバーにswuイメージをアップロード
(3)Armadilloで以下のコマンドを実行
swupdate -d '-u http://(hawkbitサーバーのIPアドレス):8080/DEFAULT/controller/v1/armadillo-0001/softwaremodules/14/artifacts/sample_container_update.swu'

コマンドについては、 
https://armadillo.atmark-techno.com/files/downloads/armadillo-640/docum…
 p47 ウェブサーバーからイメージのインストール(手動)
を参照しています。

すると、Armadilloでswupdateコマンド実行したところ、401エラーが返ってきました。【添付ファイル①、②】

通信パケットを確認したところ、
TargetTokenがついていなかったので、TargetTokenを付けた通信が必要だと思っております。

そこで、
(4)Armadilloで以下のコマンドを実行(-kオプション使用)
 swupdate -d '-u http://(hawkbitサーバーのIPアドレス):8080/DEFAULT/controller/v1/armadillo-0001/softwaremodules/14/artifacts/sample_container_update.swu' -k (TargetTokenの値)

を行うと、エラーになりました。【添付ファイル③】
ちなみに、この時 通信ログは出ていませんでした。

手動でインストールを行う場合、TargetTokenを付けて通信するにはどうすればよいか、
ご教授いただけないでしょうか?

■添付ファイル
①Armadillo_hawkbitサーバーへの手動アクセス.txt
/var/log/messagesの内容

②通信パケット_hawkbitサーバーへの手動アクセス.pdf

③Armadillo_hawkbitサーバーへの手動アクセス(TargetToken).pdf
 Armadilloのコンソールログ

■環境
・VirtualBox
・Ubuntu22.04
・Docker(Docker Engine on Ubuntu)

■BaseOSインストールディスクイメージ
 https://download.atmark-techno.com/armadillo-640/image/baseos-600-insta…
 baseos-600-installer-3.18.6-at.10.img

■コンテナ
・Hawkbit docker-composeコンテナ
 https://armadillo.atmark-techno.com/resources/software/armadillo-640/ab…
  hawkbit-compose-4.15.1.tar.xz

コメント

at_dominique.m…

2024年3月11日 11時37分

e1234さん、

お世話になっています、
マルティネです。

hawkbit サーバーで直接にアップデートすることはサポートしてません。
理由はいくつかありますが、こういう風にアップデートをインストールしても hawkbit サーバーにアップデート状態が通信されないので、hawkbit を使うメリットがありません。

開発時に10分の待ち時間を無理やりにスキップしたい場合でしたら swupdate-hawkbit サービスをリスタートすればアップデートがすぐに開始されます。
運用のための調査でしたら申し訳ございませんが、Armadillo Twin を検討するか、別の方法でアップデートを管理してください。swupdate -d でしたら普通の web サーバーでも同じです。

一応把握している範囲で回答します。

> TargetTokenがついていなかったので、TargetTokenを付けた通信が必要だと思っております。

はい、おそらくそうですね。
https://eclipse.dev/hawkbit/concepts/authentication/#anonymous-access の設定でトークンなくてもダウンロードを許可できるはずです。

> そこで、
> (4)Armadilloで以下のコマンドを実行(-kオプション使用)
>  swupdate -d '-u http://(hawkbitサーバーのIPアドレス):8080/DEFAULT/controller/v1/armadillo-0001/softwaremodules/14/artifacts/sample_container_update.swu' -k (TargetTokenの値)

このオプションは target token の設定ではなく、public key の設定です:

# swupdate --help
...
 -k, --key <public key file>    : file with public key to verify images
...
 -u, --suricatta [OPTIONS]      : Parameters to be passed to suricatta
...
	  -k, --targettoken   Set target token.

targettoken は swupdate -u '-k <token>' で設定できますが、おそらく -d モードでは使用されないと思います。(コンフィグファイルには書いてますので、コマンドラインに同じ値を指定しても同じです)

よろしくお願いします

e1234

2024年3月12日 16時21分

マルティネさん

お世話になっております。
回答ありがとうございます。

> hawkbit サーバーで直接にアップデートすることはサポートしてません。
> 理由はいくつかありますが、こういう風にアップデートをインストールしても hawkbit サーバーにアップデート状態が通信されないので、hawkbit を使うメリットがありません。

了解いたしました。