"Failure talking to yum: Cannot find a valid baseurl for repo: remi"

"Failure talking to yum: Cannot find a valid baseurl for repo: remi"

我正在使用以下 ansible 脚本在 centOS 中安装 php-fpm 模块,但无法找出错误。

---
- 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

我在任务 "install php-fpm and its deps"

中遇到以下错误

失败:[127.0.0.1] (item=[u'php', u'php-fpm']) => {"ansible_loop_var": "item ", "changed": false, "item": ["php", "php-fpm"], "msg": "与 yum 通信失败:无法找到 repo 的有效 baseurl:雷米"}

有人可以帮忙解决这个问题吗?

注意:由于您没有提供完整和详细的相关任务 运行 也没有提供您 运行 目标的变量值,因此以下大部分内容都是从胡乱猜测中推导出来的剧本反对。

你上面的剧本有几个问题,最明显和最相关的一个是

    - 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

很可能不会失败,尽管命令出错

并且由于您没有在下一个 ini_file 任务中使用 create: false,因此仍将创建仅包含

/etc/yum.repos.d/remi.repo
[remi]
enabled=1

(为此,我当然假设 env 未设置或与 production 不同)

从那里,你得到的信息是非常连贯的,因为回购 remi.

实际上没有基础 url

您可能需要考虑的其他一些注意事项:

  1. 您可以通过直接将 url 作为 name
  2. 传递给 yum 模块来安装远程 rpm
  3. 你不应该遍历 yum 模块:直接在 name 属性中传递包列表(参见 doc
  4. 不要 cp 与 shell 一起使用 copy 模块与 remote_src: true
  5. 使用 yaml 语法而不是 ini 样式的快捷语法