Начало работы
Вступление
Теперь, когда вы прочитали инструкцию по установке и установили Ansible, пришло время начать работу с некоторыми разовыми командами.
Сначала мы покажем не мощные возможности конфигурации/развёртывания/оркестрации Ansible. Эти функции обрабатываются playbook-файлами, которые рассматриваются в отдельном разделе.
Этот раздел посвящен тому, как запустить Ansible в самом начале. После того, как вы поймёте эти концепции, ознакомьтесь с Введением в разовые команды для получения более подробной информации, и тогда вы будете готовы начать изучение playbooks и исследовать наиболее интересные части!
Информация о подключении к удаленным хостам
Прежде чем начать, важно понять, как Ansible взаимодействует с удалёнными машинами через SSH.
По умолчанию Ansible попытается использовать родной OpenSSH для удалённого взаимодействия, когда это возможно. Это позволяет использовать ControlPersist (функция повышения производительности), Kerberos и параметры в ~/.ssh/config , такие как настройка хоста перехода. Однако при использовании операционных систем Enterprise Linux 6 в качестве управляющей машины (Red Hat Enterprise Linux и производные, такие как CentOS), версия OpenSSH может быть слишком старой для поддержки ControlPersist. В этих операционных системах Ansible будет использовать высококачественную реализацию OpenSSH на Python под названием «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 в облаке, рассмотрите возможность запуска его с машины внутри этого облака. В большинстве случаев это будет работать лучше, чем в открытом интернете.
В качестве продвинутой темы, 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 Работа с Playbooks. 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.
См. также
- Работа с инвентарём
- Дополнительная информация об инвентаризации
- Введение в разовые команды
- Примеры базовых команд
- Работа с Playbooks
- Изучение языка управления конфигурацией 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.5/user_guide/intro_getting_started.html