6.13. 추가 변수
설문 조사 변수를 전달하면 자동화 컨트롤러 내에서 추가 변수(extra_vars
)로 전달됩니다. 그러나 설문 조사와 마찬가지로 작업 템플릿에 추가 변수를 전달하면 인벤토리 및 프로젝트에서 전달되는 다른 변수를 덮어쓸 수 있습니다.
기본적으로 extra_vars
는 작업 템플릿의 추가 변수 섹션에 지정하지 않는 한 !safe
로 표시됩니다. 이는 작업 템플릿을 추가하거나 편집할 수 있는 충분한 권한이 있는 사용자만 추가할 수 있기 때문에 신뢰할 수 있습니다. 예를 들어 Jinja 대괄호는 문자열로 처리되므로 중첩된 변수가 프롬프트로 입력되면 확장되지 않습니다. 안전하지 않은 변수에 대한 자세한 내용은 안전하지 않은 변수 또는 원시 문자열을 참조하십시오.
작업 시작 API에 전달된 extra_vars
는 다음 중 하나에 해당하는 경우에만 적용됩니다.
- 활성화된 설문 조사의 변수에 해당합니다.
-
ask_variables_on_launch
가 True 로 설정됩니다.
예
debug = true
의 인벤토리에 대해 정의된 변수가 있습니다. 이 변수 debug = true
는 작업 템플릿 설문 조사에서 재정의할 수 있습니다.
전달한 변수를 재정의하지 않도록 하려면 설문 조사에 해당 변수를 재정의하여 포함해야 합니다. 인벤토리, 그룹, 호스트 수준에서 추가 변수를 정의할 수 있습니다.
ALLOW_JINJA_IN_EXTRA_VARS
매개변수를 지정하는 경우 자동화 실행 구성 의 ALLOW_JINJA_IN_EXTRA_VARS 변수 섹션을 참조하십시오.
작업 템플릿 추가 변수 사전은 설문 조사 변수와 병합됩니다.
다음은 YAML 및 JSON 형식의 extra_vars
의 몇 가지 간단한 예입니다.
- YAML 형식의 구성:
launch_to_orbit: true satellites: - sputnik - explorer - satcom
- JSON 형식의 구성:
{ "launch_to_orbit": true, "satellites": ["sputnik", "explorer", "satcom"] }
다음 표에서는 Ansible의 변수 우선순위와 비교하여 자동화 컨트롤러에서 변수 우선순위의 동작(계층 구조)을 설명합니다.
Ansible | 자동화 컨트롤러 |
---|---|
역할 기본값 | 역할 기본값 |
동적 인벤토리 변수 | 동적 인벤토리 변수 |
인벤토리 변수 | 자동화 컨트롤러 인벤토리 변수 |
인벤토리 | 자동화 컨트롤러 그룹 변수 |
인벤토리 | 자동화 컨트롤러 호스트 변수 |
플레이북 |
플레이북 |
플레이북 |
플레이북 |
호스트 팩트 | 호스트 팩트 |
등록된 변수 | 등록된 변수 |
팩트 설정 | 팩트 설정 |
플레이 변수 | 플레이 변수 |
play | (지원되지 않음) |
Play |
Play |
역할 및 포함 변수 | 역할 및 포함 변수 |
블록 변수 | 블록 변수 |
작업 변수 | 작업 변수 |
추가 변수 | 작업 템플릿 추가 변수 |
작업 템플릿 설문 조사 (기본값) | |
작업 시작 추가 변수 |
6.13.1. 작업 템플릿 다시 시작
작업을 수동으로 다시 시작하는 대신 launch_type
을 다시 시작하여 다시 시작할 수 있습니다
. 다시 시작 동작은 extra_vars
를 상속하지 않는다는 점에서 시작 동작과 다릅니다.
작업 다시 시작은 상속 논리를 거치지 않습니다. 다시 시작되는 작업에 대해 계산된 동일한 extra_vars
를 사용합니다.
예
extra_vars
없이 작업 템플릿을 시작하여 j1 이라는 작업이 생성됩니다. 그런 다음 작업 템플릿을 편집하고 extra_vars
를 추가합니다(예: "{ "hello": "world"}"
추가 ).
j1 을 다시 시작하면 j2 가 생성되지만 상속 논리가 없고 j1 에는 extra_vars가 없으므로 j2 에는 extra_vars
가 없습니다.
j1 생성 후 추가한 extra_vars
로 작업 템플릿을 시작하면 생성된 다시 시작 작업(j3)에 extra_vars가 포함됩니다. j3 을 다시 시작하면 j4 가 생성되고 extra_vars
도 포함됩니다.