我想要获取在debian ec2实例上安装的服务列表及其版本。Ansible可以获取aws实例软件列表
我无法理解如何获取dpkg --list显示的软件包列表,因为我想通过我的小型服务器场上的ansible获取此列表。
我想要获取在debian ec2实例上安装的服务列表及其版本。Ansible可以获取aws实例软件列表
我无法理解如何获取dpkg --list显示的软件包列表,因为我想通过我的小型服务器场上的ansible获取此列表。
最简单的将是简单地运行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
现在命令在控制主机(本地主机)上执行,结果存储在packages.stdout_lines
---
- hosts: hostblockname
tasks:
- name: Get Packages List
shell: dpkg --list > packageslist
register: packages
- fetch: src=/root/packageslist dest=/root/packagesdirectory/
我添加了上述帮助服务我的目的的剧本。有可能有优化的空间,但不知何故,我能够为我完成它。
我想要获得以适当格式安装在所有云实例上的所有软件包的列表。然后我想要在我的Ansible服务器上的文件中获得所有软件包的列表。 本剧本首先在远程实例上生成已安装软件包的列表,然后将这些文件提交回主Ansible主机。
运行剧本的命令是: ansible-剧本-i hostslistfile myplaybook.yml
myplaybook.yml如上。
hostslistfile是简单的文件,该文件是如下: [hostblockname] 192.168.0.144:22
非常感谢您的回答。这让我在学习Ansible方面取得了很好的进展。但是我无法在任何地方找到packages.stdout_lines文件。我在playbook中添加了shell:dpkg --list >> somelog.txt,但它在远程主机上创建了输出文件,而不是在服务器上创建。基本上我想在Ansible服务器上获得所有实例的软件包列表 –
在我上面的任务中,结果被注册为变量'packages'。执行的shell命令的stdout存储在属性'stdout_lines'中。因此你可以通过'packages.stdout_lines'来访问stdout。这不是一个文件,而是一个可变的文件。 – udondan
尝试这样一个任务:' - debug:msg =“{{packages.stdout_lines}}”' – udondan