Сделайте временную метку постоянной в ansible

#ansible

#ansible

Вопрос:

Я использую Ansible для создания и удаления конфигураций запуска AWS. Я добавляю временную метку в имя. Моя проблема в том, что я могу создать LC, но когда дело доходит до удаления, временная метка изменяется, и затем программа удаления не может найти LC для ее удаления. вот как я использую переменную timestamp: я помещаю ее в файл с именем timestamp_lc.yml:

 - 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 }}"
  

Задача удаления:

 - name: Delete launch configuration
  sudo: yes
  command: >
    aws autoscaling delete-launch-configuration
    --region {{ asg.region }}
    --launch-configuration-name {{ asg.launch_configuration.name }}_{{ now }}
  

Комментарии:

1. Что именно вы хотите, чтобы делало удаление? Удалить LC с самой высокой временной меткой? Удалить LC, который был создан последним? Удалить LC, который был создан последним с этого компьютера? Удалить LC, который был создан последним, из этой копии репозитория Ansible playbook?

2. удалите LC с указанным именем, в котором есть временная метка

3. Но какая временная метка?

4. та же временная метка, которая использовалась при создании LC. если я создам LC_201903132322, я хочу удалить LC_201903132322 (с той же временной меткой)

Ответ №1:

Это будет происходить при каждом выполнении ansible, поскольку вы получаете значение из команды date и устанавливаете факт этого, и это продолжает обновляться с каждой итерацией.

Один из способов, который я могу придумать, — сохранить значение в файле с расширением на целевом сервере или локальном сервере — я чувствую, что это было бы более надежно

 ---
- 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