2017-02-03 4 views
0

私は新しくAnsibleです。 私は、EC2の事実を使って起動時間を取得するために、できるだけ早く使用できるEC2インスタンスを作成しました。日付の可能な値の比較EC2

ただし、起動時を日付形式で保存できません。

私の目標もそれを見つけて、いくつかの操作を実行でき、システムの日付と打ち上げ時間日付の違いを(得ることです。

どれガイダンスが高く評価されています。

よろしく、 ネアシュシャルマ

答えて

3
利用できる便利な to_datetime(format)フィルタがあるAnsible 2.2ので

ここ

があなたの仕事のための例です。

--- 
- hosts: localhost 
    gather_facts: yes 
    tasks: 
    - name: local date 
     debug: 
     msg: "{{ ansible_date_time.iso8601 }}" 
    - ec2_remote_facts: 
     region: eu-west-1 
     register: ec2 
    - name: instance date 
     debug: 
     msg: "{{ ec2.instances[0].launch_time }}" 
    - name: date difference in days 
     debug: 
     msg: "{{ (ansible_date_time.iso8601[:19] | to_datetime(fmt) - ec2.instances[0].launch_time[:19] | to_datetime(fmt)).days }}" 
     vars: 
     fmt: "%Y-%m-%dT%H:%M:%S" 

[:19]ミリ秒とタイムゾーン文字の処理を避けるため、最初の19文字を取得するには、

結果:

PLAY [localhost] *************************************************************** 

TASK [setup] ******************************************************************* 
ok: [localhost] 

TASK [local date] ************************************************************** 
ok: [localhost] => { 
    "msg": "2017-02-03T18:39:12Z" 
} 

TASK [ec2_remote_facts] ******************************************************** 
ok: [localhost] 

TASK [instance date] *********************************************************** 
ok: [localhost] => { 
    "msg": "2016-09-21T15:43:40.000Z" 
} 

TASK [date difference in days] ************************************************* 
ok: [localhost] => { 
    "msg": "135" 
} 

PLAY RECAP ********************************************************************* 
localhost     : ok=5 changed=0 unreachable=0 failed=0 
+0

が – Naresh

+0

'ansible_date_time.iso8601あなたに非常に多くの..Konstantinスヴォーロフをありがとう| to_datetime( '%Y-%m-%dT%H:%M:%SZ')も動作します。 –