Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.
Загляните в раздел «Обсуждение»:
Начать работать с Ansible очень просто. Для этого нужно запустить программу в режиме ad-hoc, то есть выполнить команду на удаленном сервере из командной строки. Попробуем это сделать и разберём, что здесь происходит:
$ ansible all -i production.ini -m ping
При выполнении этой команды мы получим 2 ответа:
ec2-3-17-186-111.us-east-2.compute.amazonaws.com | SUCCESS => {
"changed": false,
"ping": "pong"
}
ec2-3-15-41-227.us-east-2.compute.amazonaws.com | SUCCESS => {
"changed": false,
"ping": "pong"
}
Тело каждого ответа содержит:
Можно просмотреть структуру запроса, который был выполнен:
$ ansible --help
usage: ansible [-h] [--version] [-v] [-b] [--become-method BECOME_METHOD] [--become-user BECOME_USER] [-K] [-i INVENTORY] [--list-hosts] [-l SUBSET] [-P POLL_INTERVAL] [-B SECONDS] [-o] [-t TREE] [-k] [--private-key PRIVATE_KEY_FILE] [-u REMOTE_USER] [-c CONNECTION] [-T TIMEOUT] [--ssh-common-args SSH_COMMON_ARGS] [--sftp-extra-args SFTP_EXTRA_ARGS] [--scp-extra-args SCP_EXTRA_ARGS] [--ssh-extra-args SSH_EXTRA_ARGS] [-C] [--syntax-check] [-D] [-e EXTRA_VARS] [--vault-id VAULT_IDS] [--ask-vault-pass | --vault-password-file VAULT_PASSWORD_FILES] [-f FORKS] [-M MODULE_PATH] [--playbook-dir BASEDIR] [-a MODULE_ARGS] [-m MODULE_NAME]
pattern
Обязательный аргумент pattern
связан с inventory-файлом, о котором мы поговорим ниже, и указывает, какой хост или хосты нужно задействовать. Далее идет длинный список необязатлельных аргументов. Рассмотрим некотрые из них:
В примере выполняется запрос и запускается модуль ping
на всех серверах, которые указаны в файле production.ini.
Модуль ping
очень простой. Он не принимает никаких аргументов и проверяет доступность сервера, можно ли зайти на него по SSH. Выполним эту команду повторно, но укажем уже другой модуль command
, который позволяет выполнить произвольную команду на удаленном сервере, и посмотрим, что нам выдаст утилита uptime
:
$ ansible all -i production.ini -m command -a 'uptime'
ec2-3-17-186-111.us-east-2.compute.amazonaws.com | CHANGED | rc=0 >>
5:19 up 7 days, 7:03, 2 users, load averages: 1.10 1.17 1.17
ec2-3-15-41-227.us-east-2.compute.amazonaws.com | CHANGED | rc=0 >>
5:19 up 7 days, 7:03, 2 users, load averages: 1.10 1.17 1.17
Ansible сообщает нам, что оба сервера были запущены 7 дней назад. Вообще, модуль command
используется по дефолту. И если указать только аргументы, то будет использоваться именно этот модуль.
Теперь давайте посмотрим, что собой представляет inventory-файл. В простейшем случае — это список серверов. Его можно получить с помощью команды опции --list-hosts
:
$ ansible all --list-hosts -i production.ini
hosts (2):
ec2-3-17-186-111.us-east-2.compute.amazonaws.com
ec2-3-15-41-227.us-east-2.compute.amazonaws.com
all
— зарезервированное ключевое слово в Ansible. Оно обозначает, что команду нужно выполнить для всех серверов, указанных в inventory-файле. Но можно настроить списки серверов, на которых будут запускаться сценарии. Например, выделить различные группы — веб-сервера, application-сервера и т.д.:
[webservers]
ec2-3-17-186-111.us-east-2.compute.amazonaws.com
[appservers]
ec2-3-15-41-227.us-east-2.compute.amazonaws.com
Если обратиться к несуществующей группе, Ansible сообщит о том, что он не нешёл ни одного хоста:
$ ansible devservers -i production.ini -a 'uptime'
[WARNING]: No hosts matched, nothing to do
А при указании webservers
, команда uptime
будет выполнена только на сервере из этой группы:
$ ansible webservers -i production.ini -a 'uptime'
ec2-3-17-186-111.us-east-2.compute.amazonaws.com | CHANGED | rc=0 >>
4:49 up 7 days, 6:32, 2 users, load averages: 1.12 1.25 1.29
Вам ответят команда поддержки Хекслета или другие студенты.
Профессиональная подписка откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.
или войти в аккаунт
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.
Наши выпускники работают в компаниях:
Зарегистрируйтесь или войдите в свой аккаунт