Spec-Zone.ru › Ansible 2.4

Начало работы

  • Вступление
  • Информация о подключении к удаленным компьютерам
  • Ваши первые команды
  • Проверка ключа хоста

Вступление

После прочтения Установка и установки Ansible пришло время начать работу с некоторыми адхок-командами.

Сначала мы покажем не мощные функции конфигурирования, развертывания и оркестрации Ansible. Эти функции обрабатываются плейбуками, которые рассматриваются в отдельном разделе.

Этот раздел посвящен тому, как запустить Ansible в начальном режиме. После понимания этих концепций прочтите Введение в адхок-команды для получения более подробной информации, и тогда вы будете готовы начать изучение плейбуков и изучить самые интересные части!

Информация о подключении к удаленным компьютерам

Прежде чем начать, важно понять, как Ansible взаимодействует с удаленными машинами через SSH.

По умолчанию Ansible 1.3 и более поздние версии будут использовать родной OpenSSH для удаленного взаимодействия, когда это возможно. Это позволяет использовать ControlPersist (функция производительности), Kerberos и параметры в ~/.ssh/config , такие как настройка промежуточного хоста. Однако, при использовании операционных систем Enterprise Linux 6 в качестве управляющей машины (Red Hat Enterprise Linux и производные, такие как CentOS), версия OpenSSH может быть слишком старой для поддержки ControlPersist. В этих операционных системах Ansible переключится на использование высококачественной Python-реализации OpenSSH под названием «paramiko». Если вы хотите использовать такие функции, как Kerberized SSH и другие, рассмотрите использование Fedora, OS X или Ubuntu в качестве управляющей машины до тех пор, пока для вашей платформы не будет доступна более новая версия OpenSSH — или включите «ускоренный режим» в Ansible. См. Ускоренный режим.

В выпусках до и включая Ansible 1.2, по умолчанию использовался строго paramiko. Родной SSH необходимо было явно выбрать с помощью параметра -c ssh или задать в файле конфигурации.

Иногда вы столкнетесь с устройством, которое не поддерживает SFTP. Это редкость, но если это произойдет, вы можете переключиться на режим SCP в Файл конфигурации.

При взаимодействии с удаленными машинами Ansible по умолчанию предполагает, что вы используете ключи SSH. Использование ключей SSH рекомендуется, но аутентификация по паролю также может быть использована при необходимости, предоставив параметр --ask-pass. Если используются функции sudo и когда sudo требует пароль, также предоставьте --ask-become-pass (ранее --ask-sudo-pass, которое было устарело).

Хотя это может быть очевидным, стоит упомянуть: любая система управления выигрывает от работы рядом с управляемыми машинами. Если вы используете Ansible в облаке, рассмотрите возможность запуска его с машины внутри этого облака. В большинстве случаев это будет работать лучше, чем в открытом интернете.

В качестве продвинутой темы Ansible не обязательно подключаться к удаленным компьютерам только через SSH. Транспорты являются подключаемыми, и есть варианты управления локально, а также управления контейнерами chroot, lxc и jail. Режим «ansible-pull» также может инвертировать систему и заставить системы «звонить домой» через запланированные проверки git для извлечения директив конфигурации из централизованного репозитория.

Ваши первые команды

После установки Ansible пришло время начать работу с основами.

Отредактируйте (или создайте) /etc/ansible/hosts и поместите в него одну или несколько удаленных систем. Ваш открытый SSH-ключ должен находиться в authorized_keys на этих системах:

192.0.2.50
aserver.example.org
bserver.example.org

Это файл инвентаризации, который также более подробно описан здесь: Инвентаризация.

Мы будем предполагать, что вы используете SSH-ключи для аутентификации. Чтобы настроить SSH-агент для предотвращения повторного ввода паролей, можно сделать следующее:

$ ssh-agent bash
$ ssh-add ~/.ssh/id_rsa

(В зависимости от вашей конфигурации, вы можете использовать параметр Ansible --private-key для указания файла pem вместо него)

Теперь выполните ping для всех узлов:

$ ansible all -m ping

Ansible попытается установить удаленное соединение с машинами, используя ваше текущее имя пользователя, как и SSH. Чтобы переопределить имя удаленного пользователя, просто используйте параметр «-u».

Если вам нужно получить доступ к режиму sudo, также есть флаги для этого:

# as bruce
$ ansible all -m ping -u bruce
# as bruce, sudoing to root
$ ansible all -m ping -u bruce --sudo
# as bruce, sudoing to batman
$ ansible all -m ping -u bruce --sudo --sudo-user batman

# With latest version of ansible `sudo` is deprecated so use become
# as bruce, sudoing to root
$ ansible all -m ping -u bruce -b
# as bruce, sudoing to batman
$ ansible all -m ping -u bruce -b --become-user batman

(Реализация sudo может быть изменена в файле конфигурации Ansible, если вам нужно использовать замену sudo. Флаги, передаваемые в sudo (например, -H), также могут быть установлены там.)

Теперь выполните живую команду на всех ваших узлах:

$ ansible all -a "/bin/echo hello"

Поздравляем! Вы только что связались со своими узлами с помощью Ansible. Скоро придет время: прочитать о некоторых более реальных случаях в Введение в адхок-команды, исследовать, что можно сделать с различными модулями, и изучить язык Ansible Плейбуки. Ansible — это не только выполнение команд, но и мощные возможности управления конфигурацией и развертывания. Есть еще что изучить, но у вас уже есть полностью работающая инфраструктура!

Советы

При выполнении команд вы можете указать локальный сервер, используя «localhost» или «127.0.0.1» в качестве имени сервера.

Пример:

$ ansible localhost -m ping -e 'ansible_python_interpreter="/usr/bin/env python"'

Вы можете явно указать localhost, добавив это в ваш файл инвентаризации:

localhost ansible_connection=local ansible_python_interpreter="/usr/bin/env python"

Проверка ключа хоста

В Ansible 1.2.1 и более поздних версиях проверка ключа хоста включена по умолчанию.

Если хост переустановлен и имеет другой ключ в «known_hosts», это приведет к сообщению об ошибке до исправления. Если хост изначально не указан в «known_hosts», это приведет к запросу подтверждения ключа, что приводит к интерактивному опыту при использовании Ansible, например, из cron. Возможно, вы этого не хотите.

Если вы понимаете последствия и хотите отключить это поведение, вы можете сделать это, отредактировав /etc/ansible/ansible.cfg или ~/.ansible.cfg:

[defaults]
host_key_checking = False

В качестве альтернативы это можно установить переменной окружения ANSIBLE_HOST_KEY_CHECKING:

$ export ANSIBLE_HOST_KEY_CHECKING=False

Также обратите внимание, что проверка ключа хоста в режиме paramiko относительно медленная, поэтому рекомендуется переключиться на «ssh» при использовании этой функции.

Ansible будет регистрировать некоторую информацию о параметрах модуля на удаленной системе в удаленном журнале системных событий, если задача или плейбук не помечены атрибутом «no_log: True». Это будет объяснено позже.

Чтобы включить базовый журнал регистрации на управляющей машине, см. документ Файл конфигурации и установите значение параметра «log_path» файла конфигурации. Пользователи Enterprise также могут быть заинтересованы в Ansible Tower. Tower предоставляет очень надежную базу данных для ведения журналов, где можно углубиться и увидеть историю, основанную на узлах, проектах и конкретных инвентаризациях с течением времени — ее можно просматривать как графически, так и через REST-API.

См. также

Инвентаризация
Дополнительная информация об инвентаризации
Введение в адхок-команды
Примеры основных команд
Плейбуки
Изучение языка Ansible для управления конфигурациями
Список рассылки
Вопросы? Помощь? Идеи? Заходите на список рассылки Google Groups
irc.freenode.net
IRC-чат-канал #ansible

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

Spec-Zone.ru

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