I have created 2 YAML files that look like the following: file1.yaml: variables: host1: &host1 'https://example.com' file2.yaml: app: host: *host1 As you can see I want to use the YAML anchor &host1 in a different YAML file. Now I know that YAML does not support this but it is possible using a Python script and ruamel.yaml. import ruamel.yaml def load_and_merge_yaml(base_file, target_file): yaml = ruamel.yaml.YAML() # Load the base YAML file (contains anchors) with open(base_file, 'r') as base_file_obj: base_data = yaml.load(base_file_obj) # Load the target YAML file (we want to reuse anchors here) with open(target_file, 'r') as target_file_obj: target_data = yaml.load(target_file_obj) # Manually merge the base data into the target data # We will handle this by iterating through the base data and adding/replacing it in the target. # If a key exists in the base data, we will add it to the target if it's missing def merge_dicts(base, target): for key, value in base.items(): if isinstance(value, dict): # If the value is a dictionary, we recursively merge if key not in target: target[key] = {} # Create the key if it's missing merge_dicts(value, target[key]) # Recursively merge nested dictionaries else: # If the value is not a dictionary, just assign it to the target if key not in target: target[key] = value # Add if missing # Perform the merge merge_dicts(base_data, target_data) # Save the merged result to a new file with open('merged_output.yaml', 'w') as output_file: yaml.dump(target_data, output_file) return target_data # Example usage base_file = 'file1.yaml' # The file containing the anchors target_file = 'file2.yaml' # The file where we want to apply anchors merged_data = load_and_merge_yaml(base_file, target_file) # Print the merged data for inspection print(ruamel.yaml.dump(merged_data, default_flow_style=False)) And people tell me this should work but unfortunately I keep getting this error: ruamel.yaml.composer.ComposerError: found undefined alias 'host1' in "file2.yaml", line 2, column 9 Does anyone know what I'm doing wrong? Below is the output I would like. app: host: 'https://example.com' Continue reading...