Начало работы
- Введение
- Информация о подключении к удалённым компьютерам
- Ваши первые команды
- Проверка ключей хостов
Введение
После того, как вы ознакомились с руководством по установке и установили Ansible, пришло время начать работу с некоторыми ад-хок командами.
Вначале мы покажем не мощные возможности конфигурации, развертывания и оркестрации Ansible. Эти возможности обрабатываются плейбуками, которые рассматриваются в отдельном разделе.
Этот раздел посвящён тому, как запустить Ansible в самом начале. После того, как вы поймёте эти концепции, прочитайте Введение в ад-хок команды для более подробной информации, и тогда вы будете готовы начать изучать плейбуки и исследовать наиболее интересные части!
Информация о подключении к удалённым компьютерам
Прежде чем начать, важно понять, как Ansible взаимодействует с удалёнными компьютерами через SSH.
По умолчанию Ansible будет пытаться использовать собственный OpenSSH для удалённого взаимодействия, когда это возможно. Это позволяет использовать ControlPersist (функцию производительности), Kerberos и параметры в ~/.ssh/config, такие как настройка Jump Host. Однако, при использовании операционных систем Enterprise Linux 6 в качестве управляющей машины (Red Hat Enterprise Linux и производных, таких как CentOS), версия OpenSSH может быть слишком старой, чтобы поддерживать ControlPersist. В этих операционных системах Ansible будет переходить к использованию высококачественной Python-реализации OpenSSH под названием «paramiko». Если вы хотите использовать такие функции, как Kerberized SSH и другие, рассмотрите использование Fedora, OS X или 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 $ 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 по умолчанию включена проверка ключей хостов.
Если хост переустановлен и имеет другой ключ в «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, если задача или плей не помечены атрибутом «no_log: True». Это будет объяснено позже.
Чтобы включить базовую регистрацию на управляющей машине, см. документ Конфигурирование Ansible и установите параметр «log_path» в файле конфигурации. Пользователи Enterprise также могут быть заинтересованы в Ansible Tower. Tower предоставляет очень мощную функцию регистрации в базе данных, где возможно углубленное изучение истории на основе хостов, проектов и конкретных инвентарей со временем – исследуемой как графически, так и через REST API.
См. также
- Работа с инвентарём
- Дополнительная информация об инвентаре
- Введение в ад-хок команды
- Примеры основных команд
- Работа с плейбуками
- Изучение языка управления конфигурацией 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.6/user_guide/intro_getting_started.html