ansible игнорирует конфигурацию запуска один раз в задаче

Я использую Ansible, и я хочу запустить задачу только один раз. Я следую документации о том, как настроить и выполнить задачу только один раз

- name: apt update
  shell: apt-get update
  run_once: true

но когда я запускаю Ansible, он всегда запускает эту задачу. Как я могу выполнить свою задачу только один раз.

1 ответов


опция run_once будет запускаться каждый раз при запуске Playbook/tasks, но будет запускаться только один раз во время конкретного запуска. Поэтому каждый раз, когда вы запускаете игру, она будет работать, но только на первый узел в списке. Если вы ищете способ выполнить эту команду только один раз, точка, вам нужно будет использовать аргумент creates. Используя Ваш пример, это может быть достигнуто с помощью следующих -

- name: apt update
  shell: apt-get update && touch /root/.aptupdated
  args:
    creates: /root/.aptupdated

в этом случае файл /root/.создан aptupdated это. Задача будет теперь проверьте, существует ли это, и если это так, он не будет работать.

в соответствующем примечании если задача, которую вы пытаетесь запустить, является обновлением apt-get, вы можете использовать собственный модуль apt. Затем вы можете сделать что-то вроде этого -

- name: apt update
  apt: update_cache=yes cache_valid_time=86400

теперь это будет работать только если кэш старше одного дня.