TRYTRAVIS bl33d Infra repository o
- Были добавлены плейбуки reddit_app_one_play.yml / reddit_app_multiple_plays.yml / site.yml (разный уровень декомпозиции) для разворачивания приложения Reddit
- Были добавлены плейбуки packer_db.yml и packer_app.yml, заменяющие собой ранее написанные bash скрипты
- Были пересобраны образы app и db
Теперь выполните ansible app -m command -a 'rm -rf ~/reddit' и проверьте еще раз выполнение плейбука. Что изменилось и почему? Добавьте информацию в README.md
Когда мы запускали playbook clone.yml сразу после вызова модуля git, система уже находилась в заданном состоянии и ansible не произвел никаких изменений. После удаления каталога ~/reddit ansible склонировал репозиторий и на выходе мы получили changed=1.
- Деплой Reddit вынесен в модуль app, а mongodb в модуль db
- Созданы два каталога: prod и stage
- Для prod окружения настроен S3 backend в бакете яндекса
- В модулях настроены провиженеры, которые донастраивают mongodb и reddit app
- Установлен Terraform
- Настроен провайдер Yandex.Cloud
- Описан ресурс Compute Instance, разворачивающий Reddit App
- Код параметризирован
- Внешний адрес вынесен в Outputs
- Описан load-balancer для одного инстанса
- Количество инстансов увеличено до двух, это сделано через мета-параментр count и динамический блок с использованием for_each
- Установлен пакер
- Создан сервисный аккаунт в YC
- Создан шаблон reddit-base образа
- Часть параметров шаблона параметризированы
- Создан шаблон для bake-образа reddit-full
- Написан скрипт запускающий создание ВМ с bake-образом
testapp_IP = 84.201.157.229 testapp_port = 9292
yc compute instance create \
--name reddit-app \
--hostname reddit-app \
--memory=4 \
--create-boot-disk image-folder-id=standard-images,image-family=ubuntu-1604-lts,size=10GB \
--network-interface subnet-name=default-ru-central1-a,nat-ip-version=ipv4 \
--metadata serial-port-enable=1,ssh-keys="ubuntu:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDmY1Y+TWSK5hjzZpda8w34c0CXPUYK7QPSpYavE0G02YGNp8XOx9/yWaCwcpTPYhDtoyvB1St4ANd+u3Dl7vaTaItMJb0KCIv5WC3qB0Av0tC7Ejv3eEJtKh29dWTwtwH/l5dHR0Lar8hU21vX4WUF6lnSMg6YKAiq4YZXHz4+EhcG+duY+UIYRuC/6x8bI6sD18A6zwNPGkm0mK2gY6wBzqGXN+qEyOt+tFlDzld4p2QYW28vhTEdDqeo/pSBBku83Ag2+sUiyNjJ2zVccX4g/p1hzw+/dgYuNVttDqTF/BrzFxpcd9+BmZaWUHP4ccHIl5EQzbINQbmQuFlSLga9 appuser" \
--metadata-from-file user-data=install_reddit_app.sh
yc compute instance create \
--name reddit-app \
--hostname reddit-app \
--memory=4 \
--create-boot-disk image-folder-id=standard-images,image-family=ubuntu-1604-lts,size=10GB \
--network-interface subnet-name=default-ru-central1-a,nat-ip-version=ipv4 \
--metadata serial-port-enable=1 \
--metadata-from-file user-data=install_reddit_app.yaml
bastion_IP = 84.201.133.173 someinternalhost_IP = 10.130.0.4
localworksation -> bastion -> someinternalhost
Несколько различных вариантов подключения по ssh с localwokrstation на someinternalhost в одну команду:
ssh -i ~/.ssh/appuser -At [email protected] ssh [email protected]
-t Force pseudo-terminal allocation.
ssh -i ~/.ssh/appuser -J [email protected] [email protected]
-J Connect to the target host by first making a ssh connection to the jump host described by destination and then establishing a TCP forwarding to the ultimate destination from there. Multiple jump hops may be specified separated by comma characters. This is a shortcut to specify a ProxyJump configuration directive.
Host bastion
HostName 84.201.133.173
User appuser
IdentityFile ~/.ssh/appuser
Host someinternalhost
HostName 10.130.0.4
User appuser
IdentityFile ~/.ssh/appuser
ForwardAgent yes
ProxyJump bastion
ssh someinternalhost