0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Ansible】日付の取得方法

0
Last updated at Posted at 2026-06-06

はじめに

AnsibleのPlaybookを作成する際にファイルのバックアップなどで、現在の日時が必要となることがあるかと思います。
この記事では、Ansibleで現在日時を取得する方法を紹介します。

strftimeフィルターで取得

strftimeフィルターを引数なしで利用することで現在日時を取得できます。

- name: 日時の取得
  ansible.builtin.set_fact:
    date_time_now: "{{ '%Y%m%d%H%M' | strftime }}"
    # 202606061401

lookupプライグインで取得

lookupプラグインのpipeを利用して日時情報を取得できます。
pipeでは任意のコマンドを実行できるため、dateコマンドを実行することで現在日時を取得します。

- name: 日時の取得
  ansible.builtin.set_fact:
    date_time_now: "{{ lookup('pipe', 'date +%Y%m%d%H%M') }}"
    # 202606061401

上記2つの方法はコントロールノードで実行されるため、タイムゾーンもコントロールノードの設定に依存します。
ターゲットノードの設定に合わせた日時が必要な場合は後述の方法で取得しましょう。

setupモジュールで取得

setupモジュールでシステム情報を取得することができますが、こちらには日付の情報も含まれています。
この方法ではタイムゾーンもターゲットノードの値が取得できます。
以下のようなタスクで現在の日時を変数に格納できます。

- name: 時刻取得
  ansible.builtin.setup:
    gather_subset:
      - "!all"
      - "!min"
      - "date_time"

- name: 変数格納
  ansible.builtin.set_fact:
    date_time_now: "{{ ansible_facts['date_time']['year'] }}{{ ansible_facts['date_time']['month'] }}{{ ansible_facts['date_time']['day'] }}{{ ansible_facts['date_time']['hour'] }}{{ ansible_facts['date_time']['minute'] }}" # noqa yaml[line-length]
    # 202606062301

見てわかる通り、1行が長くなってしまうので、視認性は低下します。
また、ansible_factsに含まれる値を組み合わせる形になるため、フォーマットのカスタマイズをしにくいのがデメリットかなと思います。

さいごに

今回はAnsibleで現在日時を取得する方法を紹介しました。
それぞれの要件にあった方法で実装いただければと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?