본문 바로가기

리눅스

Ansible playbook에서 현재 날짜 및 시간을 얻는 방법(ansible-playbook)

728x90

Ansible playbook에서 현재 날짜 및 시간을 얻는 방법(ansible-playbook)

  • ansible_date_time fact
vim current_date_time1.yml
---
- name: 사용자 정의 변수에 현재 날짜 및 시간 저장
  hosts: all
  gather_facts: true

  tasks:
    # ansible_date_time 표시
    - name: Debug ansible_date_time
      debug:
        var: ansible_date_time

    # 변수에 ansible_date_time 사용
    - name: 사용자 정의 변수에 현재 날짜 및 시간 저장
      set_fact:
        current_date_time: "{{ ansible_date_time.date }}_{{ ansible_date_time.hour }}{{ ansible_date_time.minute }}{{ ansible_date_time.second }}"

    # 현재 날짜 및 시간으로 변수 표시
    - name: Debug 현재 날짜 및 시간
      debug:
        var: current_date_time


###
# ansible-playbook -i ./inventory tmp/current_date_time1.yml --limit localhost

이 코드는 ansible_date_time 팩트를 사용하여 현재 날짜 및 시간을 표시하고 해당 정보를 사용자 정의 변수 current_date_time에 저장하여 출력하는 Ansible playbook입니다.

ansible-playbook -i ./inventory tmp/current_date_time1.yml --limit localhost
$ ansible-playbook -i ./inventory tmp/current_date_time1.yml --limit localhost
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details

PLAY [사용자 정의 변수에 현재 날짜 및 시간 저장] ***************************************************

TASK [Gathering Facts] *****************************************************************************
ok: [localhost]

TASK [Debug ansible_date_time] *********************************************************************
ok: [localhost] => {
    "ansible_date_time": {
        "date": "2024-01-03",
        "day": "03",
        "epoch": "1704266954",
        "epoch_int": "1704266954",
        "hour": "16",
        "iso8601": "2024-01-03T07:29:14Z",
        "iso8601_basic": "20240103T162914413085",
        "iso8601_basic_short": "20240103T162914",
        "iso8601_micro": "2024-01-03T07:29:14.413085Z",
        "minute": "29",
        "month": "01",
        "second": "14",
        "time": "16:29:14",
        "tz": "KST",
        "tz_dst": "KST",
        "tz_offset": "+0900",
        "weekday": "수요일",
        "weekday_number": "3",
        "weeknumber": "01",
        "year": "2024"
    }
}

TASK [사용자 정의 변수에 현재 날짜 및 시간 저장] ***************************************************
ok: [localhost]

TASK [Debug 현재 날짜 및 시간] *********************************************************************
ok: [localhost] => {
    "current_date_time": "2024-01-03_162914"
}

PLAY RECAP *****************************************************************************************
localhost                  : ok=4    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
728x90
  • ansible.builtin.pipe date
vim current_date_time2.yml
---
- name: 사용자 정의 변수에 현재 날짜 및 시간 저장
  hosts: all
  gather_facts: false

  tasks:
    # lookup을 사용하여 현재 날짜 및 시간 가져오기
    - name: 현재 날짜 및 시간 조회
      set_fact:
        current_date_time: "{{ lookup('pipe', 'date +%Y%m%d_%H%M%S') }}"

    # 현재 날짜 및 시간으로 변수 표시
    - name: Debug 현재 날짜 및 시간
      debug:
        var: current_date_time


###
# ansible-playbook -i ./inventory tmp/current_date_time2.yml --limit localhost

이 코드는 lookup 함수를 사용하여 현재 날짜 및 시간을 조회하고 해당 정보를 사용자 정의 변수 current_date_time에 저장하여 출력하는 Ansible playbook입니다.

ansible-playbook -i ./inventory tmp/current_date_time2.yml --limit localhost
$ ansible-playbook -i ./inventory tmp/current_date_time2.yml --limit localhost
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details

PLAY [사용자 정의 변수에 현재 날짜 및 시간 저장] ***************************************************

TASK [현재 날짜 및 시간 조회] **********************************************************************
ok: [localhost]

TASK [Debug 현재 날짜 및 시간] *********************************************************************
ok: [localhost] => {
    "current_date_time": "20240103_163008"
}

PLAY RECAP *****************************************************************************************
localhost                  : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
  • ansible.builtin.shell module
vim current_date_time3.yml
---
- name: Shell을 사용하여 현재 날짜 및 시간 가져오기
  hosts: all
  gather_facts: true

  tasks:
    # Shell을 사용하여 현재 날짜 가져오기
    - name: 현재 날짜 가져오기
      shell: date +%Y-%m-%dT%H:%M:%SZ
      register: current_date_time

    # 현재 날짜 및 시간으로 변수 표시
    - name: Debug 현재 날짜 및 시간
      debug:
        var: current_date_time


###
# ansible-playbook -i ./inventory tmp/current_date_time3.yml --limit localhost

이 코드는 shell 모듈을 사용하여 현재 날짜와 시간을 가져오고 이 정보를 current_date_time 변수에 등록하여 출력하는 Ansible playbook입니다.

ansible-playbook -i ./inventory tmp/current_date_time3.yml --limit localhost
$ ansible-playbook -i ./inventory tmp/current_date_time3.yml --limit localhost
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details

PLAY [Shell을 사용하여 현재 날짜 및 시간 가져오기] *************************************************

TASK [Gathering Facts] *****************************************************************************
ok: [localhost]

TASK [현재 날짜 가져오기] **************************************************************************
changed: [localhost]

TASK [Debug 현재 날짜 및 시간] *********************************************************************
ok: [localhost] => {
    "current_date_time": {
        "changed": true,
        "cmd": "date +%Y-%m-%dT%H:%M:%SZ",
        "delta": "0:00:00.043700",
        "end": "2024-01-03 16:30:39.739427",
        "failed": false,
        "msg": "",
        "rc": 0,
        "start": "2024-01-03 16:30:39.695727",
        "stderr": "",
        "stderr_lines": [],
        "stdout": "2024-01-03T16:30:39Z",
        "stdout_lines": [
            "2024-01-03T16:30:39Z"
        ]
    }
}

PLAY RECAP *****************************************************************************************
localhost                  : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

 

참고URL

- Ansible Documentation : ansible_date_time facts

- Ansible Documentation : lookup commands

- Ansible Documentation : shell commands

 

728x90