我正在使用ansible进行测试,我正在尝试的是在另一个ubuntu服务器上安装apache2,我已经使用1 ip定义了组“test”。但是发生的事情是,ansible在执行时会抛出一些错误,我搜索了很多网站,很多人都遇到过这个问题,但在不同的情况下,我开始对它感到沮丧。有人能帮助我吗?
Ansible Playbook:
---
- hosts: test
sudo: yes
tasks:
- name: Check if Im sudo
command: echo $USER
- name: install packages
apt: name:apache2 update_cache=yes state=latest
notify: start apache2
handlers:
- name: start apache2
service: name=apache2 state=started
STDOUT
root@ip-172-31-35-33:/etc/ansible/example# ansible-playbook example.yml
PLAY [test] *******************************************************************
GATHERING FACTS ***************************************************************
ok: [172.31.36.176]
TASK: [Check if Im sudo] ******************************************************
changed: [172.31.36.176]
TASK: [install packages] ******************************************************
failed: [172.31.36.176] => {"failed": true}
msg: this module requires key=value arguments (['name:apache2', 'update_cache=yes', 'state=latest'])
FATAL: all hosts have already failed -- aborting
PLAY RECAP ********************************************************************
to retry, use: --limit @/root/example.retry
172.31.36.176 : ok=2 changed=1 unreachable=0 failed=1
顺便说一下,主机是可以访问的,我可以ssh进去,即使有了ansible,这也就是证据
root@ip-172-31-35-33:/etc/ansible/example# ansible -m shell -a "ifconfig | grep 'inet addr'" test
172.31.36.176 | success | rc=0 >>
inet addr:172.31.36.176 Bcast:172.31.47.255 Mask:255.255.240.0
inet addr:127.0.0.1 Mask:255.0.0.0
另一件事是我可以在另一台服务器上手动安装apache2,但是没有安装,因为我想安装它使用不可能的
由于
答案 0 :(得分:4)
在单个任务中,Ansible要求您在标准YAML语法和他们自己的带有等号的解析版本之间做出选择。在这项任务中,你将两者结合起来:
- name: install packages
apt: name:apache2 update_cache=yes state=latest
notify: start apache2
这可以写成:
- name: install packages
apt:
name: apache2
update_cache: yes
state: latest
notify: start apache2
或者:
- name: install packages
apt: name=apache2 update_cache=yes state=latest
notify: start apache2
YAML还允许使用括号和逗号语法来允许您在同一行上指定键值信息:
- name: install packages
apt: {name: apache2, update_cache: yes, state: latest}
notify: start apache2
其中任何一项都有效。
答案 1 :(得分:1)
您正在使用需要相等的冒号。您需要将name:apache2
更改为name=apache2
。