«Сбой в разговоре с yum: не удается найти допустимый baseurl для repo: remi»

#ansible #centos7

#ansible #centos7

Вопрос:

Я использую следующий скрипт ansible для установки модуля php-fpm в CentOS, но не могу определить ошибку.

 ---
- hosts: all
  become: yes
  tasks:

    - name: download remi release repo for php
      get_url:
            url: http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
            dest: /tmp/remi-release-6.rpm

      tags: php-fpm

    - name: install remi repo
      shell: /bin/rpm -Uvh /tmp/remi-release-6.rpm
      register: remi_repo_result
      failed_when: "'conflict' in remi_repo_result.stderr"
      tags: php-fpm

    - name: enable remi repo
      ini_file: dest=/etc/yum.repos.d/remi.repo
          section=remi
          option=enabled
          value=1

    - name: install php-fpm and its deps
      yum: name={{item}} state=present
      with_items:
      - php
      - php-fpm
      tags: php-fpm

    - name: backup default php configuration
      shell: /bin/cp /etc/php.ini /etc/php.default.ini creates=/etc/php.default.ini
      tags: php-fpm

    - name: display php errors when not in production
      ini_file: dest=/etc/php.ini
         section=PHP
         option=display_errors
         value=On
      when: env is defined and env != "production"
      notify:
      - restart php-fpm
      tags: php-fpm

    - name: do not show php errors when in production
      ini_file: dest=/etc/php.ini
          section=PHP
          option=display_errors
          value=Off
      when: env is defined and env == "production"
      notify:
      - restart php-fpm
      tags: php-fpm

    - name: backup default php-fpm configuration
      shell: /bin/cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.default creates=/etc/php-fpm.d/www.conf.default
      tags: php-fpm

    - name: change php-fpm to listen on socket
      ini_file: dest=/etc/php-fpm.d/www.conf
          section=www
          option=listen
          value=/var/run/php-fpm/php-fpm.sock
      notify:
      - restart php-fpm
      tags: php-fpm

    - name: php-fpm listen mode should always be 0666
      ini_file: dest=/etc/php-fpm.d/www.conf
          section=www
          option=listen.mode
          value=0666
      notify:
      - restart php-fpm
      tags: php-fpm

    - name: change php-fpm user
      ini_file: dest=/etc/php-fpm.d/www.conf
          section=www
          option=user
          value=nginx
      notify:
      - restart php-fpm
      tags: php-fpm

    - name: change php-fpm group
      ini_file: dest=/etc/php-fpm.d/www.conf
          section=www
          option=group
          value=nginx
      notify:
      - restart php-fpm
      tags: php-fpm

    - name: start php-fpm
      service: name=php-fpm state=running enabled=yes
      tags: php-fpm
 

Я получаю следующую ошибку в задаче «установить php-fpm и его deps»

сбой: [127.0.0.1] (item= [u’php’, u’phpfpm’]) => {«ansible_loop_var»: «item», «изменено»: false, «item»: [«php», «php-fpm»], «msg»: «Сбой при разговоредля yum: не удается найти допустимый базовый файл для repo: remi»}

Может кто-нибудь помочь с решением для этого?

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

1. 1 / EL-6 мертв, достиг своего EOL несколько недель назад. Кстати, не удается воспроизвести…

2. Убедитесь, что вы используете правильный пакет конфигурации, см. rpms.remirepo.net/wizard , а также ЭПЕЛЬ

3. Вы проверили содержимое /etc/yum.repos.d/remi.repo ? Ошибка, похоже, указывает на то, что baseurl для [remi] repo нет.

Ответ №1:

Примечание: большая часть приведенного ниже выведена из смелых догадок, поскольку вы не предоставили полного и подробного описания соответствующих задач или значений переменных для цели, с которой вы запускаете playbook.

В приведенном выше руководстве по игре есть несколько проблем, наиболее очевидной и актуальной из которых является то, что

     - name: install remi repo
      shell: /bin/rpm -Uvh /tmp/remi-release-6.rpm
      register: remi_repo_result
      failed_when: "'conflict' in remi_repo_result.stderr"
      tags: php-fpm
 

скорее всего, не произойдет сбоя, хотя команда ошибочна.

И поскольку вы не использовали create: false в следующей ini_file задаче, /etc/yum.repos.d/remi.repo все равно будет создан, содержащий только

 [remi]
enabled=1
 

(Для этого я, конечно, предполагаю, что env это не установлено или отличается от production )

Оттуда сообщение, которое вы получаете, вполне логично, поскольку в буквальном смысле нет базового URL-адреса для репо remi .

Некоторые другие примечания, которые вы, возможно, захотите принять во внимание:

  1. вы можете установить удаленный rpm вместе с yum модулем, напрямую передав URL-адрес как name
  2. вы не должны перебирать yum модуль: передайте список пакетов непосредственно в атрибуте name (см. Документ).
  3. не cp используйте оболочку, используйте copy модуль с remote_src: true
  4. Используйте синтаксис yaml, а не синтаксис ярлыка в стиле ini