# Домашнее задание к занятию "7.4. Средства командной работы над инфраструктурой." ## Задача 1. Настроить terraform cloud (необязательно, но крайне желательно). В это задании предлагается познакомиться со средством командой работы над инфраструктурой предоставляемым разработчиками терраформа. 1. Зарегистрируйтесь на [https://app.terraform.io/](https://app.terraform.io/). (регистрация бесплатная и не требует использования платежных инструментов). 1. Создайте в своем github аккаунте (или другом хранилище репозиториев) отдельный репозиторий с конфигурационными файлами прошлых занятий (или воспользуйтесь любым простым конфигом). 1. Зарегистрируйте этот репозиторий в [https://app.terraform.io/](https://app.terraform.io/). 1. Выполните plan и apply. В качестве результата задания приложите снимок экрана с успешным применением конфигурации. ## Ответ 1. ![](https://i.imgur.com/X2jIxpu.png) ![](https://i.imgur.com/J6Sqsmh.png) ![](https://i.imgur.com/TpO2rtd.png) ## Задача 2. Написать серверный конфиг для атлантиса. Смысл задания – познакомиться с документацией о [серверной](https://www.runatlantis.io/docs/server-side-repo-config.html) конфигурации и конфигурации уровня [репозитория](https://www.runatlantis.io/docs/repo-level-atlantis-yaml.html). Создай `server.yaml` который скажет атлантису: 1. Укажите, что атлантис должен работать только для репозиториев в вашем github (или любом другом) аккаунте. 1. На стороне клиентского конфига разрешите изменять `workflow`, то есть для каждого репозитория можно будет указать свои дополнительные команды. 1. В `workflow` используемом по-умолчанию сделайте так, что бы во время планирования не происходил `lock` состояния. Создай `atlantis.yaml` который, если поместить в корень terraform проекта, скажет атлантису: 1. Надо запускать планирование и аплай для двух воркспейсов `stage` и `prod`. 1. Необходимо включить автопланирование при изменении любых файлов `*.tf`. В качестве результата приложите ссылку на файлы `server.yaml` и `atlantis.yaml`. ## Ответ 2. https://github.com/Vahhhh/devops-netology/blob/master/terraform/lesson_4/atlantis.yaml https://github.com/Vahhhh/devops-netology/blob/master/terraform/lesson_4/server.yaml В целом понял, но без практики не до конца понятно, нормально ли если указаны не все параметры (вроде в инструкции было написано что и без конфига все по-дефолту работает, значит наверно так норм) Но если нет - готов переделать на правильный вариант. ## Задача 3. Знакомство с каталогом модулей. 1. В [каталоге модулей](https://registry.terraform.io/browse/modules) найдите официальный модуль от aws для создания `ec2` инстансов. 2. Изучите как устроен модуль. Задумайтесь, будете ли в своем проекте использовать этот модуль или непосредственно ресурс `aws_instance` без помощи модуля? 3. В рамках предпоследнего задания был создан ec2 при помощи ресурса `aws_instance`. Создайте аналогичный инстанс при помощи найденного модуля. В качестве результата задания приложите ссылку на созданный блок конфигураций. ## Ответ 3. 1. https://registry.terraform.io/modules/terraform-aws-modules/ec2-instance/aws/latest 2. Судя по лекции - наверно буду следовать рекомендациям более опытных коллег и использовать не буду. Разницу, например, с https://github.com/terraform-aws-modules/terraform-aws-vpc/blob/master/main.tf вижу, но пойму наверно только при применении. Я так понял, что модули это что-то вроде функции в прогаммировании (тоже её используют когда необходимо повторение одного и того же несколько раз) 3. https://github.com/Vahhhh/devops-netology/tree/master/terraform/lesson_4 Тут 3 файла - main.tf , outputs.tf и versions.tf