nixp.ru v3.0

14 ноября 2024,
четверг,
03:00:01 MSK

Миша написал 28 мая 2020 года в 20:40 (1706 просмотров) Ведет себя неопределенно; открыл 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)]
fhunter

Если машин много, ansible может ограничивать количество соединенией. И пока шаг не закончится на всех указанных в списке (соответственно запуская по очереди группами) — не продолжит дальше.
Попробуйте запускать с ключем «-c количество_соединений» (равное количеству машин, если их не слишком много)

А зачем сделано повторение роли? Кроме того — если список пакетов неизменен — возможно стоит отключить обновление списка пакетов:
(правда не знаю как сделать это с package, но с dnf — нужно передать: update_cache: no )
https://docs.ansible.com/ansible/latest/modules/dnf_module.html#dnf-module

Миша

Хм, на счет «-c» это вроде немного про другое, если я не путаю.

-c 'CONNECTION', --connection 'CONNECTION'
connection type to use (default=smart),


т.е. тип соединения, ssh или paramiko_ssh итд…
https://docs.ansible.com/ansible/latest/plugins/connection.html

правда я менял значение FORKS — т.к. реально наблюдалась проблема, что не все машины одновременно работают с ролями, а группами, изменение FORKS помогло. В принципе по идее проблема с соединением влияла бы и на CentOS7 я так думаю, а тут получается только CentOS6 страдает. На счет повторения роли — это на случай если будет проблема в сети, чтобы можно было попробовать снова установить пакет, возможно задержку стоит конечно уменьшить секунд до 30, но в нашем случае наверное удобнее подождать 1.5 минуты, чем запускать снова 80 машин, что само по себе занимает не меньше 4 минут. update_cache я там смотрю по доку по-умолчанию «no» вроде…

fhunter

Упс, извините, протупил, действительно я писал про 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ки нет. Я тупо начал делать так:

- name: Installation of packages for testing
  shell: "yum install --disableplugin=fastestmirror -y {{ packages_for_testing }}"


тупо, но работает быстро. Не больше 3х минут. Походу бага какая-то ансибла…
Люди смотрю тоже ругаются на такую ситуацию, правда тут на 7ке… А у меня на 6ке…
https://github.com/ansible/ansible-modules-extras/issues/2615
В общем спасибо за участие. Буду юзать такой «тупой» вариант наверное для своей ситуации, т.к. время для меня оч. критично.

Последние комментарии

ecobeingecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.