我想获得在debian ec2实例上安装的服务列表及其版本。
我无法理解如何获取dpkg --list显示的软件包列表,因为我想在我的小服务器场上通过ansible获取此列表。
答案 0 :(得分:0)
最简单的方法是简单地运行一个shell任务:
- shell: dpkg --list
register: packages
现在您将结果存储在packages.stdout_lines
。
如果您只想要包名称,请运行类似
的内容dpkg --get-selections | grep -v "deinstall" | cut -f1
要在Ansible控制主机上运行任务,您需要委派任务:
- shell: dpkg --list
register: packages
delegate_to: localhost
现在命令在控制主机(localhost)上执行,结果存储在packages.stdout_lines
答案 1 :(得分:0)
---
- hosts: hostblockname
tasks:
- name: Get Packages List
shell: dpkg --list > packageslist
register: packages
- fetch: src=/root/packageslist dest=/root/packagesdirectory/
我添加了上面的剧本,这有助于实现我的目的。可能存在优化空间,但不知怎的,我能够为我完成它。
我想获得所有云实例上以适当格式安装的所有软件包的列表。然后我想获得Ansible服务器上文件中所有包的列表。 该剧本首先在远程实例上生成已安装软件包的列表,然后将这些文件提取回主Ansible主机。
运行playbook的命令是: ansible-playbook -i hostslistfile myplaybook.yml
myplaybook.yml如上所述。
hostslistfile是一个简单的文件,如下所示: [hostblockname] 192.168.0.144:22