2015-12-01 68 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。