使时间戳变量在ansible中持久

时间:2019-03-06 15:54:53

标签: ansible

我使用Ansible创建和删除AWS启动配置。我在名称中添加了时间戳。 我的问题是,我可以创建LC,但是当涉及删除时,时间戳会更改,然后删除的剧本找不到要删除的LC。 这就是我使用timestamp变量的方式: 我将其放在名为timestamp_lc.yml的文件中:

ArrayList<ArrayList<Integer>>

在剧本中我称之为:

- set_fact: now="{{ lookup('pipe', 'date +%Y%m%d%H%M%S') }}"

如何使变量- include: timestamp_lc.yml 持久化,以便在我每次调用变量now时ansible都不会执行date命令?

这是创建任务:

now

删除任务:

- name: Create launch configuration
  sudo: yes
  command: >
    aws autoscaling create-launch-configuration
    --region {{ asg.region }}
    --launch-configuration-name "{{ asg.launch_configuration.name }}_{{ now }}"

1 个答案:

答案 0 :(得分:0)

当您从date命令获取值并设置事实时,ansible的每次执行都会发生这种情况,并且每次迭代都会不断更新。

我可以想到的一种方法是将值保存在目标服务器或本地服务器上的扩展名中的文件中-我认为这样做会更可靠

---
- name: test play
  hosts: localhost
  tasks:
    - name: checking the file stats
      stat:
        path: stack_delete_info
      register: delete_file_stat

    - name: tt
      debug:
        var: delete_file_stat

    - name: test
      shell: echo "{{ lookup('pipe', 'date +%Y%m%d%H%M%S') }}" > stack_delete_info
      when: delete_file_stat.stat.exists == false