Установка 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 и выше). Это включает Red Hat, Debian, CentOS, macOS, любые BSD и так далее. Windows не поддерживается для контрольного узла, подробнее об этом в посте в блоге Мэтта Дэвиса.
При выборе контрольного узла помните, что любая система управления выигрывает от запуска рядом с управляемыми машинами. Если вы запускаете Ansible в облаке, рассмотрите возможность запуска его с машины внутри этого облака. В большинстве случаев это будет работать лучше, чем через открытый Интернет.
Примечание
macOS по умолчанию настроен на небольшое количество дескрипторов файлов, поэтому если вы хотите использовать 15 или более вилок, вам нужно увеличить ulimit с помощью sudo launchctl limit maxfiles unlimited. Эта команда также может исправить любые ошибки «Слишком много открытых файлов».
Предупреждение
Обратите внимание, что некоторые модули и плагины имеют дополнительные требования. Для модулей эти требования должны быть выполнены на целевой машине (управляемом узле) и должны быть перечислены в документации по конкретному модулю.
Требования к управляемым узлам
На управляемых узлах вам нужен способ связи, который обычно является SSH. По умолчанию это использует SFTP. Если это недоступно, вы можете переключиться на SCP в ansible.cfg. Вам также нужен Python 2 (версия 2.6 или выше) или Python 3 (версия 3.5 или выше).
Примечание
- Если на удаленных узлах включен SELinux, вам также нужно установить libselinux-python на них перед использованием функций, связанных с копированием/файлами/шаблонами в Ansible. Вы можете использовать модуль yum или dnf в Ansible для установки этого пакета на удаленные системы, на которых его нет.
- По умолчанию, перед запуском первого Python-модуля в книге задач на хосте, 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 и CentOS:
$ 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 apt-add-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:
$ 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
Для использования плагина подключения 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 по ссылке .
Обновление 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? Архивы релизов доступны на 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
ansible-base в GitHub
Вы также можете следить за проектом GitHub, если у вас есть учетная запись GitHub. Здесь также находится система отслеживания проблем для обмена ошибками и идеями новых функций.
См. также
- Введение в ad-hoc команды
-
Примеры основных команд
- Работа с playbook
-
Изучение языка управления конфигурацией 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–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/installation_guide/intro_installation.html