Ответ 1
К сожалению, вы не можете получить такое "наследование", которое хотите достичь, потому что YAML "наследование" больше похоже на форму "слияния хэшей".
Развернув конфигурацию в точке, в которой вы используете псевдоним *default
, у вас есть:
foo_database:
server:
ip: 192.168.1.5
port: 2000
db_name: test
user:
name: root
password: root
Если вы используете хэши с теми же ключами после этого, они полностью перезапишут хеши, объявленные ранее, оставив вас (извините за форматирование):
foo_database:
server:
ip: 192.168.1.5
port: 2000
db_name: test
user:
name: root
password: root
Забастовкa >
server:
port: 2001
db_name: foo
user:
password: foo_root
Итак, в вашем случае, похоже, что, поскольку конфигурация не совсем то же самое, DRYing вашей конфигурации с использованием якорей и псевдонимов, вероятно, не подходит.
Дополнительные ссылки по этому вопросу ниже:
Изменить
Если вы действительно этого хотели, я думаю, что вы могли бы перенастроить свой YAML, как показано ниже, чтобы получить именно то, что вы хотите, но в вашем случае я бы сказал, что дополнительная обфускация не стоит того:
server_defaults: &server_defaults
ip: 192.168.1.5
port: 2000
user_defaults: &user_defaults
name: root
password: root
database: &default
server:
<<: *server_defaults
db_name: test
user:
<<: *user_defaults
foo_database:
<<: *default
server:
<<: *server_defaults
port: 2001
db_name: foo
user:
<<: *user_defaults
password: foo_root