#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
.
Некоторые другие примечания, которые вы, возможно, захотите принять во внимание:
- вы можете установить удаленный rpm вместе с
yum
модулем, напрямую передав URL-адрес какname
- вы не должны перебирать
yum
модуль: передайте список пакетов непосредственно в атрибуте name (см. Документ). - не
cp
используйте оболочку, используйтеcopy
модуль сremote_src: true
- Используйте синтаксис yaml, а не синтаксис ярлыка в стиле ini