ブログ

Armadillo Base OS:コンテナから任意のスクリプトを実行する

at_shinya.matsumoto
2024年11月7日 16時53分

本ブログでは、コンテナ内からArmadillo Base OS側のスクリプトを実行する方法を案内します。
この方法でコンテナ内で実行できないArmadillo Base OSのコマンドも実行できるようになります。

今回は例として、脆弱性対応でアップデートしたときにロールバック先が脆弱性を含んでいる場合に
ロールバック先も最新のデータに書き換える方法をスクリプトで実行します。

《参考ブログ》
Armadillo Base OS:ロールバック先のデータを最新にする方法(コマンドで実行)

実施手順

以下の手順で作成します。
1.ABOS Webでトークンの設定を行う
2.コンテナにcurlをインストールする
3.コンテナのコンフィグファイルを修正
4.所定の場所に実行したいスクリプトを作成
5.コンテナからスクリプトを実行


1.ABOS Webでトークンの設定を行う

最初にABOS Webを開いてトークンの設定を行います。
ABOS Webへのアクセス方法は製品マニュアルまたはこちらを参照下さい。

ABOS Webを開き、下記の設定管理を開きます。

この設定管理ではパスワード変更以外に、トークンの追加/削除や権限の設定を行う事ができます。
※トークンの権限は製品マニュアルの「REST API」を参照下さい。

今回はトークンにCustomの権限を追加しておきます。
これでトークン側の設定は完了です。

2.コンテナにcurlをインストールする

VScodeでコンテナ(アプリケーション)を作成する場合は、packages.txtに curl を追記し、
ビルド時にインストールしておきます。

3.コンテナのコンフィグファイルを修正

トークンを変数AUTHとして設定します。
VScodeのapp.conf(Armadillo Base OSでは/etc/atmark/containers/コンテナ名.conf)に下記の様に
変数としてトークンを設定しておくと楽です。
(コンテナに/etc/atmark/abos_web/tokensをマウントする事でもコンテナ内から確認出来ます)

add_args --env=AUTH="Authorization:Bearer 16ac5299-991e-4fdc-8698-a9d405da075a"

上記のコンテナ及びコンフィグファイルをArmadilloにインストールした前提で次に進みます。

4.所定の場所に実行したいスクリプトを作成

・ルート権限が不要な場合
 /etc/atmark/abos_web/customize_rest にスクリプトを作成します。
 customize_restディレクトリが無い場合は作成しておきます。

・ルート権限が必要な場合
 上記配置に加え、/etc/doas.d/abos_web_customize.conf に配置するスクリプトを以下の様に追記します。

[armadillo]# cat /etc/doas.d/abos_web_customize.conf
permit nopass abos-web-admin as root cmd /etc/atmark/abos_web/customize_rest/test_script.sh


スクリプトを/etc/atmark/abos_web/customize_rest/下に作成します。

スクリプトの内容
[armadillo]# cat /etc/atmark/abos_web/customize_rest/test_script.sh
#!/bin/sh

abos-ctrl rollback-clone

実行権限付与
[armadillo]# chmod +x /etc/atmark/abos_web/customize_rest/test_script.sh

eMMCに保存
[armadillo]# persist_file /etc/atmark/abos_web/customize_rest/test_script.sh


次に、ルート権限で実行する為に /etc/doas.d/abos_web_customize.conf に実行するスクリプトを追記します。
※本スクリプトを実行にルート権限が不要な場合は次の「5.コンテナからスクリプトを実行」に進みます。

abos_web_customize.confへの追記
[armadillo]# cat /etc/doas.d/abos_web_customize.conf
permit nopass abos-web-admin as root cmd /etc/atmark/abos_web/customize_rest/test_script.sh

eMMCに保存
[armadillo]# persist_file /etc/doas.d/abos_web_customize.conf


これでスクリプトの配置は完了です。


5.コンテナからスクリプトを実行

コンテナ内から下記コマンドを実行します。
※ルート権限が必要な場合は下記の様に -d root=true を追加します。

[container]# curl -k -H "$AUTH" \
-d root=true \
-X POST \
https://host.containers.internal:58080/api/custom/test_script.sh


以上で完了となります。


開発手順・TIPS集のTOPに戻る