Ansible — это мощный инструмент автоматизации и удаленного управления, который позволяет администрировать все ваши удаленные машины. Ansible является кроссплатформенным и может работать на большинстве машин без необходимости в дополнительном программном обеспечении. Он также предлагает безопасность, используя SSH и Python на удаленных машинах для выполнения определенных задач.
Он поддерживает два метода управления удаленными машинами: специальные команды и сценарии воспроизведения Ansible. Специальные команды — это необработанные команды, которые вы можете выполнить в терминале для выполнения задачи в одном экземпляре.
С другой стороны, Ansible Playbooks — это файлы, написанные на языке YAML. Они содержат одну или несколько задач, выполняемых на удаленной машине. Из-за строгого характера YAML, сценарии Ansible требуют особого внимания к общему синтаксису.
Это руководство познакомит вас с основами написания Ansible Playbook и выполнения команд на удаленных машинах. Для иллюстраций в этом руководстве мы создадим простую книгу, которая устанавливает и настраивает веб-сервер Apache.
ПРИМЕЧАНИЕ: это руководство не предназначено для обучения вас Ansible. Все, что он делает, это дает вам советы и рекомендации по написанию сборника пьес на Ansible.
Предварительные условия
Чтобы получить максимальную отдачу от этого руководства, мы рекомендуем следовать ему. Вам потребуются следующие вещи.
Ubuntu или дистрибутив на основе Debian — это машина, которую мы используем для подключения к удаленным машинам с помощью SSH.
Удаленная машина для управления с помощью Ansible — мы рекомендуем приобрести систему Linux, такую как Debian Server.
Как только вы выполните оба вышеуказанных требования, мы сможем начать.
Как установить Ansible в Debian / Ubuntu
Самый первый шаг — убедиться, что у нас установлен и запущен Ansible на нашем локальном компьютере. В этом уроке я буду использовать Ubuntu.
Шаг 1
Начните с обновления вашей системы, используя следующие команды:
sudo apt-get update
sudo apt-get dist-upgrade -y
Шаг 2
Затем используйте приведенные ниже команды, чтобы установить Ansible в Ubuntu.
sudo apt install software-properties-common
sudo add-apt-repository —yes —update ppa:ansible/ansible
sudo apt install ansible -y
Теперь, когда мы установили его на ваш локальный компьютер, мы можем приступить к его настройке.
Как настроить Ansible Inventory
Чтобы управлять удаленными серверами с помощью Ansible, вам необходимо сообщить об этом Ansible. Мы делаем это, создавая файл инвентаризации, содержащий IP-адреса или имена хостов удаленных машин.
По умолчанию файл инвентаризации хоста находится в / etc / ansible / hosts.
Чтобы узнать, как создать собственный файл инвентаризации хоста в Ansible, рассмотрите одно из наших руководств.
Отредактируйте файл / etc / ansible / hosts и добавьте IP-адрес вашего удаленного компьютера, как показано ниже:
В приведенном выше примере инвентаризации мы создаем группу серверов (linuxhint), которыми будем управлять в этом руководстве. У вас могут быть другие группы, такие как веб-серверы, серверы баз данных и т.д.
Как настроить пару ключей SSH
Ansible использует SSH для входа на указанные удаленные машины и выполняет задачи, определенные в playbook. Поэтому, чтобы минимизировать взаимодействие и создать полностью автоматизированный рабочий процесс, лучше всего создать пару SSH для входа на удаленный компьютер.
Шаг 1
Первым шагом является создание пары ключей SSH с помощью инструмента ssh-keygen. Используйте команду как:
ssh-keygen
Это интерактивно попросит вас сгенерировать пару ключей SSH. Для простоты примите значения по умолчанию и не добавляйте парольную фразу.
Результат для этого ниже:
Шаг 2
Затем нам нужно скопировать ключ SSH на удаленные машины с помощью инструмента ssh-copy-id. Используйте команду как:
ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote_ip
Как написать Ansible Playbook
Как я упоминал ранее, в плейбуках Ansible используется YAML, и, следовательно, вам необходимо соблюдать строгие синтаксические соглашения.
Чтобы оставаться организованным, давайте создадим каталог, в котором мы будем хранить все наши playbook.
cd ~
mkdir anisble-workspacecd ansible-workspace
Теперь, когда у нас есть каталог, давайте создадим нашу первую Ansible Playbook (файл должен иметь расширение.yaml.
vim test.yaml
Внутри файла YAML добавьте следующее содержимое.
—
— hosts: all
become: true
become_method: sudo
tasks:
— name: «Show Network Interfaces»
command: ifconfig
register: details
— name: ‘Get Interfaces details’
debug:
msg: «{{ details.stdout }}»
Сохраните файл и запустите его на сервере с помощью команды:
ansible-playbook test.yaml
Команда выведет информацию о сетевых интерфейсах на удаленных машинах, как показано на изображении ниже:
Хотя вывод выглядит некрасиво и не обеспечивает наиболее эффективного способа сбора сетевой информации с помощью Ansible, он хорошо иллюстрирует, как мы можем использовать Ansible для выполнения команд на удаленных хостах.
Как регистрировать переменные в Ansible Playbooks
Чтобы создать переменную в пьесе Ansible, мы используем ключевое слово register, за которым следует имя переменной. Вы также можете использовать имя переменной в качестве ключа и установить ее значение, используя запись с двоеточием.
Например, два способа зарегистрировать переменную в Ansible.
register: variable1
variable2: value
Определив переменную, вы можете использовать ее, называя ее имя внутри набора из двух фигурных скобок как:
‘Calling the variable {{ variable1 }} inside a string’
{{ variable2 }}
Повышение привилегий в Ansible
Ansible также позволяет вам повышать привилегии пользователя, использующего сборщик. Метод стать — это логическое значение, указывающее, что задачи внутри playbook должны выполняться от имени пользователя root.
В нашем первом сборнике сценариев мы устанавливаем для параметра stat значение true и устанавливаем метод повышения привилегий как sudo.
Apt Inside Playbooks
Ansible предоставляет нам способы управления пакетами APT в системе на основе Debian. Используя этот метод, вы можете обновлять, устанавливать и удалять пакеты с помощью Ansible playbook.
Рассмотрим файл update.yaml, показанный ниже:
—
— hosts: all
become: yes
become_method: sudo
tasks:
— name: «Update cache & Full system update»
apt:
update_cache: true
cache_valid_time: 3600
force_apt_get: true
Вышеупомянутые сценарии обновляют кеш репозитория. Это соответствует необработанной команде как:
Sudo apt-get update
Это может быть невероятно полезно при установке программного обеспечения, такого как apache, nginx и т. Д., На удаленный хост.
Пример использования
В этом разделе будет создана инструкция, которая устанавливает веб-сервер Apache в системе Debian и выполняет базовую настройку.
В этом сборнике показаны различные движущиеся части Ansible и представлен хороший пример того, как работают сценарии Ansible.
Начните с создания файла YAML.
vim config_apache.yaml
Внутри YAML введите следующую книгу.
—
— hosts: all
become: true
become_method: sudotasks:
— name: «Update packages and upgrade»
apt:
update_cache: true
upgrade: dist
force_apt_get: true
— name: «Install Apache server»
apt:
name: apache2
state: latest
— name: «Create document root»
file:
path: «/var/www/html»
state: directory
owner: «www-data»
mode: 0755
— name: «Enable Apache on Firewall»
ufw:
rule: allow
port: 80
proto: tcp
— name: «restart apache2 service»
service:
name: apache2
state: restarted
Сохраните файл и запустите его на удаленном сервере с помощью команды:
ansible-playbook —user=»ubuntu» config_apache.yaml
После успешного выполнения вы увидите на выходе, как показано.
Убедитесь, что сервер работает, используя curl как:
curl 192.168.0.13
Вы должны получить исходный код apache по умолчанию (фрагмент показан ниже).
На этом мы закончили этот урок.
Заключение
Стоит отметить, что функциональность написания сборников пьес будет сильно зависеть от задач, которые вам нужно выполнить. Тем не менее, я надеюсь, что этот урок дал вам несколько рекомендаций и советов по созданию своего собственного.