지금까지는 각 매개 변수가 명시 적으로 호출 된 database.yml 만 사용했으며 아래 파일에서 이해할 수없는 문자가 사용되었습니다. 각 줄과 기호 (&, *, <<)는 무엇을 의미합니까?이 파일을 어떻게 읽습니까?
development: &default
adapter: postgresql
database: dev_development
test: &test
<<: *default
database: test_test
cucumber:
<<: *test
production:
<<: *default
database: test_production
답변
&
(귀하의 예제에서 마크 노드의 별명 &default
별명 “기본”으로 개발 노드)와 *
참조 이름이 “기본”으로 별칭 노드입니다. 은 <<:
해당 노드의 내용을 삽입합니다.
여기에서 YAML 사양을 인용하십시오.
반복 노드 (오브젝트)는 먼저 앵커 (앰퍼샌드 ( “&”로 표시)로 식별 한 다음 별명 ( “*”로 표시)를 나타냅니다.
예를 들어
development: &default
adapter: postgresql
database: dev_development
test: &test
<<: *default
database: test_test
실제로 확장
development: &default
adapter: postgresql
database: dev_development
test: &test
adapter: postgresql # from the "default" alias
database: test_test # overridden by the duplicate key
동시에 “test”노드를 별명 “test”로 사용할 수있게하십시오.
자세한 내용 은 YAML 사양 -2.2 구조 를 참조하십시오 (또는 심지어 moar docs ++가 필요한 경우 : 3.2.2.2. 앵커 및 별칭 )
답변
&default
나중에 사용할 수 있도록이 속성 집합에 이름을 레이블로 지정했음을 의미합니다.
<<: *default
기본으로 분류 된 그룹의 모든 속성을 포함 함을 의미합니다.
답변
답변
동일한 설정을 반복해서 반복하지 않고도 환경을 참조 할 수있는 방법입니다 (건조).
test: &test
<<: *default
&test
특정 설정에 대한 참조를 만듭니다.
<<: *default
테스트에 기본 설정을 사용한다고 말합니다.
cucumber:
<<: *test
이제 우리는 cucumber
의 설정을 사용하고 싶다는 것을 알고 있습니다 test
.
답변
간단히 말해서,이 개념은 기본 클래스와 파생 클래스와 유사합니다.
기본 클래스 템플릿에서 ‘&’로 모든 공통 세부 사항을 언급하므로 이러한 필드가 필요한 다른 yaml 섹션을 확장하는 데 사용할 수 있습니다. 이제이 ‘기본 클래스’유형 구조의 구성 값으로 구성된 다른 섹션을 작성할 때 기본 클래스 앵커와 함께 ‘*’를 사용하십시오 (예 : ‘&’로 시작하는 섹션). 실제로 ‘기본 클래스’섹션을 배치하기 위해 ‘<< :’을 yaml 개념으로 사용하므로 나중에 재정의 할 수 있습니다.
vsm:
stub_nsx_mgr: &MGR_CTRL_STUB
username: ADMIN
password: $DEFAULT_PASSWORD
deployment: ovf
build: $PR_BUILD
vmnics:
- network: $MANAGEMENT_NETWORK_0
vc: vc_0
ovf_options:
- --diskMode=$DISKMODE
- --deploymentOption=$DEPLOYMENT_OPTION
$MGR_0:
<<: *MGR_CTRL_STUB
ovf_path_regex: 'appliance.*\.ovf'
ovf_options:
- --diskMode=$DISKMODE
- --deploymentOption=$DEPLOYMENT_OPTION
$CTRL_0:
<<: *MGR_CTRL_STUB
ovf_options:
- --diskMode=$DISKMODE
- --allowExtraConfig
$CTRL_1:
*MGR_CTRL_STUB
그러나 확장 필드를 무시하지 않으려면 ‘<< :’를 건너 뛸 수 있습니다.