Ансибл долго ставит пакет, как отследить причину?
GNU/Linux, UNIX, Open Source → Программное обеспечение
Миша
написал 28 мая 2020 года в 20:40 (1732 просмотра)
Ведет себя
неопределенно; открыл 8 тем в форуме, оставил 7 комментариев на сайте.
Ставлю некий пакет на операционки CentOS6, CentOS7.
На семерку пакет устанавливается примерно за минуту. На 6ку от 8 до 13 минут. Похоже ансибловская роль попросту не выполняется, возможно что-то мешает ей.
Если ставить непосредственно на машине — всё быстро что на 6ке что на 7ке. Обращаться к удаленным хостам тупо по ssh — наверное не вариант, т.к. машин много, вроде ансиблом удобнее всего. Подскажите, где лучше посмотреть причину что мешает отработать ролям, по логу что-то не ясно, тупо висит 10 минут, а потом выдает результат.
Роль выглядит так:
---
- name: Installation of packages package: name: "{{ packages_for_testing.split(' ') }}" state: latest register: result until: result.rc == 0 retries: 3 delay: 100 when: packages_for_testing is defined
ансибл:
ansible --version ansible 2.9.7 config file = /etc/ansible/ansible.cfg configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python3.6/site-packages/ansible executable location = /usr/bin/ansible python version = 3.6.8 (default, Nov 13 2019, 08:27:45) [GCC 8.3.1 20190507 (Red Hat 8.3.1-4)]
Последние комментарии
- OlegL, 17 декабря 2023 года в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
ecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.
Если машин много, ansible может ограничивать количество соединенией. И пока шаг не закончится на всех указанных в списке (соответственно запуская по очереди группами) — не продолжит дальше.
Попробуйте запускать с ключем «-c количество_соединений» (равное количеству машин, если их не слишком много)
А зачем сделано повторение роли? Кроме того — если список пакетов неизменен — возможно стоит отключить обновление списка пакетов:
(правда не знаю как сделать это с package, но с dnf — нужно передать: update_cache: no )
https://docs.ansible.com/ansible/latest/modules/dnf_module.html#dnf-module
Хм, на счет «-c» это вроде немного про другое, если я не путаю.
т.е. тип соединения, ssh или paramiko_ssh итд…
https://docs.ansible.com/ansible/latest/plugins/connection.html
правда я менял значение FORKS — т.к. реально наблюдалась проблема, что не все машины одновременно работают с ролями, а группами, изменение FORKS помогло. В принципе по идее проблема с соединением влияла бы и на CentOS7 я так думаю, а тут получается только CentOS6 страдает. На счет повторения роли — это на случай если будет проблема в сети, чтобы можно было попробовать снова установить пакет, возможно задержку стоит конечно уменьшить секунд до 30, но в нашем случае наверное удобнее подождать 1.5 минуты, чем запускать снова 80 машин, что само по себе занимает не меньше 4 минут. update_cache я там смотрю по доку по-умолчанию «no» вроде…
Упс, извините, протупил, действительно я писал про forks, поздно уже было.
А на ansible-pull в качестве варианта посмотреть не хотите?
Ещё мы пользовались вот этим плагином: https://github.com/jlafon/ansible-profile когда профилировали — что же в ansible занимает много времени, но не уверен что он вам сильно поможет, если страдает конкретная роль.
А локально на машине ansible тоже долго работает?
Про повторение — бесполезно же получается. Отвалилось — перезапусти скрипт. Правильно написанные правила для ansible переносят повторный запуск без проблем.
PS. В официальной документации есть ещё pipelining, но я им ни разу не пользовался: https://docs.ansible.com/ansible/2.4/intro_configuration.html#pipelining
PPS. А на CentoOS6 поддерживается ControlPersist? А то после вот этого куска документации: https://docs.ansible.com/ansible/2.4/playbooks_acceleration.html#accelerated-mode-details у меня есть вопросы
Перепробовал разные варианты… Для 6ки есть проблема, для 7ки нет. Я тупо начал делать так:
тупо, но работает быстро. Не больше 3х минут. Походу бага какая-то ансибла…
Люди смотрю тоже ругаются на такую ситуацию, правда тут на 7ке… А у меня на 6ке…
https://github.com/ansible/ansible-modules-extras/issues/2615
В общем спасибо за участие. Буду юзать такой «тупой» вариант наверное для своей ситуации, т.к. время для меня оч. критично.