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
파일에는 다음 스니펫이 포함되어 있습니다.
parameters: ... {% for role in roles %} ... {{role.name}}Count: description: Number of {{role.name}} nodes to deploy type: number default: {{role.CountDefault|default(0)}} ... {% endfor %}
director가 Jinja2 구문을 렌더링하면 director가 roles_data.yaml
파일에 정의된 역할을 반복하고 {{role.name}}Count
매개 변수를 역할 이름으로 채웁니다. 기본 roles_data.yaml
파일에는 5개의 역할이 포함되어 있으며, 결과적으로 이 예제에서 다음 매개변수가 생성됩니다.
-
ControllerCount
-
ComputeCount
-
BlockStorageCount
-
ObjectStorageCount
-
CephStorageCount
렌더링된 매개변수의 예는 다음과 같습니다.
parameters: ... ControllerCount: description: Number of Controller nodes to deploy type: number default: 1 ...
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 ...
사용 사례 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 ...
활용 사례 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
로 렌더링 되지 않습니다. 이로 인해 배포가 실패합니다.