2.8. Jinja2 렌더링
/usr/share/openstack-tripleo-heat-templates
의 코어 Heat 템플릿에는 j2.yaml
확장자로 끝나는 많은 파일이 포함되어 있습니다. 이러한 파일에는 Jinja2 템플릿 구문이 포함되어 있으며 director는 이러한 파일을 .yaml
로 끝나는 정적 Heat 템플릿에 렌더링합니다. 예를 들어 기본 overcloud.j2.yaml
파일은 overcloud.yaml
에 렌더링됩니다. director는 생성된 overcloud.yaml
파일을 사용합니다.
Jinja2 지원 Heat 템플릿은 Jinja2 구문을 사용하여 반복적인 값에 대한 매개 변수와 리소스를 생성합니다. 예를 들어 overcloud.j2.yaml
파일에는 다음 스니펫이 포함되어 있습니다.
director가 Jinja2 구문을 렌더링하면 director가 roles_data.yaml
파일에 정의된 역할을 반복하고 {{role.name}}Count
매개 변수를 역할 이름으로 채웁니다. 기본 roles_data.yaml
파일에는 5개의 역할이 포함되어 있으며, 결과적으로 이 예제에서 다음 매개변수가 생성됩니다.
-
ControllerCount
-
ComputeCount
-
BlockStorageCount
-
ObjectStorageCount
-
CephStorageCount
렌더링된 매개변수의 예는 다음과 같습니다.
director는 핵심 Heat 템플릿 디렉터리 내에서 Jinja2 지원 템플릿과 환경 파일만 렌더링합니다. 다음 사용 사례에서는 Jinja2 템플릿을 렌더링하는 올바른 방법을 보여줍니다.
사용 사례 1: 기본 코어 템플릿
template 디렉터리: /usr/share/openstack-tripleo-heat-templates/
환경 파일: /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.j2.yaml
director는 기본 코어 템플릿 위치(--templates
)를 사용합니다. director는 network-isolation.j2.yaml 파일을 network
-isolation.yaml
로 렌더링합니다. openstack overcloud deploy
명령을 실행하는 경우 -e
옵션을 사용하여 렌더링된 network-isolation.yaml
파일의 이름을 포함합니다.
openstack ovecloud deploy --templates \ -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml
$ openstack ovecloud deploy --templates \
-e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml
...
사용 사례 2: 사용자 정의 코어 템플릿
템플릿 디렉터리: /home/stack/tripleo-heat-templates
환경 파일: /home/stack/tripleo-heat-templates/environments/network-isolation.j2.yaml
director는 사용자 지정 코어 템플릿 위치(--templates /home/stack/tripleo-heat-templates
)를 사용합니다. director는 사용자 지정 코어 템플릿 내에서 network-isolation.j2.yaml
파일을 network-isolation.yaml
에 렌더링합니다. openstack overcloud deploy
명령을 실행하는 경우 -e
옵션을 사용하여 렌더링된 network-isolation.yaml
파일의 이름을 포함합니다.
openstack ovecloud deploy --templates /home/stack/tripleo-heat-templates \ -e /home/stack/tripleo-heat-templates/environments/network-isolation.yaml
$ openstack ovecloud deploy --templates /home/stack/tripleo-heat-templates \
-e /home/stack/tripleo-heat-templates/environments/network-isolation.yaml
...
활용 사례 3: 사용 올바르지 않음
template 디렉터리: /usr/share/openstack-tripleo-heat-templates/
환경 파일: /home/stack/tripleo-heat-templates/environments/network-isolation.j2.yaml
이 director는 사용자 지정 코어 템플릿 위치(--templates /home/stack/tripleo-heat-templates
)를 사용합니다. 그러나 선택한 network-isolation.j2.yaml
은 사용자 지정 코어 템플릿 내에 없으므로 network-isolation.yaml
로 렌더링 되지 않습니다. 이로 인해 배포가 실패합니다.