리포지토리에서 Terraform 템플릿 및 모듈 사용하기
Schematics 및 Terraform은 다양한 리포지토리 유형에서 Terraform 템플릿 및 모듈 다운로드를 지원합니다: Terraform 레지스트리, GitHub, GitLab, S3/COS 버킷, IBM 카탈로그, Artifactory 등이 있습니다. Terraform 문서의 모듈 소스 를 참조하십시오.
Schematics를 사용할 때 Terraform 플랜 또는 적용 조작을 수행하기 전에 Terraform 템플리트 및 모듈을 다운로드하는 것은 2단계프로세스입니다. 작업공간 작성 시 Schematics 는 사용자의 템플리트 및 하위 폴더의 임베디드 모듈을 포함하는 저장소만 복제합니다. 모듈 source 매개변수를 사용하여 참조되는 모듈은 작업공간 작성 시 다운로드되지 않습니다. 개인용 저장소의 템플리트/구성에
액세스하기 위한 신임 정보는 작업공간 작성 시 Schematics 에 전달되어야 합니다.
source 매개변수로 참조되는 모듈은 플랜 또는 적용 조작의 terraform init 단계 중에 다운로드됩니다. terraform init 명령은 템플리트 파일을 구문 분석하고 source 필드에서 참조하는 저장소에서 모듈을 다운로드합니다. 개인용 저장소에 상주하는 모듈에서는 Terraform에 추가 신임 정보를 전달해야 합니다. 이러한
신임 정보는 정의되어 Schematics에서 사용되는 신임 정보에 별도로 전달됩니다.
개인용 Git 저장소, IBM Cloud 카탈로그 또는 기타 저장소에서 모듈을 다운로드하기 위해 Terraform은 netrc 구성을 사용하여 필수 액세스 ID및 토큰을 전달하도록 지원합니다.
| 저장소 |
템플리트 공용 저장소 |
템플릿 개인 저장소 |
모듈 공개 저장소 |
모듈 개인 저장소 |
주석 |
|---|---|---|---|---|---|
| GitHub | 예 | Git 토큰-1 | 예 | Git 토큰-2 | |
| GitLab | 예 | Git 토큰-1 | 예 | Git 토큰-2 | |
| IBM GitLab | 예 | Git 토큰-1 | 예 | Git 토큰-2 | |
| Terraform.io | 아니오 | 아니오 | 예 | 해당사항 없음 |
- 작업 공간 생성 시간에 정의된 Git 토큰.
- Git 토큰은
netrc를 사용하여 정의됩니다.
Schematics를 사용하는 경우 모듈 신임 정보에 대한 netrc 지원은 __netrc__ 환경 변수를 사용하여 신임 정보를 전달하도록 구성할 수 있습니다. __netrc__ 환경 변수는 hostname, username 및 password 인수의 목록을 승인합니다. 환경 변수의 설정은 Schematics
명령행 및 APIs 을 사용하는 경우에만 지원됩니다. 구문은 JSON 페이로드 파일에서 env_values 매개변수를 사용하여
제공됩니다.
__netrc__은(는) 구문에 나열된 순서와 동일한 순서로 hostname, username 및 password을(를) 예상합니다.
__netrc__ 목록이 있는 env_values의 구문:
"env_values":[
{
"__netrc__":"[['example.com', 'user1', 'pass1']['example1.com', 'user2' , 'pass2']]"
}
]
템플리트와 함께 개인용 모듈 사용
Schematics은(는) 내부적으로 JSON 파일에 구성된 env_values을(를) 기반으로 .netrc 파일을 작성합니다. 다음은 명령줄 및 API를 통해 ‘ Schematics ’ 작업 공간을 생성하고 적용하기 위해 필요한 모든 파일을 복제하는 ‘ testexample.json ’ 예제 파일의 구문과 예시입니다.
설명이 포함된 구문:
{
"name": "<workspace_name>",
"shared_data": {
"region": "<region_name>"
},
"type": [
"<terraform_version>"
],
"description": "<description of the workspace>",
"template_repo": {
"url": "<your Git repository with the module>"
},
"template_data": [
{
"folder": ".",
"type": "<terraform_version>",
"env_values": [
{
"__netrc__":"[['<git repository>','<git username>','<git_password>']]"
}
]
}
]
}
netrc 페이로드가 있는 예제 testexample.json
{
"name": "testnetrcworkspaceexample",
"shared_data": {
"region": "us-south"
},
"type": [
"terraform_v1.4"
],
"description": "terraform workspace",
"template_repo": {
"url": "https://github.com/xxxx/test-template-private-module"
},
"template_data": [
{
"folder": ".",
"type": "terraform_v1.4",
"env_values": [
{
"__netrc__":"[['github.com','testuser','ghp_x0000000xxxxxxxx000000efZxxxxxxxV']]"
}
]
}
]
}
작업공간 작성 예제
ibmcloud schematics workspace new --file testexample.json
성공적인 작업공간 작성을 분석하려면 ibmcloud schematics workspace get --id WORKSPACE_ID 명령을 실행하고, 모듈의 모든 파일이 복제되어 작업공간에서 프로비저닝에 사용되는지 확인하려면 사용자 인터페이스를 사용하십시오.