在相同剧本的任务中用作映射的可见剧本变量

  • 本文关键字:映射 变量 任务 ansible
  • 更新时间 :
  • 英文 :


你好,我想执行剧本工作,看起来像这样:

- name: task of tasks
hosts: localhost
vars:
os_project: "supercoolproject_ng"
os_tenant: "supercooltenant"
tasks:
- name: Create OS instance
hosts: localhost
vars:
openstack:
state: present
locality: ng
project: "{{ os_project }}"
tenant: "{{ os_tenant }}"
zone: row-r
image: debian-10-amd64
security_groups:
- base
server_group: wobani-servergroup
instances:
wobani01: t1.4c4r50d
vars_files:
- "{{ secrets_file }}"
roles:
- adm_openstack_deploy_instance

我希望它像这样工作:

- name: Create OS instance
hosts: localhost
vars:
openstack:
state: present
locality: ng
project: supercoolproject_ng
tenant: supercooltenant

现实看起来比我想象的要糟糕得多:

ERROR! unexpected parameter type in action: <class 'ansible.parsing.yaml.objects.AnsibleSequence'>
The error appears to be in '/ansible/playbooks/deploy.yml': line 9, column 7, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
tasks:
- name: Create OS instance
^ here

我试图debug: msg=我在开始时指定的那些变量,它工作并显示这些变量。但是当我在tasks > vars > "{{ os_project }}"中使用它时,它失败了。

我尝试这种方式的原因是,我在多个环境中重复这些tasks,如locality和availability_zone (zone),所有这些任务都使用相同的租户名称和相同的项目名称。主要原因是为了更容易为每个不同的实例设置剧本,并且在从头开始编写时不会重复租户和项目。

谢谢你的建议。

YAML语法问题-应该如下

tasks:
- name: Create OS instance

最新更新