Armadilloフォーラム

ABOS Web REST API でのNTP設定について

tmygt

2024年1月9日 21時48分

以前よりコンテナからABOSのネットワーク設定を行いたく、コンテナからSSH接続しての対応を考えておりました。

今回ABOS Web REST APIがリリースされたことで基本的なネットワーク設定がREST APIでできるようになったのですが、
私たちのアプリケーションではNTP設定も行います。

NTP設定をREST APIで実行できる機能の追加予定はないでしょうか?

コメント

at_dominique.m…

2024年1月11日 16時28分

tmygtさん

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

> 今回ABOS Web REST APIがリリースされたことで基本的なネットワーク設定がREST APIでできるようになったのですが、
> 私たちのアプリケーションではNTP設定も行います。

了解しました。
NetworkManager の接続が DHCP の場合に DHCP サーバーから NTP サーバー情報を取得できますが、手動設定としてはオプションを提供してないですので、今のところはおっしゃる通りに ABOS Web から設定できません。

> NTP設定をREST APIで実行できる機能の追加予定はないでしょうか?

そうですね、ちょうど数日前に似たような問い合わせをいただいたので、実装が必要になりそうだと考えています。

DNS サーバー等の設定とそんなに変わらないと思うので、ひとまず NetworkManager側に聞いてみました:
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/1…

向こうの返事次第に Network 設定経由でできるようになるか、他の設定方法がどうかを確認したいので、少しお待ちください。
(返事はいつも早いので数日で決まると思いますが、他の作業もありますので実装じたいは2月か3月になると思います)

それと同時に ABOS Web からカスタムなコマンドを実行できる対応も必要になりそうだと考え始めたので、それも考慮してみます。

進歩したらまた返事します。

よろしくお願いします。

マルティネさん

NTP設定の件ですが、その後動きがあれば教えていただけないでしょうか。
NetworkManagerのissueを見ると、NetworkManagerでの対応はやめたということはわかりました。

よろしくお願いいたします。

at_dominique.m…

2024年2月27日 9時40分

tmygtさん、

連絡を怠ってすみませんでした。

> NTP設定の件ですが、その後動きがあれば教えていただけないでしょうか。
> NetworkManagerのissueを見ると、NetworkManagerでの対応はやめたということはわかりました。

はい、1月時点では NetworkManager で対応しようと思ってましたが、タイムゾーンの変更など他の要望ができたのでまとめて ABOS Web 内で対応することになりました。

実装の作業を始めましたが今月のリリースに間に合わなくて、3月末のリリースで公開する予定です。
ABOS web の新しい時間設定のページと REST API の両方は入ります。

よろしくお願いします。

マルティネさん

回答ありがとうございます。
3月末のリリースでAPI経由でのNTP設定が入るとのことで、承知いたしました。
もし可能であれば、想定しているI/Fを先に教えていただけないでしょうか。

よろしくお願いいたします。

at_dominique.m…

2024年3月11日 17時35分

tmygtさん

大変お待たせしました、
マルティネです。

> もし可能であれば、想定しているI/Fを先に教えていただけないでしょうか。

以下の API を考えています:

* *時刻の状況確認*
`GET "/api/time/ntp_info"`
必要権限: TimeView
パラメータ: 無し
出力: `time_now`: epoch 形式の現在時刻、`ntp_server_ip`: 現在同期中のサーバーアドレス。同期されていない場合は「null」となります。
`ntp_server_offset`: 現在同期中のサーバーとの時刻の遅れ(マイナスの場合は Armadillo がサーバーより早いです)

[ATDE ~]$ curl_rest https://armadillo.local:58080/api/time/ntp_info
{"ntp_server_ip":"203.0.113.10","ntp_server_offset":"-0.000015824","time_now":1710139558}
http code: 200

* *NTP の設定確認*
`GET "/api/time/ntp_config"`
必要権限: TimeView
パラメータ: 無し
出力: `servers`: 同期する対象、`initstepslew`: Armadillo 起動時に同期するかどうかの設定

[ATDE ~]$ curl_rest https://armadillo.local:58080/api/time/ntp_config
{"servers":["pool pool.ntp.org iburst"],"initstepslew":"10 pool.ntp.org"}
http code: 200

* *NTP の設定*
`POST "/api/time/ntp_config"`
必要権限: TimeAdmin
パラメータ: `servers`: 同期する対象、`initstepslew`: Armadillo 起動時に同期するかどうかの設定。パラメータを送信しない場合は設定されません。
値が空の場合は設定が削除されて、「 `default` 」の場合は Armadillo Base OS のデフォルトに戻ります。
出力: 取得時と同じ

[ATDE ~]$ curl_rest https://armadillo.local:58080/api/time/ntp_config -X POST -d "servers=server 203.0.113.10 iburst" -d "servers=server 203.0.113.11 iburst" -d "initstepslew="
{"servers":["server 203.0.113.10 iburst","server 203.0.113.11 iburst"],"initstepslew":null}
http code: 200
[ATDE ~]$ curl_rest https://armadillo.local:58080/api/time/ntp_config -X POST -d "servers=default&initstepslew=default"
{"servers":["pool pool.ntp.org iburst"],"initstepslew":"10 pool.ntp.org"}
http code: 200

* *タイムゾーンの確認*
`GET "/api/time/timezone"`
必要権限: TimeView
パラメータ: 無し
出力: `timezone`: 使用されているタイムゾーン

[ATDE ~]$ curl_rest https://armadillo.local:58080/api/time/timezone
{"timezone":"Asia/Tokyo"}
http code: 200

* *タイムゾーンの設定*
`POST "/api/time/timezone"`
必要権限: TimeAdmin
パラメータ: `timezone`: 設定するタイムゾーン
出力: 無し

[ATDE ~]$ curl_rest https://armadillo.local:58080/api/time/timezone -X POST -d "timezone=Asia/Tokyo"
http code: 200

* *時刻を強制的に設定する*
`POST "/api/time/set"`
必要権限: TimeAdmin
パラメータ: `timestamp`: epoch 形式の時刻
出力: 無し

[ATDE ~]$ curl_rest https://armadillo.local:58080/api/time/set -X POST -d "timestamp=$(date +%s)"
http code: 200

細かい変更はまだあるかもしれませんが、その場合にまた連絡します。
(逆に、これで何か違和感などあればリリース前はまだ修正しやすいので、遠慮なく言ってください)

よろしくお願いします。

マルティネさん

API案ありがとうございます。弊社が必要としている機能は満たしていそうです。
ntp_configについて1点質問なのですが、NTPサーバ以外のchrony設定を事前にABOSで設定していたとして、それらはAPI呼び出しを行っても削除されないでしょうか?

佐藤です。

> ntp_configについて1点質問なのですが、NTPサーバ以外のchrony設定を事前にABOSで設定していたとして、それらはAPI呼び出しを行っても削除されないでしょうか?
ABOS web と REST API から NTP の設定を行った場合、設定値は以下のディレクトリのいずれかの、 "initstepslew.conf"、"servers.conf" ファイルに保存される予定です。
"/etc/atmark/chrony.conf.d/"
"/etc/chrony/conf.d/"
"/lib/chrony.conf.d/"
これらのファイルと同名のファイルに設定していないのであれば削除されることはありません。

佐藤さん

回答ありがとうございます。
NTPサーバ以外の設定については、上記のファイル名を使わないようにします。