没有用于直接安装.deb软件包的模块.当您必须将dpkg作为命令运行时,它始终将安装任务标记为已更改的任务.我在配置它时遇到了一些麻烦,所以我在这里作为一个公共笔记本发布.
以下是使用dpkg安装的任务:
- name: Install old python
command: dpkg -i {{ temp_dir }}/{{ item }}
with_items:
- python2.4-minimal_2.4.6-6+precise1_i386.deb
- python2.4_2.4.6-6+{{ ubuntu_release }}1_i386.deb
- libpython2.4_2.4.6-6+{{ ubuntu_release }}1_i386.deb
- python2.4-dev_2.4.6-6+{{ ubuntu_release }}1_i386.deb
Run Code Online (Sandbox Code Playgroud)
在另一个任务中上传到{{temp_dir}}的文件.
nev*_*ves 13
下面的答案仍然有效,但较新的ansible版本有apt模块.现在Mariusz Sawicki的回答是首选.我已将其标记为已接受的答案.
当changed_when添加参数时,它只适用于Ansible 1.3版.这有点笨拙,也许有人可以改进解决方案.我没有找到这个"寄存器"对象的文档.
- name: Install old python
command: dpkg --skip-same-version -i {{ temp_dir }}/{{ item }}
register: dpkg_result
changed_when: "dpkg_result.stdout.startswith('Selecting')"
with_items:
- python2.4-minimal_2.4.6-6+precise1_i386.deb
- python2.4_2.4.6-6+{{ ubuntu_release }}1_i386.deb
- libpython2.4_2.4.6-6+{{ ubuntu_release }}1_i386.deb
- python2.4-dev_2.4.6-6+{{ ubuntu_release }}1_i386.deb
Run Code Online (Sandbox Code Playgroud)
在这里,您可以运行相同的任务,它将在第一次安装.第一次之后,将不会安装包.
有两个修改.一个是--skip-same-version阻止dpkg重新安装软件的参数.另一个是register和changed_when属性.第一次运行dpkg时,它会打印到以"选择"开头的字符串stdout,并通知更改.稍后它会有不同的输出.我已经尝试了一种更具可读性的条件,但无法使用更软化的条件使用"not"或搜索子字符串.
在Ansible 1.6(及更新版本)中,apt模块有一个deb选项:
- apt: deb=/tmp/mypackage.deb
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5767 次 |
| 最近记录: |