ブログ

Armadillo Base OS:コンテナからタイムゾーンの設定を行う(ABOS WebのREST APIを使用)

at_shinya.matsumoto
2024年3月27日 12時32分

Armadillo Base OSでコンテナ内(アプリケーション)からタイムゾーン設定を行う方法を紹介します。
この方法はArmadillo Base OSのタイムゾーンを変更し、コンテナではその設定を使用します。

ABOS Webをアプリケーションとして使用できる環境の場合は下記手順は不要です。

実施手順

本手順はArmadillo Base OSのバージョンが 3.19.1-at.2 以降で使用する事が出来ます。
バージョンが古い場合はアップデートしてからお試し下さい。

1.ABOS Webでトークンの設定を行う
2.コンテナにcurlをインストールする
3.コンテナのコンフィグファイルを修正
4.コンテナ内で設定変更を行う

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

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

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

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

今回は「コンテナ起動」、「タイムゾーンの確認」、「タイムゾーンの設定」を行う必要がある為、
トークンにContainerAdmin、TimeView、TimeAdminの権限を追加しておきます。
これでトークン側の設定は完了です。

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 2439a0b2-5338-4ea0-a6ab-9638241ac488"


②Armadillo Base OSのタイムゾーン設定ファイルをマウント
Armadillo Base OSのタイムゾーンをコンテナでマウントする設定を追記します。

add_volumes /etc/localtime:/etc/localtime


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

4.コンテナ内で設定変更を行う

コンテナ内に入ってコマンドでIPアドレスを変更する例を紹介します。

コンテナを起動(起動している場合は省略)
[armadillo]# podman_start [コンテナ名]
 
コンテナに入る
[armadillo]# podman exec -it [コンテナ名] /bin/bash
 
コンテナ内の時刻を確認
[container]# date
Wed Mar 27 13:20:54 JST 2024     //Armadillo Base OSと同じ設定になっている
 
コンテナ内からタイムゾーンを変更(Europe/Parisに変更する例)
[container]# curl -k -H "$AUTH" \
"https://host.containers.internal:58080/api/time/timezone" \
-X POST -d timezone=Europe/Paris


この段階ではArmadillo Base OSのタイムゾーンは変更されましたが、コンテナ内は変更されていません。
以下コマンドでコンテナを再起動します。

コンテナからコンテナを再起動
[container]# curl -k -H "$AUTH" -X POST \
https://host.containers.internal:58080/api/containers/[コンテナ名]/start

再起動したコンテナ内のタイムゾーンはArmadillo Base OSと同じタイムゾーンに変更されています。

《補足》
 今回 podman exec でコンテナ内に入った為、コンテナを終了する際に下記エラーメッセージが出ますが、
 アプリケーション側から実行する際には本エラーは出ませんので無視してください。
 エラーが出てもコンテナは再起動されています。
 <エラーメッセージ>
  Error: container has already been removed

再度コンテナに入るとタイムゾーンが変更されている事が確認できます。

再度コンテナに入る
[armadillo]# podman exec -it [コンテナ名] /bin/bash
 
時刻確認(CETに変更されている)
[container]# date
Wed Mar 27 06:17:19 CET 2024


以上で設定完了です。


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