Ansible 语法错误:操作中出现意外参数类型:class 'ansible.parsing.yaml.objects.AnsibleSequence'

问题描述 投票:0回答:1
- name: 'Partition'
  tags: ['fs', 'fs-ext4']
  vars:
    vdcnames: 'ls -l /dev/disk/by-id | grep "{{volume[items["name"]]}}" | head -1 | cut -d "/" -f 1'
  tasks:
    - name: 'Get vdcnames value'
      shell:
        cmd: '{{ vdcnames }}'
      register: 'vdcnames_out'
    - name: 'Resizing the partition'
      shell:
        cmd: >
          sgdisk -e {{ items.device | d( volume[items["name"]] ) }} &&
          parted -m -s -a opt {{ items.device | d( vdcnames_out.stdout ) }} resizepart 1 100%
  when:
    - 'not items.skipped | d(False)'
    - 'items["drive"]["name"] | d("") == "trwer"'
    - 'items["partitions"] | d([]) | count == 1'
  loop: '{{ volumes.results }}'
  loop_control:
    label: '{{ items.name }}'

以上代码位于roles/abc/main.yml中。我收到上述代码的以下错误

ERROR! unexpected parameter type in action: <class 'ansible.parsing.yaml.objects.AnsibleSequence'>

The error appears to be in '/roles/abc/main.yml': line 20, column 3, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:
- name: 'Partition'
  ^ here

我修改了解决语法问题的代码如下,但仍然是相同的错误

- name: 'Partition'
  tags: ['fs', 'fs-ext4']
  vars:
    vdcnames: 'ls -l /dev/disk/by-id | grep "{{volume[items["name"]]}}" | head -1 | cut -d "/" -f 1'
  tasks:
    - name: 'Get vdcnames value'
      shell:
        cmd: '{{ vdcnames }}'
      register: 'vdcnames_out'
      loop: '{{ volumes.results }}'
      loop_control:
        label: '{{ items.name }}'
      when:
        - 'not items.skipped | d(False)'
        - 'items["drive"]["name"] | d("") == "trwer"'
        - 'items["partitions"] | d([]) | count == 1'
    
    - name: 'Resizing the partition'
      shell: |
        sgdisk -e {{ items.device | d( volume[items["name"]] ) }} &&
        parted -m -s -a opt {{ items.device | d( vdcnames_out.stdout ) }} resizepart 1 100%
      loop: '{{ volumes.results }}'
      loop_control:
        label: '{{ items.name }}'

我试图通过ansible调整磁盘大小,但遇到了这个错误。有人可以帮我看看错误到底是什么吗? 我尝试了很多通过修改代码来解决这个问题,但错误仍然是相同的,不知道为什么。

ansible yaml ansible-2.x
1个回答
0
投票

不知道这是否有帮助。但是,从 Ansible 2.0 开始,文件系统模块中有 resizefs 选项,默认情况下为 false,并且支持 ext4。

如果是,如果块设备和文件系统大小不同,请将文件系统增长到空间中。支持 ext2、ext3、ext4、ext4dev、f2fs、lvm、xfs、vfat、交换文件系统。

https://docs.ansible.com/ansible/latest/modules/filesystem_module.html

- name: 'Extend the FS'
  filesystem:
    fstype: 'ext4'
    dev: '/dev/sda1'
    resizefs: yes
© www.soinside.com 2019 - 2024. All rights reserved.