Ansible playbook错误

时间:2015-09-18 02:41:03

标签: ansible ansible-playbook

我正在使用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,但是没有安装,因为我想安装它使用不可能的

由于

2 个答案:

答案 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