使用ansible unarchive从tar存档中提取目录

使用ansible unarchive从tar存档中提取目录,ansible,tar,Ansible,Tar,我想从tar文件中提取一个目录 在Linux操作系统中,用于安装目录解包-我只需执行以下操作: tar -xvf ingres.tar install 对于ansible,我尝试过: unarchive: remote_src: yes src: /ingres/ingres.tar dest: /ingres extra_opts: - "install" 但它当然不起作用。有什么想法吗?GNU tar命令有一个选择归档成员的选项:--addfile。提到: 如果文

我想从tar文件中提取一个目录

在Linux操作系统中,用于安装目录解包-我只需执行以下操作:

tar -xvf ingres.tar install
对于ansible,我尝试过:

unarchive:
  remote_src: yes
  src: /ingres/ingres.tar
  dest: /ingres
  extra_opts:
    - "install"

但它当然不起作用。有什么想法吗?

GNU tar命令有一个选择归档成员的选项:
--addfile
。提到:

如果文件名以破折号(
-
)开头,请在其前面加上
--addfile
选项,以防止将其视为选项

但是,它也适用于其他文件,这意味着您可以在任务的
extra_opts
中指定此选项,以选择要提取的文件或目录:

unarchive:
  remote_src: yes
  src: /ingres/ingres.tar
  dest: /ingres
  extra_opts:
    - "--add-file"
    - "install"

如果您没有太多的顶级条目,可以使用选项
exclude:
或直接使用
shell:
模块。我不确定顶级目录的内容是否总是相同的。我知道我可以使用
shell:
,只是想知道如果没有great是否可能!工作如预期!谢谢不客气!我在寻找同一个问题的答案。不幸的是,这会降低任务对不同类型存档的可移植性,因为
unzip
有不同的命令行选项。是的,的确如此,但对我来说已经足够了,在这种情况下,我只使用gtar。解决方案是完美的!