Проще говоря, это понятие напоминает базовый и производный класс.
В шаблоне базового класса вы упоминаете все общие детали с помощью '&', что означает, что его можно использовать для расширения другого раздела 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
Но если вы не хотите переопределять расширенные поля, вы можете пропустить '<<:'