<===
2026-01-01 15:37:53
Ansible Vault позволяет шифровать пароли/ключи прямо в репозитории, так что в git лежит только шифротекст, а расшифровка идёт на лету при запуске playbook.[1][2]
## Базовый сценарий: отдельный vault‑файл
1. Создать файл с секретами:
```bash
ansible-vault create group_vars/all/vault.yml
```
Внутри, в YAML:
```yaml
ovpn_passphrase: "мой_секретный_пароль"
db_password: "another_secret"
```
Команда попросит пароль для vault‑файла.[2][3]
2. Подключить файл в плейбуке:
```yaml
---
- name: OVPN deploy
hosts: all
become: true
vars_files:
- group_vars/all/vault.yml
tasks:
- name: Decrypt ovpn archive
ansible.builtin.shell: >
gpg --batch --yes
--passphrase '{{ ovpn_passphrase }}'
-d '{{ ovpn_tmp_dir }}/{{ ovpn_gpg_file }}'
> '{{ ovpn_tmp_dir }}/{{ ovpn_tar_file }}'
no_log: true
```
Все обращения к `{{ ovpn_passphrase }}` будут прозрачно расшифрованы.[1][2]
3. Запуск playbook с запросом vault‑пароля:
```bash
ansible-playbook site.yml --ask-vault-pass
```
Либо через файл пароля:
```bash
echo 'очень_длинный_vault_пароль' > ~/.ansible_vault_pass
chmod 600 ~/.ansible_vault_pass
ansible-playbook site.yml --vault-password-file ~/.ansible_vault_pass
```
## Шифрование существующих файлов
- Зашифровать уже существующий vars‑файл:
```bash
ansible-vault encrypt group_vars/all/vault.yml
```
- Расшифровать (если надо отредактировать вне Vault):
```bash
ansible-vault decrypt group_vars/all/vault.yml
```
- Редактировать «на месте» (без decrypt/encrypt вручную):
```bash
ansible-vault edit group_vars/all/vault.yml
```
## Точечное шифрование переменной (encrypt_string)
Когда не хочется шифровать весь файл, можно зашифровать только строку:
```bash
ansible-vault encrypt_string --name 'ovpn_passphrase'
```
Дальше вводишь пароль Vault, затем значение секрета, Ctrl+D. На выходе получишь блок вида:
```yaml
ovpn_passphrase: !vault |
$ANSIBLE_VAULT;1.1;AES256
323134343935383935633863643637343332383061346166...
```
Этот блок вставляешь в обычный vars‑файл.[4][5][6]
## Практические советы
- Пароли/ключи всегда храни в Vault или внешнем секрет‑менеджере, ни одного пароля в чистом YAML.[7][8][9]
- На всех задачах, которые используют секреты (пароли БД, GPG‑пароли и т.п.), ставь `no_log: true`, чтобы они не попадали в stdout/лог Ansible.[10][2]
- Файл с vault‑паролем (`--vault-password-file`) не коммить в git; держать его только локально/в CI‑секретах.[8][7]
Если покажешь структуру своего репозитория (roles/, group_vars/, host_vars/), можно сразу накидать готовую схему `vault.yml` под твои ovpn/gpg/docker‑секреты.
[1](https://www.digitalocean.com/community/tutorials/how-to-use-vault-to-protect-sensitive-ansible-data)
[2](https://docs.ansible.com/ansible/latest/vault_guide/index.html)
[3](https://docs.ansible.com/ansible/latest/cli/ansible-vault.html)
[4](https://www.freekb.net/Article?id=2426)
[5](https://docs.ansible.com/ansible/latest/vault_guide/vault_encrypting_content.html)
[6](https://stackoverflow.com/questions/55849706/ansible-vault-encrypt-string)
[7](https://spacelift.io/blog/ansible-vault)
[8](https://teachmeansible.com/blog/ansible-vault-secrets-management)
[9](https://betterstack.com/community/guides/linux/ansible-secrets/)
[10](https://www.automatesql.com/blog/what-is-inline-vault-encryption-a-guide-to-using-ansibe-vault-encrypt_string)
[11](https://www.youtube.com/watch?v=JUybKMSUcqI)
[12](https://www.youtube.com/watch?v=-W_VuYt_qQw)
[13](https://www.youtube.com/watch?v=xeBnAbmt3Wk)
[14](https://www.youtube.com/watch?v=DueHdN23TcM)
[15](https://svenvg.com/posts/ansible-essentials-managing-secrets-with-vault/)
[16](https://docs.ansible.com/ansible/2.8/user_guide/vault.html)
[17](https://dev.to/lovestaco/managing-secrets-in-ansible-with-vault-3481)
[18](https://www.reddit.com/r/ansible/comments/10f9foy/new_to_ansible_how_do_i_use_vault/)
[19](https://www.reddit.com/r/ansible/comments/15fcjjp/is_there_any_point_in_using_vault_to_secure/)
[20](https://www.env0.com/blog/protecting-secrets-with-ansible-vault)