Ansible:通过HTTP安装tarball
我想扩展我的ansible playbook,以便在我的Debian 7机器上安装/验证phantomjs和wkhtmltopdf的安装。这两个程序都可以通过HTTP以打包tarball的形式提供。我知道get_url模块,但它不解包,如果我添加一些shell命令来解包和移动二进制文件,我怀疑每次运行ansible时,tarball都会被下载、解包和再次移动,从而导致不必要的网络流量Ansible:通过HTTP安装tarball,http,installation,ansible,Http,Installation,Ansible,我想扩展我的ansible playbook,以便在我的Debian 7机器上安装/验证phantomjs和wkhtmltopdf的安装。这两个程序都可以通过HTTP以打包tarball的形式提供。我知道get_url模块,但它不解包,如果我添加一些shell命令来解包和移动二进制文件,我怀疑每次运行ansible时,tarball都会被下载、解包和再次移动,从而导致不必要的网络流量 我怎样才能解决这个问题?我应该创建一个.deb文件并使用apt命令运行它,还是应该创建一个新的ansible模块
我怎样才能解决这个问题?我应该创建一个.deb文件并使用apt命令运行它,还是应该创建一个新的ansible模块来安装tarball,或者是否有我忽略的东西?如果您下载特定版本(例如
foo_1.2.3.tar.gz
而不是foo_latest.tar.gz
),您可以通过保留下载的tarball来实现这一点:
- name: Gets tarball
sudo: yes
sudo_user: "{{ deploy_user }}"
get_url:
url="http://some.host/some_tarball-{{ tarball_version }}.tar.gz"
dest="/home/{{ deploy_user }}/"
register: new_archive
- name: Unarchive source
sudo: yes
sudo_user: "{{ deploy_user }}"
unarchive:
src="/home/{{ deploy_user }}/some_tarball-{{ tarball_version }}.tar.gz"
dest="/home/{{ deploy_user }}/app/"
copy=no
when: new_archive|changed
根据您的环境更改变量。您还可以使用unarchive模块直接从HTTP源解压缩tar文件
-名称:直接从HTTP源下载并解压缩
无归档:
src:“http://your_tarball_to_download.tar.gz"
dest:“/home/dest\u目录”
抄送:没有
关于非归档模块的更多信息可以在文档中找到Nice,我没有仔细查看get_url文档,它们非常明确地指出,文件只有在dest不存在时才被下载。是否有关于
changed
过滤器的文档,我只能找到使用它的示例,但没有解释?事实上,如果变量注册在返回“changed”的任务中,则changed
为真。这意味着在运行任务时,某些内容已“更改”。在我们的例子中,这意味着该文件不存在且未下载。它不是特定于get\u url
,它是一个可以应用于变量的过滤器(请参阅)。请注意,文件传输已中断,您是安全的,因为只有在传输成功后,get\u url
才会将文件复制到指定的目标。注意之二:我修复了错误的非归档src文件名。请使用version\u added 2.0
更新您的答案,并记住copy=
已被弃用。谢谢您,Konstantin Suvorov。我知道copy=
不推荐使用remote\u src
。但是,使用remote\u src=yes
为我去除http://
中的第二个/
,这里的其他人也报告了该问题https://github.com/ansible/ansible-modules-core/issues/4498