【Ansible Tower/AWX】タイムゾーンをUTC(協定世界時)からJST(日本標準時)に変更する


この記事はプロモーションを含みます。

今回は、AnsibleTower/AWXのタイムゾーンをUTCからJSTに変更する方法をご紹介したいと思います。

はじめに

AnsibleTowerやAWXはUTCで動作しています。
Web画面上は自動でJSTに変更して表示されますが、ローカルのシステム日時はUTCのままなので、ローカルにdateコマンドを実行した場合は、時間が9時間ズレてしまいますので、これを回避する方法をご紹介したいと思います。

AnsibleTower/AWXのシステムのタイムゾーンを直接変更することは推奨されていないため、今回はタスク単位でタイムゾーンを変更する方法になります。

【問題】Web画面とdateコマンドでの時間のズレについて

ここでは、簡単なプレイブックを作成して、Web画面(AWXの画面になります)とdateコマンド実行時の時間のズレを確認してみます。

以下は確認用のプレイブックになります。

---
- hosts: all
  gather_facts: false
  tasks:
  - name: "ローカルに対してdateコマンドの実行"
    local_action: shell "date"

以下はWeb画面での実行結果になります。
赤枠がAWXのタスク実行時間、青枠がdateコマンドの実行結果となります。
普通に実行した場合は以下のように時間がズレてしまいます。

【対策】タイムゾーンをタスク実行時に変更する

こちらは日時が正しく表示されるように修正したプレイブックになります。
7,8行にタスク実行時の環境変数として、タイムゾーンに「Asia/Tokyo」を設定するのみです。

---
- hosts: all
  gather_facts: false
  tasks:
  - name: "ローカルに対してdateコマンドの実行"
    local_action: shell "date"
    environment:
      TZ: Asia/Tokyo

以下はWeb画面での実行結果になります。
赤枠がAWXのタスク実行時間、青枠がdateコマンドの実行結果となります。
環境変数を変更することで時間が合うようになりましたね。

タイムゾーン変更後も数秒ズレていますが、こちらの原因としては、赤枠のAWXのタスク実行開始時間が取得された後に、モジュールのコンパイルなどが走り、その後でdateコマンドが実行されるためズレが生じているようです。
実行環境などによりズレの大小も変わるようで、別端末のAnsibleTowerで確認するとズレは1秒でした。

おわりに

記事は以上になります。知ってれば簡単なのですが、知らないと意外に嵌るんですよね。
Web画面でログの時間は確認出来るため、dateコマンドを使用する場面は少ないと思いますが、ジョブ実行時間として、処理の最初に変数に格納しておき、後続処理でディレクトリ名やファイル名の一部として使うなどがあるかもしれません。
そのような場合に時間がズレてると困ると思いますので、是非こちらの記事を参考にしていただければと思います。

コメント

タイトルとURLをコピーしました