- Домашнее задание состоит из обязательной части, которую нужно выполнить на провайдере Yandex Cloud, и дополнительной части в AWS (выполняется по желанию).
- Все домашние задания в блоке 15 связаны друг с другом и в конце представляют пример законченной инфраструктуры.
- Все задания нужно выполнить с помощью Terraform. Результатом выполненного домашнего задания будет код в репозитории.
- Перед началом работы настройте доступ к облачным ресурсам из Terraform, используя материалы прошлых лекций и домашнее задание по теме «Облачные провайдеры и синтаксис Terraform». Заранее выберите регион (в случае AWS) и зону.
Что нужно сделать
- Создать пустую VPC. Выбрать зону.
- Публичная подсеть.
- Создать в VPC subnet с названием public, сетью 192.168.10.0/24.
- Создать в этой подсети NAT-инстанс, присвоив ему адрес 192.168.10.254. В качестве image_id использовать fd80mrhj8fl2oe87o4e1.
- Создать в этой публичной подсети виртуалку с публичным IP, подключиться к ней и убедиться, что есть доступ к интернету.
- Приватная подсеть.
- Создать в VPC subnet с названием private, сетью 192.168.20.0/24.
- Создать route table. Добавить статический маршрут, направляющий весь исходящий трафик private сети в NAT-инстанс.
- Создать в этой приватной подсети виртуалку с внутренним IP, подключиться к ней через виртуалку, созданную ранее, и убедиться, что есть доступ к интернету.
Resource Terraform для Yandex Cloud:
- Выполните команду, и установите необходимые параметры в .env файле
make copy-env-file
Узнать их можно при помощи команды
yc config list
- Запустите деплой
make all
Для соединения с VM используем команду
ssh ubuntu@external_ip
Для копирования приватного ключа на VM с публичным адресом
scp -i ~/.ssh/id_rsa ~/.ssh/id_rsa ubuntu@external_ip:.ssh/id_rsa
После этого можно зайти с VM с публичным адресом в VM с приватным испольуя команду
ssh ubuntu@internal_ip
ПРОБЛЕМЫ
- Нет возможности создавать шлюз, его в интерфейсе просто нету даже в пробном варианте. Я даже ручками его создать не могу, а через terraform думаю тем более такого не будет.
- Не понятно, как пустить трафик из VM с приватной сетью другим способом, какие есть и где почитать? Мб не через шлюз, а через IP, но какой там прописывать? Перепробовал и внутренние и внешний.
Это необязательное задание. Его выполнение не влияет на получение зачёта по домашней работе.
Что нужно сделать
- Создать пустую VPC с подсетью 10.10.0.0/16.
- Публичная подсеть.
- Создать в VPC subnet с названием public, сетью 10.10.1.0/24.
- Разрешить в этой subnet присвоение public IP по-умолчанию.
- Создать Internet gateway.
- Добавить в таблицу маршрутизации маршрут, направляющий весь исходящий трафик в Internet gateway.
- Создать security group с разрешающими правилами на SSH и ICMP. Привязать эту security group на все, создаваемые в этом ДЗ, виртуалки.
- Создать в этой подсети виртуалку и убедиться, что инстанс имеет публичный IP. Подключиться к ней, убедиться, что есть доступ к интернету.
- Добавить NAT gateway в public subnet.
- Приватная подсеть.
- Создать в VPC subnet с названием private, сетью 10.10.2.0/24.
- Создать отдельную таблицу маршрутизации и привязать её к private подсети.
- Добавить Route, направляющий весь исходящий трафик private сети в NAT.
- Создать виртуалку в приватной сети.
- Подключиться к ней по SSH по приватному IP через виртуалку, созданную ранее в публичной подсети, и убедиться, что с виртуалки есть выход в интернет.
Resource Terraform:
Домашняя работа оформляется в своём Git репозитории в файле README.md. Выполненное домашнее задание пришлите ссылкой на .md-файл в вашем репозитории. Файл README.md должен содержать скриншоты вывода необходимых команд, а также скриншоты результатов. Репозиторий должен содержать тексты манифестов или ссылки на них в файле README.md.