Spec-Zone.ru › Ansible 2.9

Ansible Сеть FAQ

  • Как улучшить производительность сценариев задач для сети?
    • Учитывайте strategy: free если выполняете на нескольких хостах
    • Выполняйте show running только в крайнем случае
    • Используйте ProxyCommand только в крайнем случае
    • Установите --forks в соответствии с вашими потребностями
  • Почему вывод иногда заменяется на ********?
  • Почему модули конфигурации всегда возвращают changed=true при использовании сокращенных команд?

Как улучшить производительность сценариев задач для сети?

Учитывайте strategy: free если выполняете на нескольких хостах

Плагин strategy указывает Ansible, как упорядочить несколько задач на нескольких хостах. Стратегия устанавливается на уровне сценария задач.

По умолчанию используется стратегия linear. При установке стратегии linear, Ansible ждет, пока текущая задача выполнится на всех хостах, прежде чем начать следующую задачу на любом хосте. Ansible может иметь свободные потоки, но не будет их использовать, пока все хосты не завершат текущую задачу. Если каждая задача в сценарии задач должна быть выполнена на всех хостах перед запуском следующей задачи, используйте стратегию linear.

Используя стратегию free, Ansible использует доступные потоки для выполнения задач на каждом хосте как можно быстрее. Даже если предыдущая задача все еще выполняется на одном хосте, Ansible выполняет последующие задачи на других хостах. Стратегия free более эффективно использует доступные потоки. Если ваш сценарий задач задерживается на каждой задаче, ожидая одного медленного хоста, рассмотрите использование strategy: free, чтобы повысить общую производительность.

Выполняйте show running только в крайнем случае

Команда show running является наиболее ресурсоемкой командой для выполнения на сетевом устройстве из-за способа обработки запросов операционной системой сети. Использование команды в сценарии задач Ansible значительно замедлит производительность, особенно на больших устройствах; её повторное использование увеличит эту проблему. Если у вас есть сценарий задач, который проверяет текущую конфигурацию, затем выполняет изменения, а затем снова проверяет текущую конфигурацию, следует ожидать, что этот сценарий задач будет очень медленным.

Используйте ProxyCommand только в крайнем случае

Модули сети поддерживают использование прокси или промежуточного хоста с параметром ProxyCommand. Однако, когда вы используете промежуточный хост, Ansible должен открывать новое SSH-соединение для каждой задачи, даже если вы используете тип постоянного соединения (network_cli или netconf). Чтобы максимально использовать преимущества типов постоянных соединений, представленных в версии 2.5, старайтесь избегать использования промежуточных хостов, когда это возможно.

Установите --forks в соответствии с вашими потребностями

При каждом выполнении задачи Ansible запускает свой собственный процесс. Параметр --forks определяет количество одновременных задач — если вы сохраните значение по умолчанию, которое составляет --forks=5, и выполните сценарий задач на 10 хостах, пять из этих хостов должны будут ждать, пока освободится поток. Конечно, чем больше потоков вы разрешите, тем больше памяти и процессорной мощности Ansible будет использовать. Поскольку большинство сетевых задач выполняются на хосте управления, это означает, что ваш ноутбук может быстро стать ограниченным по процессору или памяти.

Почему вывод иногда заменяется на ********?

Ansible заменяет любой строку, помеченную no_log, включая пароли, на ******** в выводе Ansible. Это сделано по умолчанию, чтобы защитить ваши конфиденциальные данные. Большинство пользователей рады, что их пароли замаскированы. Однако Ansible заменяет каждую строку, которая соответствует вашему паролю, на ********. Если вы используете общее слово для пароля, это может стать проблемой. Например, если вы выберете Admin в качестве пароля, Ansible заменит каждое вхождение слова Admin на ******** в вашем выводе. Это может затруднить чтение вашего вывода. Чтобы избежать этой проблемы, выберите безопасный пароль, который не будет встречаться в другом месте в вашем выводе Ansible.

Почему модули конфигурации всегда возвращают changed=true при использовании сокращенных команд?

При выполнении команд напрямую на сетевом устройстве можно использовать сокращенные команды. Например, int g1/0/11 и interface GigabitEthernet1/0/11 делают одно и то же; shut и shutdown делают одно и то же. Модули Ansible Сеть *_command работают со сокращениями, потому что они выполняют команды через операционную систему сети.

Однако при внесении изменений в конфигурацию операционная система сети преобразует сокращения в команды полной длины. Независимо от того, используете ли вы shut или shutdown на GigabitEthernet1/0/11, результат в конфигурации будет одинаковым: shutdown.

Модули Ansible Сеть *_config сравнивают текст команд, указанных вами в lines, с текстом в конфигурации. Если вы используете shut в разделе lines вашей задачи, а конфигурация содержит shutdown, модуль вернёт changed=true, даже если конфигурация уже правильная. Ваша задача будет обновлять конфигурацию каждый раз при её запуске.

Чтобы избежать этой проблемы, используйте команды полной длины с модулями *_config:

---
- hosts: all
  gather_facts: no
  tasks:
    - ios_config:
        lines:
          - shutdown
        parents: interface GigabitEthernet1/0/11

© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.8/network/user_guide/faq.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API