Ansible apt-get安装输出

时间:2015-12-01 17:53:03

标签: vagrant ansible

我正在使用带有ansible playbook的vagrant在ubuntu映像上自动安装一堆程序。一个程序无法在vagrant VM上安装。在Vagrant文件中我有

config.vm.provision :ansible do |ansible|
  ansible.verbose = "vvv"
  ansible.playbook = "provisioning/playbook.yml"
end

但详细输出不包括apt-get输出。我的playbook.yml看起来像

---
- hosts: all
  sudo: true
  tasks:
    - name: get vi
      apt: state=latest name=vim  

如何在VM上查看单个(或所有)apt-get install的控制台输出,因为ansible会以格式输出每个安装

TASK: [Install vim] *********************************************************** 
failed: [default] => {"failed": true}
...

3 个答案:

答案 0 :(得分:5)

重现stdout

apt

以下是如何重现stdout的{​​{1}} ...

apt

...有了很好的换行符,感谢--- - name: 'apt: update & upgrade' apt: update_cache: yes cache_valid_time: 3600 upgrade: safe register: apt - debug: msg={{ apt.stdout.split('\n')[:-1] }} ,省略了最后一个空字符串.split('\n'),当然所有这些都是Python字符串操作。

[:-1]

答案 1 :(得分:2)

您可以将apt模块执行的输出注册到变量,然后将其打印出来。

- hosts: localhost
  sudo: true
  tasks:
    - name: get vi
      apt: state=latest name=vim
      register: aptout

    # show the content of aptout var
    - debug: var=aptout

答案 2 :(得分:0)

在我目前正在使用的ansible版本中,ansible-playbook -v似乎足以获得输出。不可否认,我没有测试过失败。输出采用JSON的形式,这使得它有点难以阅读(因为其他答案可以解决)。

我测试的Ansible版本是2.3.2.0。