【问题标题】:ansible multiple handlers giving syntax erroransible 多个处理程序给出语法错误
【发布时间】:2022-11-30 03:19:14
【问题描述】:

我正在写一本剧本来安装 docker,它是:

- name: "Install docker on Xubuntu slave"
  hosts: "{{ variable_host | default('web') }}"
  become: True
  tasks:
        - name: "Update repository"
          apt:
              update_cache: "yes"
        - name: "Installing requirements"
          apt:
              name:
                   - "ca-certificates"
                   - "curl"
                   - "gnupg"
                   - "lsb-release"
              state: latest
        - name: "creating keyring dir if not existing"
          file:
               path: "/etc/apt/keyrings"
               state: directory
               recurse: yes
        - name: "Adding docker's GPHG key"
          shell: 'curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg || /bin/true'
          async: 20
          poll: 2
        - name: "Setting up repo"
          shell:
                'echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null'
        - name: "Re-Update repository"
          apt:
              update_cache: "yes"
        - name: "Installing docker"
          apt:
              name:
                   - "docker-ce"
                   - "docker-ce-cli"
                   - "containerd.io"
                   - "docker-compose"
                   - "docker-compose-plugin"
              state: latest
          notify:
            - "starting docker service"
            - adding user to docker group
            - re-evaluating group membership
  handlers:
    - name: "starting docker service"
      systemd:
        - name: docker
          state: started
          enabled: true
        - name: containerd
          state: started
          enabled: true

    - name: adding user to docker group
      user:
        name: "{{ ansible_user_id }}"
        groups: docker
        append: "yes"

    - debug:
        msg: "checking out if something is wrong"

    - name: re-evaluating group membership
      shell:
        'newgrp docker || /bin/true'

出于某种我无法理解的原因,我在启动 docker 和 containerd 服务的处理程序附近遇到错误。无论我将处理程序任务放在哪里,都会发生这种情况。因此,与 systemd 相关的处理程序是第一个还是最后一个并不重要。错误总是在这一行:

  • 名称:“启动docker服务”

它说

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

The error appears to be in '/home/ansible/DevOpsPractice/DevOpsScripts/InstallDockerUbuntu.yaml': line 55, column 7, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:
    - name: "starting docker service"
      ^ here

我迷失了我在做什么是抛出这个错误

【问题讨论】:

    标签: ansible yaml


    【解决方案1】:

    我在使用 systemd 模块时犯了一个典型的菜鸟错误。所以而不是

    - name: "starting docker service"
      systemd:
        - name: docker
          state: started
          enabled: true
        - name: containerd
          state: started
          enabled: true
    

    它应该是

    - name: start docker and containerd
      systemd:
        name:
          - docker
          - containerd
        state: started
        enabled: true
    

    愚蠢的错误,但我希望它能帮助别人

    【讨论】:

      猜你喜欢
      • 2011-03-27
      • 2014-08-14
      • 1970-01-01
      • 2015-10-26
      • 1970-01-01
      • 2017-09-02
      • 1970-01-01
      • 1970-01-01
      • 2020-03-06
      相关资源
      最近更新 更多