Я использую ansible для развертывания на сервере.
Этап apt (это Ubuntu) занимает много времени, даже если правильная версия уже установлена (я предполагаю, что он просто запускается и видит, что ничего не нужно устанавливать)
Пример команды:
- name: set up apt packages
action: apt pkg=nginx=1.4.6-1ubuntu3.3 state=present update_cache=yes
(У меня их довольно много, так что это займет некоторое время)
Есть ли способ, которым ansible может «выяснить», что pkg уже установлен, и быстрее запустить / пропустить эту команду?
Если вы установите update_cache=yes
Ansible запустится apt-get update
при каждом запуске спектакля.
Перед операцией запустите аналог apt-get update. Может запускаться как часть установки пакета или как отдельный шаг.
Удалив update_cache=yes
задача должна выполняться намного быстрее, потому что Ansible не нужно ждать apt
для обновления своих репозиториев.
Другой вариант - зарегистрировать какой-либо файл или путь, созданный пакетом, используя stat
модуль. Что-то вроде этого:
- stat: path=/etc/nginx/nginx.conf
register: st
- name: set up apt packages
action: apt pkg=nginx=1.4.6-1ubuntu3.3 state=present update_cache=yes
when: not st.stat.exists
Видеть Документация Ansible с дополнительными примерами. Но я бы рекомендовал просто удалить update_cache=yes
параметр.