2015-12-01 62 views
4

我使用vagrant和ansible playbook在Ubuntu映像上自动安装一堆程序。一个程序无法安装在流浪虚拟机上。在Vagrant文件我有Ansible apt-get安装输出

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 

我怎么能看到一个人的控制台输出(或全部)apt-get install“在虚拟机上小号,因为ansible而不是输出格式为每个安装

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

回答

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 
+0

为什么downvote? – RuBiCK

3

下面是如何重现aptstdout ...

--- 
- 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'),并与[:-1]省略了最后一个空字符串,所有这些是Python的字符串操作, 当然。

"msg": [ 
    "Reading package lists...", 
    "Building dependency tree...", 
    "Reading state information...", 
    "Reading extended state information...", 
    "Initializing package states...", 
    "Building tag database...", 
    "No packages will be installed, upgraded, or removed.", 
    "0 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded.", 
    "Need to get 0 B of archives. After unpacking 0 B will be used.", 
    "Reading package lists...", 
    "Building dependency tree...", 
    "Reading state information...", 
    "Reading extended state information...", 
    "Initializing package states...", 
    "Building tag database..." 
] 
0

在我使用的那一刻ansible的版本,ansible-playbook -v似乎足以获得恰当的输出。诚然,我没有测试失败。输出是以JSON的形式出现的,这使得阅读起来有点困难(因为其他答案可以解决)。

我测试的Ansible版本是2.3.2.0。