Ошибка Apt-get update в ubuntu 16.04 с использованием Ansible playbook

#docker #ansible #ubuntu-16.04

#docker #ansible #ubuntu-16.04

Вопрос:

Я написал ansible playbook для установки docker в Ubuntu 16.04 LTS. При запуске ansible playbook я получаю ошибку apt-get update

Я попытался запустить прилагаемый код playbook.

       - hosts: docker
        become: yes
        become_user: root
        tasks:
           - name: apt-get update
             shell: apt-get update -y
           - name: Install packages to allow apt to use a repository   overHTTPS
             shell: sudo apt-get install -y 
                    apt-transport-https -y 
                    ca-certificates 
                    curl 
                    gnupg-agent 
                    software-properties-common
           - name: Add Docker’s official GPG key
             shell: curl -fsSL    https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
           - name: Use the following command to set up the stable repository
             shell: add-apt-repository 
                    "deb [arch=amd64]   https://download.docker.com/linux/ubuntu
                    $(lsb_release -cs) 
                    stable"
           - name: apt update
             shell: apt-get update -y
           - name: Installing the docker 17.03.0
             shell: apt-get install docker-ce=18.06.1~ce-3-0~ubuntu -y
  

Перед установкой docker я пытаюсь обновить сервер Ubuntu, но получаю сообщение об ошибке ниже

           TASK [apt update]      **************************************************************
         fatal: [localhost]: FAILED! => {"changed": true, "cmd": "apt-         get update -y", "delta": "0:00:12.338257",
         "end": "2019-04-02 11:58:13.377956", "failed": true, "rc":   100, "start": "2019-04-02 11:58:01.039699",
          "stderr": "W: The repository   'https://download.docker.com/linux/ubuntu\ xenial Release' does not    have
          a Release file.nE: Failed to fetch    https://download.docker.com/linux/ubuntu\/dists/xenial/\/binary-
         amd64/Packages  404  Not FoundnE: Some index files failed to   download. They have been ignored, or old 
         ones used instead.", "stdout": "Hit:1 http://us-  east1.gce.archive.ubuntu.com/ubuntu xenial InReleasenH
         it:2 http://us-east1.gce.archive.ubuntu.com/ubuntu xenial- updates InReleasenHit:3 http://us-east1.gce.
         archive.ubuntu.com/ubuntu xenial-backports InReleasenHit:4   http://archive.canonical.com/ubuntu xenial 
         InReleasenHit:5 http://ppa.launchpad.net/ansible/ansible/ubuntu xenial InReleasenHit:6   http://securit
         y.ubuntu.com/ubuntu xenial-security InReleasenIgn:7   https://download.docker.com/linux/ubuntu\ xenial 
         InReleasenIgn:8 https://download.docker.com/linux/ubuntu\   xenial ReleasenIgn:9 https://download.dock
        er.com/linux/ubuntu\ xenial/\ amd64 PackagesnIgn:10 https://download.docker.com/linux/ubuntu\ xenia
        l/\ all PackagesnIgn:11   https://download.docker.com/linux/ubuntu\ xenial/\ Translation-  en_USnIgn:1
        2 https://download.docker.com/linux/ubuntu\ xenial/\   Translation-ennIgn:13 https://download.docker.c
        om/linux/ubuntu\ xenial/stable amd64 PackagesnIgn:14 https://download.docker.com/linux/ubuntu\ xenia
        l/stable all PackagesnIgn:15   https://download.docker.com/linux/ubuntu\ xenial/stable Translation-  en_U
         SnIgn:16 https://download.docker.com/linux/ubuntu\   xenial/stable Translation-ennIgn:9 https://downlo
         ad.docker.com/linux/ubuntu\ xenial/\ amd64 PackagesnIgn:10    https://download.docker.com/linux/ubuntu
          xenial/\ all PackagesnIgn:11   https://download.docker.com/linux/ubuntu\ xenial/\ Translation-en_US
          nIgn:12 https://download.docker.com/linux/ubuntu\ xenial/\     Translation-ennIgn:13 https://download.d
         ocker.com/linux/ubuntu\ xenial/stable amd64 PackagesnIgn:14   https://download.docker.com/linux/ubuntu
          xenial/stable all PackagesnIgn:15     https://download.docker.com/linux/ubuntu\ xenial/stable Translati
        on-en_USnIgn:16 https://download.docker.com/linux/ubuntu\    xenial/stable Translation-ennIgn:9 https:/
        /download.docker.com/linux/ubuntu\ xenial/\ amd64      PackagesnIgn:10 https://download.docker.com/linux/
        ubuntu\ xenial/\ all PackagesnIgn:11    https://download.docker.com/linux/ubuntu\ xenial/\ Translatio
         n-en_USnIgn:12 https://download.docker.com/linux/ubuntu\  xenial/\ Translation-ennIgn:13 https://dow
         nload.docker.com/linux/ubuntu\ xenial/stable amd64    PackagesnIgn:14 https://download.docker.com/linux/
       ubuntu\ xenial/stable all PackagesnIgn:15 https://download.docker.com/linux/ubuntu\ xenial/stable Tr
        anslation-en_USnIgn:16 https://download.docker.com/linux/ubuntu\ xenial/stable Translation-ennIgn:9 
       https://download.docker.com/linux/ubuntu\ xenial/\ amd64 PackagesnIgn:10 https://download.docker.com
      /linux/ubuntu\ xenial/\ all PackagesnIgn:11  https://download.docker.com/linux/ubuntu\ xenial/\ Tra
      nslation-en_USnIgn:12 https://download.docker.com/linux/ubuntu\ xenial/\ Translation-ennIgn:13 http
        s://download.docker.com/linux/ubuntu\ xenial/stable amd64  PackagesnIgn:14 https://download.docker.com
     /linux/ubuntu\ xenial/stable all PackagesnIgn:15
  

Комментарии:

1. Команда оболочки в add-apt-repository для добавления репозитория docker выглядит немного сломанной. Можете ли вы упростить эту строку (удалить конечные обратные косые черты, поместить все в одну длинную строку) и повторить попытку. Вы также можете распечатать сообщение отладки с командой, которая выполняется, чтобы убедиться, что она правильная.

2. @Augusto, я удалил конечные обратные косые черты и поместил все в одну длинную строку, но я получаю ту же ошибку.

Ответ №1:

У вас много ошибок в ваших командах оболочки:

  • 2 -y в вашей apt-get install команде
  • сочетание и " в ваших командах оболочки

Но что более важно, вам следует избегать использования shell модуля, когда существует модуль, выполняющий эту работу, и в вашем случае вы можете использовать 3 модуля:

Должно сработать что-то вроде:

 - hosts: docker
  become: yes

  tasks:

    - name: Update repositories cache and install packages
      apt:
        name: apt-transport-https ca-certificates curl gnupg-agent software-properties-common
        update_cache: yes

    - name: Add Docker PGP key
      apt_key:
        url: https://download.docker.com/linux/ubuntu/gpg
        state: present

    - name: Add docker apt repository
      apt_repository:
        repo: "deb [arch=amd64] https://download.docker.com/linux/ubuntu ... stable"
        state: present

    - name: Update repositories cache and install packages
      apt:
        name: docker-ce
        update_cache: yes
  

Комментарии:

1. Я последовал вашим предложениям. При запуске playbook я снова получаю ту же ошибку apt-get -> fatal: [localhost]: СБОЙ! => {«изменено»: false, «сообщение об ошибке»: «Не удалось обновить кеш apt: E: загрузить репозиторий». docker.com/linux/ubuntu \ bionic Release’ не имеет файла выпуска., W: Обновление из такого репозитория не может быть выполнено безопасно и, следовательно, по умолчанию отключено., W: Смотрите страницу руководства apt-secure (8) для создания репозитория и настройки пользователя., E: репозиторий ‘ download.docker.com/linux/ubuntu В $(lsb_release Release’ нет файла выпуска «.}

2. К ВАШЕМУ сведению. — имя: обновить apt: update_cache: да — имя: Обновить кэш репозиториев и установить пакеты apt: имя: docker-ce = 18.06.1 ~ ce ~ 3-0 ~ состояние ubuntu: присутствует

3. @CHBHARATHKUMAR Похоже, что, возможно, конфигурация репозитория неисправна или репозиторий поврежден. Работает ли то же самое для вас, если вы запускаете команды, отличные от ansible, вручную?