没有包匹配';mesos';在Ansible上提供

没有包匹配';mesos';在Ansible上提供,ansible,ansible-playbook,mesos,mesosphere,ansible-2.x,Ansible,Ansible Playbook,Mesos,Mesosphere,Ansible 2.x,我正在配置mesos marathon群集。 我的下一个任务是安装java和mesos --- - name: importar key Mesosphere shell: gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys E56151BF - name: ppa java8 apt_repository: repo='ppa:webupd8team/java' state=present - name: selecc

我正在配置mesos marathon群集。 我的下一个任务是安装java和mesos

---
- name: importar key Mesosphere
  shell: gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys E56151BF

- name: ppa java8
  apt_repository: repo='ppa:webupd8team/java' state=present

- name: seleccionar licencia Oracle
  shell: echo debconf shared/accepted-oracle-license-v1-1 select true | sudo debconf-set-selections

- name: actualizar
  apt: update_cache=yes

- name: instalar java8
  apt: name=oracle-java8-installer state=latest update-cache=yes force=yes

- name: actualizar sources list
  shell: DISTRO=$(lsb_release -is | tr '[:upper:]' '[:lower:]') && CODENAME=$(lsb_release -cs) && echo "deb http://repos.mesosphere.io/${DISTRO} ${CODENAME} main" | sudo tee /etc/apt/sources.list.d/mesosphere.list

- name: actualizar paquetes
  apt: update_cache=yes cache_valid_time=3600

- name: instalar mesos
  apt: name=mesos state=present install_recommends=yes force=yes

- name: instalar mesosphere
  apt: name=mesosphere state=present install_recommends=yes force=yes
我的问题是,当我执行playbook时,它会给我下一个错误:

TASK [common : actualizar sources list] ****************************************
changed: [172.16.8.191]

TASK [common : actualizar paquetes] ********************************************
ok: [172.16.8.191]

TASK [common : instalar mesos] *************************************************
fatal: [172.16.8.191]: FAILED! => {"changed": false, "failed": true, "msg": "No package matching 'mesos' is available"}

PLAY RECAP *********************************************************************
172.16.8.191               : ok=8    changed=5    unreachable=0    failed=1

但是,如果我第二次执行ansible,它会完美工作,您可以看到第二次执行:

TASK [common : actualizar paquetes] ********************************************
ok: [172.16.8.191]

TASK [common : instalar mesos] *************************************************
changed: [172.16.8.191]

TASK [common : instalar mesosphere] ********************************************
changed: [172.16.8.191]

有什么问题吗

谢谢

@ydaetskcoR提供的解决方案

更改任务“instalar mesos”:

- name: instalar mesos
  apt: name=mesos state=present install_recommends=yes update_cache=yes force=yes

您遇到的问题是,如果上一次更新发生在一个多小时之前,则
actualzar paquetes
任务仅执行
apt get update
来刷新您的回购列表

考虑到您在上一个任务中只添加了Mesos回购协议,您将无法找到该包。重新运行playbook会在没有
缓存有效时间设置的任务之前触发
实现任务,因此将强制
apt get update
,这将允许您使用上次运行playbook时添加的Mesos repo

要修复它,您只需从
Realizar paquetes
任务中删除
cache\u valid\u time


如评论中所述,您还可以将
update\u cache
apt
任务移动到实际安装软件包的主
apt
任务中,Ansible将在
apt get install
之前运行
apt get update

如果将
update\u cache=yes
添加到安装mesos的任务中会发生什么?真的谢谢@ydaetskcoR现在它工作得很好,我能知道为什么我必须把update_缓存放在与install mesos相同的任务中吗?请你用你的评论来回答这个问题。谢谢