kz21_ym
2024年4月11日 13時28分
お世話になります。
コンテナのプログラムから swupdate を実行した後
その結果を参照して結果(成功や失敗)を
自前のログに出力するということをやりたいのですが
「結果の参照方法」が分かりません。
どういったやりかたがあるかご教示いただける
と助かります。
環境としては
armadillo-640 baseos alpineコンテナになります。
swupdateの実行は
ftpやsshでswuファイルをarmadilloに送ってから
コンテナのプログラムから ssh 経由で
swupdate -i ファイル名
を実行するという形で考えています。
よろしくお願いします。
コメント
kz21_ym
マルティネ様
回答ありがとうございます。
swupdateでの実装は現時点では大変
ということ分かりました。
REST APIでの実装を検討しようと思います。
(swupdateにしようと思ったのは
REST APIの場合コンテナからホストに
ファイル転送されるのかなと思いそれが余計かなと
思ったためです。)
exit_code の確認方法なのですが
これはコンテナから確認可能なファイルなどに
出力されたりするのでしょうか?
何か実行時にどこかに出力するよう
操作しないといけないでしょうか?
まだ REST APIでのアップデートを試していないのですが
終了時に exit_code を確認してから
再起動するなどはできますか?
よろしくお願いします。
at_dominique.m…
kz21_ymさん、
> swupdateでの実装は現時点では大変
> ということ分かりました。
すみません、整理できた際にまだ必要でしたらまた連絡しますので言ってください。
> REST APIでの実装を検討しようと思います。
> (swupdateにしようと思ったのは
> REST APIの場合コンテナからホストに
> ファイル転送されるのかなと思いそれが余計かなと
> 思ったためです。)
その点については、ストリームとしてインストールされていますので、ファイルを転送しながら効率よくインストールされています。
あらかじめコピーしてもメリットがないはずです。
> exit_code の確認方法なのですが
> これはコンテナから確認可能なファイルなどに
> 出力されたりするのでしょうか?
> 何か実行時にどこかに出力するよう
> 操作しないといけないでしょうか?
すみません、この質問が分かりませんでした。
前の返事に書いた curl の出力は REST API に対する返事なので、実行している環境(コンテナ)で取得しています。
sw-versions のファイルの確認でしたら、add_volumes などでコンテナのどこかにマウントしていただければ確認できます。
> まだ REST APIでのアップデートを試していないのですが
> 終了時に exit_code を確認してから
> 再起動するなどはできますか?
desc ファイルに 「swdesc_option POST_ACTION=wait」を記載していただければ再起動されませんので、その後は abosweb/api/reboot で再起動すればアップデートで適用されます。
その状態で別のアップデートをインストールしようとしても失敗しますので、早めに再起動することを推奨しています。
(確認したら、その再起動待ちの状態で別のアップデートを送信すると exit_code 0 で失敗しますね…今のスクリプトは再起動待ちで判断しているのでそれは不具合です、整理できたらちゃんと失敗します。それまでは同時アップデートなどしない様にしていただければ幸いです)
よろしくお願いします。
kz21_ym
at_dominique.m…
2024年4月12日 11時54分
kz21_ymさん
お世話になっています、
マルティネです。
> コンテナのプログラムから swupdate を実行した後
> その結果を参照して結果(成功や失敗)を
> 自前のログに出力するということをやりたいのですが
> 「結果の参照方法」が分かりません。
> どういったやりかたがあるかご教示いただける
> と助かります。
申し訳ございません、かなり複雑なことなっています。
基本的には起動時に Armadillo Base OS (以下ABOS) の
/etc/sw-versions
を確認して、入れたいアップデートのバージョンと一致しているかどうかの判断しかありません。細かいところまで説明すると数時間かかってしまって結局実装も大変になりますので、こちらで一度整理させてください。
> swupdateの実行は
> ftpやsshでswuファイルをarmadilloに送ってから
> コンテナのプログラムから ssh 経由で
> swupdate -i ファイル名
> を実行するという形で考えています。
ssh で swupdate -i を実行するといくつかの問題があります:
* 同じ TMPDIR で複数の swupdate コマンドを同時に実行する場合に不具合がでますので、ロックを自分で取るか TMPDIR を毎回 mktemp -d 等で作る必要があります
* exit status で成功かどうかの判断はできません。整理ができたら exit code で成功するようになりますが、作業の範囲が広いので5月末リリースになると思います。
ssh にこだわってなければ、ABOS 3.18.5-at8 以降では abos-web の REST API でも swu のアップロードか URL のアップデートをコンテナから実行できます。
その場合はちゃんと exit_code の最後の値で 0=成功 / 0以外=失敗で判断できます。
このインターフェースは整理の影響でメッセージが多少変わるかもしれませんが、最終の「exit_code」を維持しますので、今からでも実装できます。
失敗の場合:
成功の場合:
ABOS Web の REST API の詳細はこちらを参考にしてください:
https://manual.atmark-techno.com/armadillo-640/armadillo-640_product_ma…
よろしくお願いします。