Spec-Zone.ru › Ansible 2.8

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

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

Введение

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

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

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

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

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

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

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

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

Примечание

Ansible не предоставляет канал для связи между пользователем и процессом ssh для ручного ввода пароля для расшифровки ключа ssh при использовании плагина подключения ssh (который является по умолчанию). Сильно рекомендуется использовать ssh-agent.

Хотя это может быть очевидно, стоит поделиться: любая система управления выигрывает от запуска рядом с управляемыми машинами. Если вы запускаете 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

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

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

$ ansible all -m ping

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

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

# as bruce
$ ansible all -m ping -u bruce
# as bruce, sudoing to root (sudo is default method)
$ ansible all -m ping -u bruce --become
# as bruce, sudoing to batman
$ ansible all -m ping -u bruce --become --become-user batman

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

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

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

Поздравляем! Вы только что связались со своими узлами с помощью Ansible. Скоро настанет время: узнать о некоторых реальных примерах в Введение в ад-хок команды, изучить, что вы можете сделать с различными модулями, и узнать о языке Ansible Работа с Playbook. 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 по умолчанию включена проверка ключей хоста.

Если хост переустановлен и имеет другой ключ в «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 будет регистрировать некоторую информацию о параметрах модулей на удалённой системе в удалённом syslog, если задача или книга задач (play) не помечена атрибутом «no_log: True». Это будет объяснено позже.

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

См. также

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

© 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/user_guide/intro_getting_started.html

Spec-Zone.ru

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