Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ansible获取aws实例软件列表_Ansible_Ansible Playbook - Fatal编程技术网

Ansible获取aws实例软件列表

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

我想获得DebianEC2实例上安装的服务及其版本的列表


我无法理解如何获取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”中此级别的参数