运行易出错的剧本时出错



我已经在Ubuntu Precise 64上安装了Ansible 1.2.3。

运行ansible-playbook -i ansible_hosts playbook.yml时出现以下错误:

ERROR: problem running ansible_hosts --list ([Errno 8] Exec format error)

以下是ansible_hosts:的内容

[development]
localhost   ansible_connection=local

playbook.yml:

---
- hosts: development
  sudo: yes
  tasks:
    - name: install curl
      apt: pkg=curl update_cache=yes

我怎样才能做到这一点?

对我来说,这个问题是通过删除可解析文件(剧本、清单等)的"执行"权限来解决的:

find . -type f -exec chmod -x {} ;

我有一个类似的问题:

$ ansible --version

ansible 1.5.4

$ ansible-playbook -i hosts main.yml

错误:运行/mnt/d/Works/ansible zipkin/hosts--list时出现问题([Erno 8]Exec格式错误)

我的Debian/Ubuuntu:步骤

$ sudo apt-get purge ansible
$ sudo apt-get install software-properties-common
$ sudo apt-add-repository ppa:ansible/ansible
$ sudo apt-get update
$ sudo apt-get install ansible
$ ansible --version

ansible 2.2.1.0

$ ansible-playbook -i hosts main.yml

现在它工作了!!!

您必须删除ansible_hosts 的执行权限

chmod a-x ansible_hosts

如果这不起作用。用sudo 试试

sudo chmod a-x ansible_hosts

执行权限用于动态清单脚本,例如rax.py。这一个特别通过从RackSpace获取库存来构建库存。如果您手动维护库存,则库存文件不应是可执行的。

我遇到了这个问题,并使用shell而不是command解决了它。

我只是在学习ansible。据我所知,apt模块似乎没有名为"pkg"的密钥。可能,您要查找的是"名称"[1]

我想,改变

apt: pkg=curl update_cache=yes 

带有

apt: name=curl update_cache=yes

应该解决问题。

参考编号:http://docs.ansible.com/apt_module.html

ansible 2.0修复了此问题https://github.com/ansible/ansible/issues/10068

最新更新