Используем ansible-vault в плэйбуках и ролях | OTUS

Курсы

Программирование
iOS Developer. Basic
-23%
Python Developer. Professional
-13%
Разработчик на Spring Framework
-23%
Golang Developer. Professional
-17%
Python Developer. Basic
-16%
iOS Developer. Professional
-13%
Node.js Developer
-15%
Unity Game Developer. Professional
-11%
React.js Developer
-12%
Android Developer. Professional
-7%
Software Architect
-12%
C++ Developer. Professional
-8%
Разработчик C#
-8%
Backend-разработчик на PHP
-8%
Архитектура и шаблоны проектирования
-12%
Программист С Базы данных Framework Laravel PostgreSQL Reverse-Engineering. Professional CI/CD Agile Project Manager Нереляционные базы данных Супер - интенсив по паттернам проектирования Супер-практикум по использованию и настройке GIT IoT-разработчик Advanced Fullstack JavaScript developer Супер-интенсив "Azure для разработчиков"
Инфраструктура
Мониторинг и логирование: Zabbix, Prometheus, ELK
-17%
DevOps практики и инструменты
-18%
Архитектор сетей
-21%
Инфраструктурная платформа на основе Kubernetes
-22%
Супер-интенсив «IaC Ansible»
-16%
Супер-интенсив по управлению миграциями (DBVC)
-16%
Administrator Linux. Professional
-5%
Administrator Linux.Basic
-10%
Супер-интенсив «ELK»
-10%
Базы данных Сетевой инженер AWS для разработчиков Cloud Solution Architecture Разработчик голосовых ассистентов и чат-ботов Внедрение и работа в DevSecOps Супер-практикум по работе с протоколом BGP Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Супер-интенсив «СУБД в высоконагруженных системах»
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

Используем ansible-vault в плэйбуках и ролях

Linux_Deep_5.07_site.png

Зачастую при работе с Ansible требуется использовать различные аутентификационные данные. Хранить их в plain text – не самая лучшая идея. Для хранения таких данных в зашифрованном виде следует использовать ansible-vault.

Рассмотрим пример использования ansible-vault для хранения имени пользователя и пароля для подключения по ssh в том случае, когда у нас нет ключа на сервере.

Создаём vars файл

ansible-vault create vars.yml
New Vault password: 
Confirm New Vault password: 

заполняем данные

ansible_ssh_user: root
ansible_ssh_pass: mypasswd

Смотрим содержимое файла

$ more vars.yml 
$ANSIBLE_VAULT;1.1;AES256
34616461393939363333636466396266313363333765616661306661313662306566373039383032
3331643864656235613039303034646338396433316466660a646433663563353330653662353034
31653163656132346462653432393733343865373833386439393865646239663336656335616132
3437306634656634340a646364346635343161363230313735363136313338616338663663643533
61366438373166376438333261306432343162653137353035323663616138663333623932323630
32336537646263613235366132396665373435323266633933373636633434396534333434363035
303537306466373236366561316534643330

Чтобы посмотреть или изменить данные

ansible-vault view vars.yml
ansible-vault edit vars.yml

Добавляем vars.yml в плейбук

- hosts: all
  gather_facts: true
  vars_files:
    - vars.yml
  tasks: 
  - debug: var=[ansible_kernel,ansible_distribution,ansible_dns,ansible_date_time.tz,ansible_date_time]

Исполняем плейбук

ansible-playbook -i my.inv get_info.yml --ask-vault-pass 
Vault password: 

Использование для group_vars и host_vars

Когда нам нужны разные данные для разных групп и хостов, мы также создаём файлы переменных согласно требуемой конфигурации с помощью ansible-vault, как было показано выше:

group_vars/
   linux.yml             # названия фалов соответвуют названию групп
   db.yml                 # в inventory
host_vars/
   primary_mysql.yml          # названия файлов соответвуют названию хостов
   primary_web.yml             # в  inventory

Есть вопрос? Напишите в комментариях!

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
5 комментариев
0

Wow, nice!!!

0

Вводить пароль на каждом выполнении ansible-playbook так себе идея

1

Использовать файл с паролем идея тоже не самая лучшая, хотя, да, опцию расписать стоило.

0

Если этот файл в гитигноре, не вижу проблем

0

если админов много, каждый пускает скрипты со своей рабочей машины - будут множественные копии файла с паролем. конечно можно выделить отдельную подключаемую шару где хранить такие вещи или пускать такие скрипты с выделенной машины

Для комментирования необходимо авторизоваться