# Terraform Mega
**Инструкция по установке Terraform и Terragrunt**
1. Скачать дистрибутив Terraform для вашей платформы из зеркала [Yandex Cloud](https://hashicorp-releases.website.yandexcloud.net/terraform/) под вашу систему. 

   1.1 Скачать дистрибутив Terragrunt для вашей платформы из [Git репозитория](https://github.com/gruntwork-io/terragrunt/releases) под вашу систему
2. Положить бинарники в удобное место
3. Добавить в переменную PATH путь к папке установки:
 - для Linux систем команда `export PATH=$PATH:/path/to/install`
 - для Windows 
    - Windows 10 и Windows 8
       - В строке "Поиск" выполните поиск: Система (Панель управления)
       - Нажмите на ссылку Дополнительные параметры системы.
       - Нажмите Переменные среды. В разделе Переменные среды выберите переменную среды PATH. Нажмите Изменить. Если переменной PATH не  существует, нажмите Создать.
       - В окне Изменение системной переменной (или Новая системная переменная) укажите значение переменной среды PATH путь до установки terraform. Нажмите ОК.
       - Закройте остальные открытые окна, нажимая ОК.
       - Откройте заново окно командной строки и выполните `terraform version`
    - Windows 7
       - На рабочем столе правой кнопкой нажмите на значок Компьютер.
       - В контекстном меню выберите Свойства.
       - Нажмите на ссылку Дополнительные параметры системы.
       - Нажмите Переменные среды. В разделе Переменные среды выберите переменную среды PATH. Нажмите Изменить. Если переменной PATH не существует, нажмите Создать.
       - В окне Изменение системной переменной (или Новая системная переменная) укажите значение переменной среды PATH путь до установки terraform. Нажмите ОК. Закройте остальные открытые окна, нажимая ОК.
       - Откройте заново окно командной строки и выполните `terraform version`

4. Для возможности использования зеркал Yandex при скачивании модулей terraform необходимо создать файл .terraformrc
    - Для Linux в терминал достаточно вставить:

```shell
cat << EOF >> ~/.terraformrc
provider_installation {
  network_mirror {
    url = "https://terraform-mirror.yandexcloud.net/"
    include = ["registry.terraform.io/*/*"]
  }
  direct {
    exclude = ["registry.terraform.io/*/*"]
  }
} 
EOF
```
- Для Windows
    - Откройте папку %APPDATA% (Пуск - выполнить - `%APPDATA%` - ОК)
    - Создайте в %APPDATA% файл terraform.rc
    - Добавьте в него данный блок:
```shell
provider_installation {
  network_mirror {
    url = "https://terraform-mirror.yandexcloud.net/"
    include = ["registry.terraform.io/*/*"]
  }
  direct {
    exclude = ["registry.terraform.io/*/*"]
  }
}
```

**Инструкция по установке Yandex CLI**
- Для Linux - `curl -sSL https://storage.yandexcloud.net/yandexcloud-yc/install.sh | bash`
    - После завершения установки перезапустите командную оболочку.
- Для Windows
    - Откройте Windows Power Shell (Пуск - Поиск - Windows Power Shell)
    - Введите `iex (New-Object System.Net.WebClient).DownloadString('https://storage.yandexcloud.net/yandexcloud-yc/install.ps1')`
    - Скрипт установки спросит, нужно ли добавить путь до yc в переменную PATH:
        `Add yc installation dir to your PATH? [Y/n]`
      Введите Y. После этого CLI Yandex Cloud можно пользоваться, командную оболочку перезапускать не нужно.

Неинтерактивная установка - https://cloud.yandex.ru/docs/cli/operations/install-cli

**Переменные Yandex CLI для Linux**
```
export YC_TOKEN=$(yc iam create-token); \
export YC_CLOUD_ID=$(yc config get cloud-id); \
export YC_FOLDER_ID=$(yc config get folder-id)
```
Для Windows можно настроить аналогично шагу 3 инструкции установки Terraform, добавив три переменные и их значения вручную
```
YC_TOKEN
YC_CLOUD_ID
YC_FOLDER_ID
```
Где взять значения переменных описано ниже, либо можно выполнить команды
```
yc iam create-token 
yc config get cloud-id
yc config get folder-id
```
соответственно, если установлен Yandex CLI

**Получение токенов**
1. В браузере откройте [ссылку](https://oauth.yandex.ru/authorize?response_type=token&client_id=1a6990aa636648e9b2ef855fa7bec2fb)
2. Для получения folder_id откройте [страницу консоли](https://console.cloud.yandex.ru/), в адресной строке браузера будет указан id после /folder/
3. cloud_id вы получите во время интенсива
