Результатом выполнения скрипта будет вывод строки для вставки в Outline Manager, где вы найдете свой сервер под новым адресом со всеми настройками и ключами.
{'apiUrl':'https://1.1.1.1:11111/DFGKkVMKQ3-5FGDFLM','certSha256':'SDFGKDLFMGERSDFKMSDKLFMW'}
- Установите ansible и terraform
- Склонируйте репозиторий
- Установите ansible-galaxy collection install community.dns
- Возможно, необходимо будет выполнить требования по terraform (дополняется)
- Добавить публичный ключ, и создать два токена в hetzner cloud и hetzner dns
Не обязательно на hetzner. Главное что бы вы могли к нему подключиться с хоста с которого выполняете скрипт.
- Замените в
vars.yml
old_server_ip на необходимый - Закомментируйте первый task в
move_outline.yml
:
- name: Get old server IP address
shell: dig +short {{ old_server }}
changed_when: false
register: old_server_ip
- Выполните
terraform init
terraform apply
ansible-playbook move_outline.yml --extra-vars "new_server_ip=$(terraform output -raw new_server_ip)"
После выполнения верните значения в первоначальный вид. При последующем использовании просто выполняйте 3 этап.
- Выполните
terraform init
terraform apply
ansible-playbook new_move_outline.yml --extra-vars "new_server_ip=$(terraform output -raw new_server_ip)"
В дальнейшем используйте move_outline.yml
для переноса сервера.
Имейте ввиду, скрипт не удаляет старый сервер outline! Вам необходимо делать это самостоятельно после выполнения задачи.
-
Удалите файл
.tfstate
-
Выполните
terraform apply
ВНИМАНИЕ: Необходимо изменить имя сервера в
new_move_outline.tf
-
Выполните
ansible-playbook move_outline.yml --extra-vars "new_server_ip=$(terraform output -raw new_server_ip)"
- Получите вывод после выполнения и добавьте в Outline Manager. Убедитесь в корректном переносе.
- Зайдите в консоль hetzner и удалите старый сервер
- Добавить переиспользование. Terraform должен создавать новый сервер и удалять старый после подтверждения.
- Отказаться от
new_move_outline.yml
добавив операторif
в конфигурацию ansible - Есть проблема с повторным запуском terraform, из-за игнорирования файла состояния. При переиспользовании файл
.tfstate
необходимо каждый раз удалять. - Проблема имени сервера.