ansible игнорировать конфигурацию run_once для задачи

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

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

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


person Robert    schedule 16.10.2014    source источник


Ответы (1)


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

- 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

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

person Charlie O.    schedule 16.10.2014
comment
да, если это для apt, используйте модуль apt. shell и command хороши, но их использование должно быть гораздо более ограниченным. - person tedder42; 17.10.2014