你好,我想执行剧本工作,看起来像这样:
- 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