以下是一个使用节点锚点和合并键将Ansible代码拆分到不同的YAML文件中的示例。
假设我们有一个名为"main.yml"的主YAML文件,以及两个额外的YAML文件,分别为"vars.yml"和"tasks.yml"。
在"vars.yml"文件中,我们定义了一些变量:
# vars.yml
---
vars:
- &app_vars
app_name: my_app
app_port: 8080
- &db_vars
db_name: my_db
db_host: localhost
db_port: 3306
在"tasks.yml"文件中,我们定义了一些任务:
# tasks.yml
---
tasks:
- name: Start application
command: start.sh
args:
chdir: /usr/local/{{ app_name }}
port: "{{ app_port }}"
- name: Connect to database
command: connect.sh
args:
chdir: /usr/local/{{ db_name }}
host: "{{ db_host }}"
port: "{{ db_port }}"
然后,在"main.yml"文件中,我们使用合并键将这些变量和任务合并到一个play中:
# main.yml
---
- hosts: all
vars_files:
- vars.yml
tasks:
<<: *app_vars
<<: *db_vars
roles:
- tasks.yml
在这个示例中,我们使用节点锚点&app_vars
和&db_vars
定义了两组变量,并在"tasks.yml"文件中通过合并键<<: *app_vars
和<<: *db_vars
将这些变量合并到主play中。
最后,我们使用vars_files
指令将"vars.yml"文件中定义的变量引入到主play中,并通过roles
指令引入"tasks.yml"文件中定义的任务。
这样,我们就成功地将代码拆分到不同的YAML文件中,并使用节点锚点和合并键来引用它们。