Вы можете использовать что-то вроде:
ip: !Ref private_ips.0
в YAML.Но для этого потребуется, чтобы программа, загружающая YAML, реализовала специальный тип для тега !Ref
, который интерпретирует его узел способом, относящимся к текущей структуре данных.Это несколько проблематично в большинстве загрузчиков YAML, так как они выполняют первичный обход глубины, и при создании узла с тегами !Ref
корня корневого документа YAML нет никакого понятия.Это можно решить вторым проходом после загрузки структуры данных. В спецификации YAML не существует "ярлыка" для такого обхода документа, чтобы получить значение без какой-либо специальной загрузки программы (т. Е. Не указано в спецификации YAML).
В спецификации YAML есть концепция якорей (обозначенных &
) и псевдонимов (обозначенных *
), в зависимости от того, как вы хотите использовать это, которые могут решить вашу проблему, например, если вы хотите поэкспериментироватьс каким IP-адресом следует использовать для тестирования:
private_ips:
- &test 192.168.1.1
- 192.168.1.2
- 192.168.1.3
- 192.168.1.4
testcases:
- name: test_outbound
ip: *test
Он должен загружаться в любой загрузчик YAML, соответствующий спецификации, как если бы последняя строка была записана как:
ip: 192.168.1.1
Безваша программа выполняет дополнительную обработку.