我正在使用带有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}
...
答案 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。