在 ubuntu 18.04 上我正在运行这个 ansible(版本 2.5.1)角色:
---
- name: Add Docker apt repository key.
apt_key:
url: "https://download.docker.com/linux/ubuntu/gpg"
state: present
- name: gather facts
setup:
- name: Set the stable docker repository
apt_repository:
repo: "deb [arch=amd64] https://download.docker.com/linux/ubuntu {{ ansible_lsb.codename }} stable"
state: present
update_cache: yes
- name: Install Docker
apt:
name: docker-ce
state: present
使用此剧本:
---
- hosts: localhost
connection: local
gather_facts: False
become: true
pre_tasks:
- name: Install python for Ansible
raw: test -e /usr/bin/python || (apt -y update && apt install -y python-minimal)
tasks:
- name: Install list of packages
apt: name={{item}} state=latest
with_items:
- nano
- git
- htop
- gitg
roles:
- {role: 'docker', tags: 'docker'}
但我收到以下错误:
PLAY [localhost] *******************************************************************************************************************************
TASK [Install python for Ansible] **************************************************************************************************************
changed: [localhost]
TASK [docker : Add Docker apt repository key.] *************************************************************************************************
ok: [localhost]
TASK [docker : gather facts] *******************************************************************************************************************
ok: [localhost]
TASK [docker : Set the stable docker repository] ***********************************************************************************************
ok: [localhost]
TASK [docker : Install Docker] *****************************************************************************************************************
fatal: [localhost]: FAILED! => {"changed": false, "msg": "No package matching 'docker-ce' is available"}
to retry, use: --limit @/home/user/repos/ansible-vps/src/ansible_create_workstation.retry
PLAY RECAP *************************************************************************************************************************************
localhost : ok=4 changed=1 unreachable=0 failed=1
因此由于某种原因,无法找到 docker-ce 包,这是最近发生的变化还是我做错了其他事情?
当我查看时:/etc/apt/sources.list它不包含:
deb [arch=amd64] https://download.docker.com/linux/ubuntu ...
入口。
答案1
你需要使用边缘代替稳定的使用bionic(18.04)后它将在未来保持稳定。
- name: Set the stable docker repository
apt_repository:
repo: "deb [arch=amd64] https://download.docker.com/linux/ubuntu {{ ansible_lsb.codename }} edge"
state: present
update_cache: yes
答案2
对我来说,原因是尝试在 Raspberry Pi OS 版本docker-ce
上安装arm64
时,docker 上游似乎不提供docker-ce:arm64
,只提供不同架构的变体:docker-ce:armhf
。
答案3
StackOverflow 上有一篇匹配的帖子: Ansible:没有可用于 docker-ce 的软件包。
接受的答案是:
或者,如果 Ansible 版本 >= 2.0,您可以使用通用 OS 包管理器模块:
- name: install docker package: name: docker-ce state: present
下面的评论说:
替换
$(lsb_release -cs)
为xenial
(适用于 ubuntu 16.04)/etc/apt/sources.list
并重试
答案4
你也可以先检查 ansible-galaxy,然后使用经过充分测试的 ansible 角色,例如https://github.com/geerlingguy/ansible-role-docker. 无需重新发明轮子。