2016-10-10 2 views
1

Я пытаюсь использовать kitchen-terraform, чтобы проверить модуль терраформирования, который я строю. Этот конкретный модуль представляет собой небольшую часть в более крупной инфраструктуре. Это зависит от того, какие части сети доступны, а затем будет использоваться позже, чтобы развернуть дополнительные серверы и еще много чего.Настройка дополнительного контекста с кухней-терраформой

Мне любопытно, есть ли способ с терракотой для кухни, чтобы создать часть инфраструктуры перед тестируемым модулем, а также добавить некоторые дополнительные части, которые не являются частью самого модуля.

В этом конкретном случае модуль создает новый VPC с некоторыми пиринговыми соединениями с существующими VPC, группами безопасности и подсетями. Я хочу проверить правильность установки пиринговых соединений, а также развернуть некоторые экземпляры ec2 для проверки состояния сети.

Есть ли у кого-нибудь примеры чего-то подобного?

ответ

3

Мне интересно, если есть способ, с кухней-терраформировать создать некоторые части инфраструктуры до модуля при тестовых прогонах и также добавить несколько дополнительных деталей, которые не являются частью модуля правильного.

Вы можете сделать все это. Ваш .kitchen.yml будет указать, где код Terraform существует, чтобы выполнить здесь:

provisioner: 
    name: terraform 
    directory: path/to/terraform/code 
    variable_files: 
    - path/to/terraform/variables.tfvars 

Более конкретно, создать в тестовом месте, которое строит всю инфраструктуру, которую вы хотите, в том числе модулей с main.tf. Порядок выполнения будет контролироваться зависимостями самих ресурсов.

Предполагая, что вы тестируете в том же репо в качестве модуля, может организовать что-то вроде этого:

├── .kitchen.yml 
├── Gemfile 
├── Gemfile.lock 
├── README.md 
├── terraform 
│   ├── my_module 
│      ├── main.tf 
│      └── variables.tf 
├── test 
   ├── main.tf 
   └── terraform.tfvars 

Фактическое .kitchen.yml будет включать в себя следующее:

provisioner: 
    name: terraform 
    directory: test 
    variable_files: 
    - test/variables.tfvars 
    variables: 
    access_key: <%= ENV['AWS_ACCESS_KEY_ID'] %> 
    secret_key: <%= ENV['AWS_SECRET_ACCESS_KEY'] %> 

И ваш test/main.tf будет экземпляр модуля наряду с любым другим тестируемым кодом.

provider "aws" { 
    access_key = "${var.access_key}" 
    secret_key = "${var.secret_key}" 
    region = "${var.region}" 
} 

... 

module "my_module" { 
    name = "foo" 
    source = "../terraform/my_module" 
... 
} 

resource "aws_instance" "test_instance_1" { 
... 
} 
Смежные вопросы