Итак, теперь настраиваем Vault Agent на сервере (пошагово)
У нас на сервере уже должны лежать два файла из первого поста: `role-id` и `secret-id`. Теперь настраиваем самого агента. Он возьмет эти файлы, сходит в Vault и принесет готовый конфиг для твоего приложения.
Шаг 1. Кладем файлы в надежное место
Заходим на сервер по SSH. Создаем папку и перемещае туда файлы:
sudo mkdir -p /etc/vault
sudo mv role-id secret-id /etc/vault/
sudo chmod 600 /etc/vault/role-id /etc/vault/secret-id
(Команда chmod закрывает файлы от посторонних глаз)
Шаг 2. Создаем конфиг агента
Создаем файл с настройками. Он скажет агенту, куда подключаться и где искать файлы из Шага 1:
`sudo nano /etc/vault/agent-config.hcl`
Скопируем туда этот код (адрес `your-vault-server` заменим на свой):
vault {
address = "https://your-vault-server:8200"
}
auto_auth {
method "approle" {
config = {
role_id_file_path = "/etc/vault/role-id"
secret_id_file_path = "/etc/vault/secret-id"
}
}
sink "file" {
config = {
path = "/etc/vault/agent-token"
}
}
}
template {
source = "/etc/vault/app-config.tmpl"
destination = "/opt/myapp/config/application.yml"
command = "systemctl restart my-app"
}
Шаг 3. Создаем шаблон итогового файла
Агент не отдаст сырой JSON. Он соберет готовый файл настроек, который понимает приложение.
`sudo nano /etc/vault/app-config.tmpl`
Если у нас Spring Boot, пишем в шаблон это:
spring:
datasource:
username: {{ with secret "secret/data/myapp/db" }}{{ .Data.data.username }}{{ end }}
password: {{ with secret "secret/data/myapp/db" }}{{ .Data.data.password }}{{ end }}
(Агент сам подставит сюда логин и пароль из Vault).
Шаг 4. Проверяем работу (тест)
Сначала запустим агента вручную, чтобы убедиться, что всё работает:
`sudo vault agent -config=/etc/vault/agent-config.hcl`
Если в консоли нет ошибок, агент создал файл. Проверим его:
`sudo cat /opt/myapp/config/application.yml`
Мы должены увидеть там настоящий логин и пароль. Чтобы остановить тест, нажми `Ctrl+C`.
Шаг 5. Запускаем навсегда (как службу)
Чтобы агент работал сам, даже если закроем терминал, создадим сервис для Linux:
`sudo nano /etc/systemd/system/vault-agent.service`
Скопируем туда:
[Unit]
Description=HashiCorp Vault Agent
After=network-online.target
[Service]
ExecStart=/usr/bin/vault agent -config=/etc/vault/agent-config.hcl
Restart=on-failure
[Install]
WantedBy=multi-user.target
```
Активируем и запускаем:
sudo systemctl daemon-reload
sudo systemctl enable vault-agent
sudo systemctl start vault-agent
Проверить, что агент жив, можно командой `sudo systemctl status vault-agent`.
Посмотреть логи: `sudo journalctl -u vault-agent -f`.