- Скачайте и установите актуальную версию terraform >=1.4.X . Приложите скриншот вывода команды terraform --version.
- Перейдите в каталог src. Скачайте все необходимые зависимости, использованные в проекте.
- Изучите файл .gitignore. В каком terraform файле согласно этому .gitignore допустимо сохранить личную, секретную информацию?
personal.auto.tfvars
- Выполните код проекта. Найдите в State-файле секретное содержимое созданного ресурса random_password, пришлите в качестве ответа конкретный ключ и его значение.
"result": "OImGgw8PDWu7NRRu"
- Раскомментируйте блок кода, примерно расположенный на строчках 29-42 файла main.tf. Выполните команду terraform validate. Объясните в чем заключаются намеренно допущенные ошибки? Исправьте их.
on main.tf line 28, in resource "docker_container" "1nginx": - Имя должно начинаться с буквы или символа подчеркивания и может содержать только буквы, цифры, символы подчеркивания и дефисы. on main.tf line 23, in resource "docker_image": - Все блоки ресурсов должны иметь 2 метки (тип, имя). on main.tf line 30, in resource "docker_container" "nginx": 30: name = "example_${random_password.random_string_FAKE.resulT}" - Управляемый ресурс «random_password» «random_string_FAKE» не был объявлен в корневом модуле.
- Выполните код. В качестве ответа приложите вывод команды
docker ps
root@devnet:~/ter-homeworks/01/src# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cd095bc471ee 021283c8eb95 "/docker-entrypoint.…" 40 seconds ago Up 39 seconds 0.0.0.0:8000->80/tcp example_OImGgw8PDWu7NRRu
root@devnet:~/ter-homeworks/01/src#
- Замените имя docker-контейнера в блоке кода на hello_world, выполните команду terraform apply -auto-approve. Объясните своими словами, в чем может быть опасность применения ключа -auto-approve? В качестве ответа дополнительно приложите вывод команды docker ps.
terraform apply -auto-approve - Применение нового плана конфигурации без запроса подтверждения, риск непредсказуемых изменений конфигурации.
root@devnet:~/ter-homeworks/01/src# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- Уничтожьте созданные ресурсы с помощью terraform. Убедитесь, что все ресурсы удалены. Приложите содержимое файла terraform.tfstate.
{
"version": 4,
"terraform_version": "1.5.2",
"serial": 63,
"lineage": "00d1ffe6-a1c5-daff-24f8-4e4df3a83b73",
"outputs": {},
"resources": [],
"check_results": null
}
- Объясните, почему при этом не был удален docker образ nginx:latest ? Ответ подкрепите выдержкой из документации провайдера.
keep_locally (логическое значение) Если true, образ Docker не будет удален при операции уничтожения.
Если это неверно, он удалит образ из локального хранилища докера при операции уничтожения.
- Изучите в документации provider Virtualbox от shekeriev.
- Создайте с его помощью любую виртуальную машину. Чтобы не использовать VPN советуем выбрать любой образ с расположением в github из списка
В качестве ответа приложите plan для создаваемого ресурса и скриншот созданного в VB ресурса.
sudo terraform plan
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following
symbols:
+ create
Terraform will perform the following actions:
# virtualbox_vm.vm1 will be created
+ resource "virtualbox_vm" "vm1" {
+ cpus = 1
+ id = (known after apply)
+ image = "https://app.vagrantup.com/shekeriev/boxes/debian-11/versions/0.2/providers/virtualbox.box"
+ memory = "512 mib"
+ name = "debian-111"
+ status = "running"
+ user_data = jsonencode(
{
+ foo = "bar"
+ role = "worker"
}
)
+ network_adapter {
+ device = "IntelPro1000MTDesktop"
+ host_interface = "vboxnet0"
+ ipv4_address = (known after apply)
+ ipv4_address_available = (known after apply)
+ mac_address = (known after apply)
+ status = (known after apply)
+ type = "hostonly"
}
}
Plan: 1 to add, 0 to change, 0 to destroy.
Changes to Outputs:
+ IPAddress = (known after apply)
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Note: You didn't use the -out option to save this plan, so Terraform can't guarantee to take exactly these actions if you run
"terraform apply" now.
Созданный VB ресурс