2017-12-19 13 views
0

저는 Terraform으로 Azure에서 작업하고 있습니다. 모든 디렉토리 (디렉토리에는 특정 VM 코드가 있음)에서 액세스 할 수 있어야하는 하나의 variable.tf 파일을 사용하려면 충분히 모듈화되어야하는 방식으로 내 코드를 작성하고 싶습니다. common_variable.tf 파일과 db_servers, fe_servers, be_servers 등과 같은 일부 디렉토리가 있다고 가정 해 보겠습니다.이 디렉토리 내의 코드는 모든 디렉토리에서 한 레벨 위로 배치 된 common_variable.tf 파일을 사용합니다. 현재, 동일한 디렉토리에서 변수를 찾지 못하기 때문에 설치 프로그램에서 오류가 발생합니다. 어떻게 연결할 수 있습니까?terraform 디렉터리를 중앙화 된 변수에 연결합니다. 파일

오류 :

$ terraform init 
Initializing modules... 
- module.frontend_deploy 
- module.network 
Error getting plugins: module root: 
    module frontend_deploy.root: 17 error(s) occurred: 

* resource 'azurerm_storage_account.storage' config: unknown variable referenced: 'location'. define it with 'variable' blocks 
* resource 'azurerm_storage_account.storage' config: unknown variable referenced: 'dns_name'. define it with 'variable' blocks 
* resource 'azurerm_network_interface.nic' config: unknown variable referenced: 'location'. define it with 'variable' blocks 
* resource 'azurerm_public_ip.external_lb_pip' config: unknown variable referenced: 'location'. define it with 'variable' blocks 
* resource 'azurerm_virtual_machine.external_nginx' config: unknown variable referenced: 'location'. define it with 'variable' blocks 
* resource 'azurerm_lb.lb' config: unknown variable referenced: 'location'. define it with 'variable' blocks 
* resource 'azurerm_lb_rule.lb_rule' config: unknown resource 'azurerm_resource_group.wmic_rg' referenced in variable azurerm_resource_group.wmic_rg.name 
* resource 'azurerm_virtual_machine.external_nginx' config: unknown resource 'azurerm_resource_group.wmic_rg' referenced in variable azurerm_resource_group.wmic_rg.name 
* resource 'azurerm_virtual_machine.external_nginx' config: unknown resource 'azurerm_availability_set.external_nginx' referenced in variable azurerm_availability_set.external_nginx.id 
* resource 'azurerm_lb.lb' config: unknown resource 'azurerm_resource_group.wmic_rg' referenced in variable azurerm_resource_group.wmic_rg.name 
* resource 'azurerm_lb_backend_address_pool.backend_pool' config: unknown resource 'azurerm_resource_group.wmic_rg' referenced in variable azurerm_resource_group.wmic_rg.name 
* resource 'azurerm_lb_probe.lb_probe' config: unknown resource 'azurerm_resource_group.wmic_rg' referenced in variable azurerm_resource_group.wmic_rg.name 
* output 'vm_fqdn': unknown resource 'azurerm_public_ip.lbpip' referenced in variable azurerm_public_ip.lbpip.fqdn 
* resource 'azurerm_storage_account.storage' config: unknown resource 'azurerm_resource_group.wmic_rg' referenced in variable azurerm_resource_group.wmic_rg.name 
* resource 'azurerm_network_interface.nic' config: unknown resource 'azurerm_subnet.subnet' referenced in variable azurerm_subnet.subnet.id 
* resource 'azurerm_network_interface.nic' config: unknown resource 'azurerm_resource_group.wmic_rg' referenced in variable azurerm_resource_group.wmic_rg.name 
* resource 'azurerm_public_ip.external_lb_pip' config: unknown resource 'azurerm_resource_group.wmic_rg' referenced in variable azurerm_resource_group.wmic_rg.name 
+0

왜 n 오히려 그것을 통해 심볼릭 링크를 그냥? – ydaetskcoR

답변

1

init 명령의 경우는 azurerm 같은 백엔드를 구성 할 -backend-config 옵션을 사용할 수 있습니다.

당신은 하나의 값을 제공 할 수 있습니다

terraform init -backend-config="storage_account_name=abcd1234" 

아니면 파일의 경로 백엔드 설정 값을 포함 : 파일을 지정합니다 -var-file 옵션을 사용할 수 있습니다 plan를 들어

terraform init -backend-config=../shared_config.tfvars 

또는 apply 명령을 변수가 포함 된 변수 :

terraform plan -var-file=../common_variable.tf 
+0

저는 init 만 찾고 있습니다. 또한 모든 구성이 모듈화되기를 바랍니다. 예를 들어, db 서버, 응용 프로그램 서버 등은 서로 다른 디렉토리와 공통 자원을 한 단계 위로 가지게됩니다. 또한 두 개의 var.tf 파일, 하나는 서버 특정 값이 있고 다른 하나는 공통 리소스 값을가집니다. 이제 root 디렉토리에서 terraform (init, plan, apply)을 실행하면 네트워크, 리소스 그룹 등과 같은 일반적인 리소스뿐만 아니라 VM 특정 모듈을 호출해야합니다.이 작업을 수행하는 방법이 있습니까? –

+1

작고 구체적인 질문을하면 더 나은 도움을 얻을 수 있습니다. 여기서 저는 여러 곳에서 하나의 변수 파일을 참조하는 방법을 묻습니다. – duncanhall