我想扩展我的ansible playbook来安装/验证phantomjs和wkhtmltopdf安装到我的Debian 7机器上。这两个程序都可以通过HTTP作为打包的tarball使用。我知道get_url模块,但它没有解压缩东西,如果我添加一些shell命令来解压缩和移动二进制文件,我怀疑每次运行ansible时,tarball都会被下载,解压缩并再次移动,导致不必要的网络流量
我怎么解决这个问题?我应该使用apt命令创建一个.deb文件并运行它,还是应该创建一个新的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
根据您的环境更改变量。
如果您下载特定版本(例如 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文件。
- name: Download and unpack directly from HTTP source
unarchive:
src: "http://your_tarball_to_download.tar.gz"
dest: "/home/dest_directory"
copy: no
有关unarchive模块的更多信息可以在文档中找到 http://docs.ansible.com/ansible/unarchive_module.html