Установка Ansible
На этой странице описано, как установить Ansible на различных платформах. Ansible — это инструмент без агентов для автоматизации, который по умолчанию управляет машинами через протокол SSH. После установки Ansible не добавляет базу данных и не будет демонов, которые нужно запускать или поддерживать в работе. Вам нужно установить его только на одной машине (например, на ноутбуке), и он сможет управлять целым флотом удаленных машин из этой центральной точки. Когда Ansible управляет удаленными машинами, он не оставляет установленного или работающего программного обеспечения на них, поэтому нет реального вопроса о том, как обновить Ansible при переходе на новую версию.
- Выбор версии Ansible для установки
- Установка Ansible на RHEL, CentOS или Fedora
- Установка Ansible на Ubuntu
- Установка Ansible на Debian
- Установка Ansible на Gentoo с помощью portage
- Установка Ansible на FreeBSD
- Установка Ansible на macOS
- Установка Ansible на Solaris
- Установка Ansible на Arch Linux
- Установка Ansible на Slackware Linux
- Установка Ansible на Clear Linux
- Запуск
ansible-baseиз исходного кода (devel) - Поиск tar-архивов помеченных релизов
ansible-baseв GitHub
Предварительные требования
Вы устанавливаете Ansible на контрольном узле, который затем использует SSH (по умолчанию) для связи с управляемыми узлами (этими конечными устройствами, которые вы хотите автоматизировать).
Требования к контрольному узлу
В настоящее время Ansible можно запускать с любой машины с установленным Python 2 (версия 2.7) или Python 3 (версии 3.5 и выше). Ansible 2.11 сделает Python 3.8 мягкой зависимостью для контрольного узла, но будет работать с вышеуказанными требованиями. Ansible 2.12 потребует Python 3.8 или новее для работы на контрольном узле. Начиная с Ansible 2.11, проект будет упаковываться только для Python 3.8 и новее. Это включает Red Hat, Debian, CentOS, macOS, любые из BSD и т.д. Windows не поддерживается для контрольного узла, ознакомьтесь с этим подробнее в посте в блоге Мэтта Дэвиса.
При выборе контрольного узла помните, что любая система управления выигрывает от запуска рядом с управляемыми машинами. Если вы используете Ansible в облаке, рассмотрите возможность запуска с машины внутри этого облака. В большинстве случаев это будет работать лучше, чем в открытом интернете.
Примечание
macOS по умолчанию настроен на небольшое количество файловых дескрипторов, поэтому если вы хотите использовать 15 или более вилок, вам нужно увеличить ulimit с помощью sudo launchctl limit maxfiles unlimited. Эта команда также может исправить любую ошибку «Слишком много открытых файлов».
Предупреждение
Ansible 2.11 сделает Python 3.8 мягкой зависимостью для контрольного узла, но будет работать с вышеуказанными требованиями. Ansible 2.12 потребует Python 3.8 или новее для работы на контрольном узле. Начиная с Ansible 2.11, проект будет упаковываться только для Python 3.8 и новее.
Предупреждение
Обратите внимание, что некоторые модули и плагины имеют дополнительные требования. Для модулей эти требования должны быть удовлетворены на целевой машине (управляемом узле) и должны быть перечислены в документации конкретного модуля.
Требования к управляемому узлу
На управляемых узлах вам нужен способ связи, который обычно является SSH. По умолчанию используется SFTP. Если это недоступно, вы можете переключиться на SCP в ansible.cfg. Вам также нужен Python 2 (версия 2.6 или более поздняя) или Python 3 (версия 3.5 или более поздняя).
Примечание
- Если на удаленных узлах включен SELinux, вам также необходимо установить libselinux-python на них перед использованием каких-либо функций, связанных с копированием, файлами или шаблонами в Ansible. Вы можете использовать модуль yum или dnf в Ansible для установки этого пакета на удаленные системы, на которых его нет.
- По умолчанию, перед запуском первого Python-модуля в playbook на хосте, Ansible пытается обнаружить подходящий интерпретатор Python на этом хосте. Вы можете переопределить поведение обнаружения, установив переменную инвентаризации ansible_python_interpreter на конкретный интерпретатор, и другими способами. Подробности см. в разделе Обнаружение интерпретатора.
-
Модуль Ansible raw, и модуль script, не зависят от установки клиента Python для запуска. Технически вы можете использовать Ansible для установки совместимой версии Python с помощью модуля raw, что затем позволяет использовать все остальное. Например, если вам нужно запустить Python 2 на основе RHEL-системы, вы можете установить его следующим образом:
$ ansible myhost --become -m raw -a "yum install -y python2"
Выбор версии Ansible для установки
Какой версии Ansible установить, зависит от ваших конкретных потребностей. Вы можете выбрать любой из следующих способов установки Ansible:
- Установите последнюю версию с помощью менеджера пакетов вашей ОС (для Red Hat Enterprise Linux (TM), CentOS, Fedora, Debian или Ubuntu).
- Установите с помощью
pip(менеджера пакетов Python). - Установите
ansible-baseиз исходного кода, чтобы получить доступ к разработочной (devel) версии для разработки или тестирования последних функций.
Примечание
Вы должны запускать ansible-base из devel, только если вы изменяете ansible-base, или тестируете функции в разработке. Это быстро меняющийся исходный код и может стать нестабильным в любой момент.
Ansible выпускает новые релизы два-три раза в год. Из-за этого короткого цикла выпуска небольшие ошибки, как правило, будут исправлены в следующем релизе, а не поддерживая обратные порты на стабильной ветке. Серьезные ошибки все еще будут иметь поддерживающие релизы по мере необходимости, хотя они выходят редко.
Установка Ansible на RHEL, CentOS или Fedora
На Fedora:
$ sudo dnf install ansible
На RHEL:
$ sudo yum install ansible
На CentOS:
$ sudo yum install epel-release $ sudo yum install ansible
RPM-пакеты для RHEL 7 и RHEL 8 доступны из репозитория Ansible Engine.
Для включения репозитория Ansible Engine для RHEL 8 выполните следующую команду:
$ sudo subscription-manager repos --enable ansible-2.9-for-rhel-8-x86_64-rpms
Для включения репозитория Ansible Engine для RHEL 7 выполните следующую команду:
$ sudo subscription-manager repos --enable rhel-7-server-ansible-2.9-rpms
RPM-пакеты для поддерживаемых версий RHEL и CentOS также доступны из EPEL.
Примечание
Поскольку Ansible 2.10 для RHEL в настоящее время недоступен, продолжайте использовать Ansible 2.9.
Ansible может управлять более старыми операционными системами, содержащими Python 2.6 или выше.
Установка Ansible на Ubuntu
Пакеты Ubuntu доступны здесь.
Чтобы настроить PPA на вашей машине и установить Ansible, выполните эти команды:
$ sudo apt update $ sudo apt install software-properties-common $ sudo add-apt-repository --yes --update ppa:ansible/ansible $ sudo apt install ansible
Примечание
В более старых дистрибутивах Ubuntu «software-properties-common» называется «python-software-properties». Возможно, вам следует использовать apt-get вместо apt в более старых версиях. Также следует учитывать, что только в более новых дистрибутивах (например, 18.04, 18.10 и так далее) есть флаг -u или --update, поэтому соответствующим образом настройте свой скрипт.
Пакеты Debian/Ubuntu также можно скомпилировать из исходного кода, выполнив:
$ make deb
Вы также можете использовать исходный код, чтобы получить ветку разработки, о которой говорится ниже.
Установка Ansible на Debian
Пользователи Debian могут использовать тот же исходный код, что и PPA Ubuntu.
Добавьте следующую строку в /etc/apt/sources.list:
deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main
Затем выполните эти команды:
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367 $ sudo apt update $ sudo apt install ansible
Примечание
Этот метод был проверен с источниками Trusty в Debian Jessie и Stretch, но может не поддерживаться в более ранних версиях. Возможно, вам следует использовать apt-get вместо apt в более старых версиях.
Установка Ansible на Gentoo с portage
$ emerge -av app-admin/ansible
Чтобы установить последнюю версию, возможно, вам потребуется размаскировать пакет Ansible перед использованием emerging:
$ echo 'app-admin/ansible' >> /etc/portage/package.accept_keywords
Установка Ansible на FreeBSD
Хотя Ansible работает с версиями Python 2 и 3, FreeBSD имеет разные пакеты для каждой версии Python. Поэтому для установки вы можете использовать:
$ sudo pkg install py27-ansible
или:
$ sudo pkg install py36-ansible
Вы также можете установить из портов, выполнив:
$ sudo make -C /usr/ports/sysutils/ansible install
Вы также можете выбрать определённую версию, например ansible25.
Более старые версии FreeBSD работали с чем-то подобным (замените на ваш менеджер пакетов):
$ sudo pkg install ansible
Установка Ansible на macOS
Предпочтительный способ установки Ansible на Mac — с помощью pip.
Инструкции можно найти в Установка Ansible с помощью pip. Если вы используете macOS версии 10.12 или более ранней, вам необходимо обновить до последней pip для безопасного подключения к Python Package Index. Следует отметить, что pip необходимо запускать как модуль на macOS, а в связанных инструкциях pip показано, как это сделать.
Примечание
Если у вас установлена Ansible 2.9 или более старая версия, сначала необходимо использовать pip uninstall ansible для удаления более старых версий Ansible перед повторной установкой.
Если вы устанавливаете на macOS Mavericks (10.9), у вас могут возникнуть некоторые проблемы с компилятором. Обходным путём является выполнение следующих действий:
$ CFLAGS=-Qunused-arguments CPPFLAGS=-Qunused-arguments pip install --user ansible
Установка Ansible на Solaris
Ansible доступен для Solaris в виде пакета SysV из OpenCSW.
# pkgadd -d http://get.opencsw.org/now # /opt/csw/bin/pkgutil -i ansible
Установка Ansible на Arch Linux
Ansible доступен в репозитории Community:
$ pacman -S ansible
AUR содержит PKGBUILD для прямого скачивания с GitHub под названием ansible-git.
Также см. страницу Ansible на ArchWiki.
Установка Ansible на Slackware Linux
Скрипт сборки Ansible доступен в репозитории SlackBuilds.org. Его можно скомпилировать и установить с помощью sbopkg.
Создать очередь с Ansible и всеми зависимостями:
# sqg -p ansible
Скомпилировать и установить пакеты из созданного файла очереди (ответьте Q на вопрос, если sbopkg должен использовать очередь или пакет):
# sbopkg -k -i ansible
Установка Ansible на Clear Linux
Ansible и его зависимости доступны в составе пакета sysadmin host management bundle:
$ sudo swupd bundle-add sysadmin-hostmgmt
Обновление программного обеспечения будет управляться инструментом swupd:
$ sudo swupd update
Установка Ansible с pip
Ansible можно установить с помощью pip, менеджера пакетов Python. Если pip ещё не доступен в вашей системе Python, выполните следующие команды для его установки:
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py $ python get-pip.py --user
Примечание
Если у вас установлена Ansible 2.9 или более старая версия, сначала необходимо использовать pip uninstall ansible для удаления более старых версий Ansible перед повторной установкой.
Затем установите Ansible 1:
$ python -m pip install --user ansible
Подсказка
Если вы впервые устанавливаете пакеты с помощью pip, вам может потребоваться выполнить некоторую дополнительную конфигурацию, прежде чем вы сможете запустить Ansible. Более подробную информацию см. в документации Python по установке в пользовательский сайт.
Для использования плагина подключения paramiko или модулей, требующих paramiko, установите необходимый модуль 2:
$ python -m pip install --user paramiko
Если вы хотите установить Ansible глобально, выполните следующие команды:
$ sudo python get-pip.py $ sudo python -m pip install ansible
Примечание
Запуск pip с sudo внесёт глобальные изменения в систему. Так как pip не координируется с системными менеджерами пакетов, он может внести изменения в вашу систему, которые оставят её в несогласованном или неработоспособном состоянии. Это особенно актуально для macOS. Рекомендуется использовать установку с --user, если вы полностью не понимаете последствия изменения глобальных файлов в системе.
Примечание
Более старые версии pip по умолчанию используют http://pypi.python.org/simple, который больше не работает. Убедитесь, что у вас установлена последняя версия pip перед установкой Ansible. Если у вас установлена более старая версия pip, вы можете обновить её, следуя инструкциям по обновлению pip на странице https://pip.pypa.io/en/stable/installing/#upgrading-pip .
Обновление Ansible с версии 2.9 и более ранних до версии 2.10 или более поздней
Начиная с версии 2.10, Ansible состоит из двух пакетов. Сначала необходимо удалить старую версию Ansible (2.9 или более раннюю), прежде чем обновлять её. Если вы не удалите более старую версию Ansible, вы увидите следующее сообщение, и никаких изменений не будет:
Cannot install ansible-base with a pre-existing ansible==2.x installation. Installing ansible-base with ansible-2.9 or older currently installed with pip is known to cause problems. Please uninstall ansible and install the new version: pip uninstall ansible pip install ansible-base ...
Как указано в сообщении, для обновления необходимо сначала удалить установленную версию Ansible, а затем установить последнюю версию.
$ pip uninstall ansible $ pip install ansible
Установка разработки ansible-base
В Ansible 2.10 и более поздних версиях репозиторий ansible/ansible содержит код базовых функций, таких как копирование кода модулей на управляемые узлы. Этот код также известен как ansible-base.
Примечание
Вы должны запускать ansible-base только из devel, если вы изменяете ansible-base или тестируете функции в разработке. Это быстро меняющийся источник кода и может стать нестабильным в любой момент.
Примечание
Если у вас установлена Ansible 2.9 или более старая версия, сначала необходимо использовать pip uninstall ansible для удаления более старых версий Ansible перед повторной установкой.
Вы можете установить версию разработки ansible-base непосредственно с GitHub с помощью pip.
$ python -m pip install --user https://github.com/ansible/ansible/archive/devel.tar.gz
Замените devel в указанном выше URL любой другой веткой или тегом на GitHub для установки более старых версий Ansible (до ansible-base 2.10). Это установит весь Ansible.
$ python -m pip install --user https://github.com/ansible/ansible/archive/stable-2.9.tar.gz
См. Запуск ansible-base из исходного кода (devel) для получения инструкций по запуску ansible-base непосредственно из исходного кода без необходимости установки.
Виртуальные среды
Примечание
Если у вас установлена Ansible 2.9 или более старая версия, сначала необходимо использовать pip uninstall ansible для удаления более старых версий Ansible перед повторной установкой.
Ansible также можно установить внутри новой или существующей virtualenv:
$ python -m virtualenv ansible # Create a virtualenv if one does not already exist $ source ansible/bin/activate # Activate the virtual environment $ python -m pip install ansible
Запуск ansible-base из исходного кода (devel)
В Ansible 2.10 и более поздних версиях репозиторий ansible/ansible содержит код базовых функций, таких как копирование кода модулей на управляемые узлы. Этот код также известен как ansible-base.
Примечание
Вы должны запускать ansible-base только из devel, если вы изменяете ansible-base или тестируете функции в разработке. Это быстро меняющийся источник кода и может стать нестабильным в любой момент.
Запуск ansible-base из исходного кода прост. Вам не нужны права root для его использования, и нет программного обеспечения для фактической установки. Не требуется установка демонов или базы данных.
Примечание
Если вы хотите использовать Ansible Tower в качестве контрольного узла, не используйте установку Ansible из исходного кода. Пожалуйста, используйте менеджер пакетов ОС (такой как apt или yum) или pip для установки стабильной версии.
Для установки из исходного кода клонируйте репозиторий ansible-base git:
$ git clone https://github.com/ansible/ansible.git $ cd ./ansible
После того, как git клонировал репозиторий ansible-base , настройте среду Ansible:
Используя Bash:
$ source ./hacking/env-setup
Используя Fish:
$ source ./hacking/env-setup.fish
Чтобы подавить нежелательные предупреждения/ошибки, используйте:
$ source ./hacking/env-setup -q
Если pip не установлен в вашей версии Python, установите его:
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py $ python get-pip.py --user
Ansible также использует следующие модули Python, которые необходимо установить 1:
$ python -m pip install --user -r ./requirements.txt
Для обновления ansible-base проверок используйте pull-with-rebase, чтобы любые локальные изменения были повторены.
$ git pull --rebase
$ git pull --rebase #same as above $ git submodule update --init --recursive
После запуска скрипта env-setup вы будете работать из проверки, а файл инвентаризации по умолчанию будет /etc/ansible/hosts. Вы можете дополнительно указать файл инвентаризации (см. Как создать свою инвентаризацию), отличный от /etc/ansible/hosts:
$ echo "127.0.0.1" > ~/ansible_hosts $ export ANSIBLE_INVENTORY=~/ansible_hosts
Вы можете узнать больше о файле инвентаризации в Как создать свою инвентаризацию.
Теперь давайте протестируем это с командой ping:
$ ansible all -m ping --ask-pass
Вы также можете использовать «sudo make install».
Поиск tar-архивов помеченных выпусков
Упаковывая Ansible или желая самостоятельно создать локальный пакет, но не хотите выполнять git checkout? Tar-архивы выпусков доступны с pypi в виде https://pypi.python.org/packages/source/a/ansible/ansible-{{VERSION}}.tar.gz. Вы можете сделать VERSION переменной в вашей системе управления пакетами, которую вы обновляете в одном месте каждый раз, когда упаковываете новую версию. В качестве альтернативы, вы можете загрузить https://pypi.python.org/project/ansible, чтобы получить последнюю стабильную версию.
Примечание
Если вы создаёте свой собственный пакет Ansible, вы также должны загрузить или упаковать ansible-base как часть вашего пакета Ansible. Вы можете загрузить его как https://pypi.python.org/packages/source/a/ansible-base/ansible-base-{{VERSION}}.tar.gz.
Эти выпуски также помечены в репозитории git с версией выпуска.
Модуль автодополнения для командной строки Ansible
Начиная с Ansible 2.9, автодополнение командной строки Ansible доступно и предоставляется необязательной зависимостью под названием argcomplete. argcomplete поддерживает bash, и имеет ограниченную поддержку zsh и tcsh.
Вы можете установить python-argcomplete из EPEL в дистрибутивах на основе Red Hat Enterprise и/или из стандартных репозиториев ОС для многих других дистрибутивов.
Для получения дополнительной информации об установке и настройке см. документацию по argcomplete.
Установка argcomplete в RHEL, CentOS или Fedora
В Fedora:
$ sudo dnf install python-argcomplete
В RHEL и CentOS:
$ sudo yum install epel-release $ sudo yum install python-argcomplete
Установка argcomplete с apt
$ sudo apt install python-argcomplete
Установка argcomplete с pip
$ python -m pip install argcomplete
Настройка argcomplete
Существует 2 способа настройки argcomplete для включения автодополнения командной строки Ansible: глобально или по команде.
Глобально
Для глобального автодополнения требуется bash 4.2.
$ sudo activate-global-python-argcomplete
Это запишет файл автодополнения bash в глобальную локацию. Используйте --dest для изменения расположения.
По команде
Если у вас нет bash 4.2, вы должны зарегистрировать каждый скрипт независимо.
$ eval $(register-python-argcomplete ansible) $ eval $(register-python-argcomplete ansible-config) $ eval $(register-python-argcomplete ansible-console) $ eval $(register-python-argcomplete ansible-doc) $ eval $(register-python-argcomplete ansible-galaxy) $ eval $(register-python-argcomplete ansible-inventory) $ eval $(register-python-argcomplete ansible-playbook) $ eval $(register-python-argcomplete ansible-pull) $ eval $(register-python-argcomplete ansible-vault)
Вы должны поместить указанные выше команды в свой файл профиля оболочки, такой как ~/.profile или ~/.bash_profile.
argcomplete с zsh или tcsh
См. документацию по argcomplete.
ansible-base в GitHub
Вы также можете следить за проектом GitHub, если у вас есть учетная запись GitHub. Здесь также хранится система отслеживания проблем для совместного обсуждения ошибок и идей для новых функций.
См. также
- Введение в команды ad hoc
-
Примеры основных команд
- Работа с плейбуками
-
Изучение языка управления конфигурациями Ansible
- Как обработать зависимости пакетов, требуемые пакетом Ansible, во время установки Ansible?
-
Вопросы и ответы, связанные с установкой Ansible
- Список рассылки
-
Вопросы? Помощь? Идеи? Обратитесь к списку на Google Groups
- irc.freenode.net
-
Канал IRC-чата #ansible
-
1(1,2) -
Если у вас возникнут проблемы с установкой пакета «pycrypto» на macOS, вам может потребоваться попробовать
CC=clang sudo -E pip install pycrypto. -
2 -
paramikoбыл включён вrequirements.txtAnsible до версии 2.8.
© 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/installation_guide/intro_installation.html