Описание:
Одним из важных путей развития DevOps можно назвать методологию IaaC
(Infrastructure as a Code). Данная практика подразумевает хранение информации обо всей инфраструктуре в системе контроля версий. Настройки серверов, пользователи в системе и даже информация о созданных VM должны храниться в гите. Если придерживаться данной практики, можно получить достаточно много бонусов:
- работать с инфраструктурой как с кодом - делать
pull requests
, проверять изменения и так далее; - хранить историю изменений -
git log
; - описание инфраструктуры в гите по сути является документацией - вы быстро можете подключить нового сотрудника к проекту.
Практически во всех проектах используются внешние облачные сервисы. Например, CloudFlare
как CDN
и защита от DDoS
, Github
для хранения репозиториев, Google cloud
или Digital ocean
для создания виртуальных машин, Amazon route 53
как DNS
-сервер. Раньше практически все изменения в данных системах делались вручную - через веб-интерфейс. Такие действия были плохо автоматизируемыми и сложно повторяемыми. И их сложно было записать, что противоречит практике IaaC
.
Но вскоре большинство крупных облачных провайдеров реализовали внешнее API
(Application programming interface) для возможности управления сервисами программно.
Terraform
- программный продукт компании HashiCorp
, в котором реализованы методы взаимодействия с API
очень большого количества провайдеров, предоставляющих услуги IaaS
(Infrastructure as a Service) и SaaS (Software as a Service). Поэтому благодаря Terraform мы можем описывать необходимые нам ресурсы в конфигурационном файле, а Terraform сам создаст все необходимое в облачных сервисах.
Синтаксис у Terraform очень похож на знакомый вам JSON-формат данных, но все же отличается. В приведенных ниже ссылках есть вся информация, необходимая для выполнения задания.
Полезные ссылки:
- Пример использования Terraform в Enterprise
- Официальная документация по Terraform
- Скачать Terraform для различных ОС
- GitLab Provider
- deploy_key vs account ssh_key
- Команды terraform CLI
- How To Get Started With Terraform
- Открытый практикум Terraform
- DevOps 2018 #07: Terraform
- Мастер класс: Terraform
Задание:
Напишите конфигурационный файл для Terraform, который:
- создает репозиторий в вашем аккаунте на gitlab.rebrainme.com
- добавляет в параметры созданного репозитория публичный ключ для возможности совершения коммитов в него (скорее всего вам придётся сгенерировать новую ключевую пару).
- Загрузите в получившийся репозиторий конфигурационный файл terraform. Нет необходимости автоматизировать процесс, достаточно выполнить данную операцию вручную.
- В качестве ответа укажите ссылку на получившийся репозиторий.
ВНИМАНИЕ:
Крайне важно следить за тем, что вы коммитите в гит. Ни в коем случае нельзя помещать какие-либо ключи доступа, пароли и тому подобные данные в публичный репозиторий. Что из этого может получиться, вы можете прочитать здесь