有没有办法允许使用 apt Ansible 模块进行降级?

Pab*_*gos 10 ansible

我有一个 Ansible Playbook 来部署特定版本的 docker。当目标机器安装了更高版本时,我希望 apt 模块允许降级。我浏览了文档,但找不到合适的方法。Yaml 文件有如下几行:

- name : "Install specific docker ce"
  become : true 
  apt : 
    name : docker-ce=5:18.09.1~3-0~ubuntu-bionic
    state : present
Run Code Online (Sandbox Code Playgroud)

Ear*_*uby 1

对于 Ubuntu 上的 Docker CE,有两个软件包,docker-ce以及docker-ce-cli. 您可以查看当前安装了哪些版本:

$ apt list --installed | grep docker
docker-ce/xenial,now 5:18.09.7~3-0~ubuntu-xenial amd64 [installed,upgradable to: 5:19.03.1~3-0~ubuntu-xenial]
docker-ce-cli/xenial,now 5:18.09.7~3-0~ubuntu-xenial amd64 [installed,upgradable to: 5:19.03.1~3-0~ubuntu-xenial]
Run Code Online (Sandbox Code Playgroud)

您需要为两个包强制使用相同的版本。例如在 Ubuntu Xenial 上:

主.yml

$ apt list --installed | grep docker
docker-ce/xenial,now 5:18.09.7~3-0~ubuntu-xenial amd64 [installed,upgradable to: 5:19.03.1~3-0~ubuntu-xenial]
docker-ce-cli/xenial,now 5:18.09.7~3-0~ubuntu-xenial amd64 [installed,upgradable to: 5:19.03.1~3-0~ubuntu-xenial]
Run Code Online (Sandbox Code Playgroud)

处理程序.yml

- name: Install docker-ce
  apt:
    state: present
    force: True
    name:
    - "docker-ce=5:18.09.7~3-0~ubuntu-xenial"
    - "docker-ce-cli=5:18.09.7~3-0~ubuntu-xenial"
  notify:
    - Restart docker
  when: ansible_os_family == "Debian" and ansible_distribution_version == "16.04"
Run Code Online (Sandbox Code Playgroud)