我在 Ubuntu Server 18.04 + Python 3.6.9 上使用 Ansible 2.9.2。这是一个简单的 Ansible 项目:https://github.com/770715/ansible.git
如果我运行:
ansible-playbook -i aws_ec2.yml add-ssh-keys.yml
它运行得很好但是当我尝试运行时:
ansible-playbook -i aws_ec2.yml playbook.yml
我收到一个错误:
dev@ops:~/code/build/ansible$ ansible-playbook -i aws_ec2.yml playbook.yml
/usr/lib/python3/dist-packages/requests/__init__.py:80: RequestsDependencyWarning: urllib3 (1.25.7) or chardet (3.0.4) doesn't match a supported version!
RequestsDependencyWarning)
ERROR! unexpected parameter type in action: <class 'bool'>
The error appears to be in '/home/dev/code/build/ansible/roles/docker/tasks/main.yml': line 1, column 3, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
- name: Install Docker
^ here
YAML 文件语法似乎是正确的(我已经使用许多不同的验证器进行了检查)。
urllib3 (1.25.7) 和 chardet (3.0.4) 是最新版本。如果您能帮忙,我将不胜感激。
答案1
您的角色格式不正确。虽然剧本指定目标主机和其他材料,角色只是任务列表。您之所以收到错误,是因为您的格式roles/docker/tasks/main.yml
与剧本类似。而不是:
- name: Install Docker
gather_facts: No
hosts: docker
tasks:
- name: Install yum utils
yum:
name: yum-utils
state: latest
[...]
你应该有:
- name: Install yum utils
yum:
name: yum-utils
state: latest
[...]