首页 > 解决方案 > 一次为多个设备的主机名更改创建ansible playbook

问题描述

我是 ansible 和脚本的新手。我正在尝试用 ansible 自动化一些过程。

我正在尝试为多个设备的主机名更改创建一个剧本。我研究得很少,想出了这个

hosts : SWITCH
gather_facts: no
connection: local
#  vars_files:
#       /ansible/hosts.yml

tasks:
      hostname:
            - name: "{{item.name}}"
              when: "{{ansible_host==item.host}}"
            - with_items: "{{hostinfo}}"
              hostinfo:
                      host: FII-S-EDMHQ-003
                      name: CA-S-EDMHQ-003
                      host: FII-S-EDMHQ-004
                      name: CA-S-EDMHQ-004

我收到错误:

root@FIN68483:/etc/ansible/playbooks# ansible-playbook hostname.yml
ERROR! A malformed block was encountered while loading tasks: {u'hostname': [{u'when': u'{{ansible_host==item.host}}', u'name': u'{{item.name}}'}, {u'hostinfo': {u'host': u'FII-S-EDMHQ-003, FII-S-EDMHQ-004', u'name': u'CA-S-EDMHQ-003, CA-S-EDMHQ-004'}, u'with_items': u'{{hostinfo}}'}]} should be a list or None but is <class 'ansible.parsing.yaml.objects.AnsibleMapping'>

该错误似乎在“/etc/ansible/playbooks/hostname.yml”中:第 3 行,第 4 列,但可能在文件中的其他位置,具体取决于确切的语法问题。

违规行似乎是:

 hosts : SWITCH

任何人都可以请帮助是什么错误。我可能能够修复以下部分,但我正在寻找一些帮助

ERROR! A malformed block was encountered while loading tasks: {u'hostname': [{u'when': u'{{ansible_host==item.host}}', u'name': u'{{item.name}}'}, {u'hostinfo': {u'host': u'FII-S-EDMHQ-003, FII-S-EDMHQ-004', u'name': u'CA-S-EDMHQ-003, CA-S-EDMHQ-004'}, u'with_items': u'{{hostinfo}}'}]} should be a list or None but is <class 'ansible.parsing.yaml.objects.AnsibleMapping'>

谢谢

标签: pythonscriptingansiblehostname

解决方案


推荐阅读