本ブログでは、コンテナ内から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
以上で完了となります。