Ansible获取aws实例软件列表
我想获得DebianEC2实例上安装的服务及其版本的列表Ansible获取aws实例软件列表,ansible,ansible-playbook,Ansible,Ansible Playbook,我想获得DebianEC2实例上安装的服务及其版本的列表 我无法理解如何获取dpkg-list显示的包列表,因为我想通过我的小服务器场上的ansible获取此列表。最简单的方法是运行一个shell任务: - shell: dpkg --list register: packages 现在,结果存储在packages.stdout\u行中 如果您只需要包名,请运行类似以下内容 dpkg --get-selections | grep -v "deinstall" | cut -f1 要在A
我无法理解如何获取dpkg-list显示的包列表,因为我想通过我的小服务器场上的ansible获取此列表。最简单的方法是运行一个shell任务:
- shell: dpkg --list
register: packages
现在,结果存储在packages.stdout\u行中
如果您只需要包名,请运行类似以下内容
dpkg --get-selections | grep -v "deinstall" | cut -f1
要在Ansible control主机上运行该任务,您需要委派该任务:
- shell: dpkg --list
register: packages
delegate_to: localhost
现在,该命令在控制主机(localhost)上执行,结果存储在packages.stdout\u行中
---
- hosts: hostblockname
tasks:
- name: Get Packages List
shell: dpkg --list > packageslist
register: packages
- fetch: src=/root/packageslist dest=/root/packagesdirectory/
我添加了上面的剧本,这有助于达到我的目的。可能有优化的空间,但不知何故,我能够为我完成它
我想获得所有云实例上以适当格式安装的所有软件包的列表。然后我想在我的Ansible服务器上获取文件中所有包的列表。
此playbook首先生成远程实例上已安装软件包的列表,然后将这些文件取回主Ansible主机
运行playbook的命令是:
ansible playbook-i hostslistfile myplaybook.yml
myplaybook.yml如上所述
hostslistfile是一个简单文件,如下所示:
[主机名]
192.168.0.144:22非常感谢你的回答。这使我在学习Ansible方面有了很大的进步。但是,我无法在任何地方找到packages.stdout\u行文件。我在playbook中添加了shell:dpkg--list>>somelog.txt,但它在远程主机而不是ansible服务器上创建了输出文件。基本上,我想获得Ansible服务器上所有实例的包列表。在我的上述任务中,结果被注册为变量packages
。执行的shell命令的stdout存储在属性stdout\u行
中。因此,您可以通过包访问标准输出。标准输出行
。这不是文件而是变量。请尝试以下任务:-debug:msg=“{{packages.stdout\u lines}”
我在上面添加了一个在Ansible control主机上运行任务的示例。当我使用下面的内容运行playbook时,它起作用了:--hosts:host tasks:-shell:dpkg--list register:packages
但是在添加行delgate\u to:localhost
之后,它不起作用,并且说“ERROR:delgate\u to不是合法的”Ansible Playbook“register:packages”中此级别的参数