2016-07-12 6 views
1

Я пробовал two ways:Как установить ключ репозитория yum с возможностью?

- name: Add repository 
    yum_repository: 
    # from https://oss-binaries.phusionpassenger.com/yum/definitions/el-passenger.repo 
    name: passenger 
    description: Passenger repository 
    baseurl: https://oss-binaries.phusionpassenger.com/yum/passenger/el/$releasever/$basearch 
    repo_gpgcheck: 1 
    gpgcheck: 0 
    enabled: 1 
    gpgkey: https://packagecloud.io/gpg.key 
    sslverify: 1 
    sslcacert: /etc/pki/tls/certs/ca-bundle.crt 

- name: Add repository key (option 1) 
    rpm_key: 
    key: https://packagecloud.io/gpg.key 

- name: Add repository key (option 2) 
    command: rpm --import https://packagecloud.io/gpg.key 

- name: Install nginx with passenger 
    yum: name={{ item }} 
    with_items: [nginx, passenger] 

Но для того, чтобы работать, мне нужно SSH к машине, подтвердить импорт ключа (запустив любую yum команды, например yum list installed), а затем продолжить инициализацию. Есть ли способ сделать это автоматически?

UPD вот что ansible говорит:

TASK [nginx : Add repository key] ********************************************** 
changed: [default] 

TASK [nginx : Install nginx with passenger] ************************************ 
failed: [default] (item=[u'nginx', u'passenger']) => {"failed": true, "item": ["nginx", "passenger"], "msg": "Failure talking 
to yum: failure: repodata/repomd.xml from passenger: [Errno 256] No more mirrors to try.\nhttps://oss-binaries.phusionpassen 
ger.com/yum/passenger/el/7/x86_64/repodata/repomd.xml: [Errno -1] repomd.xml signature could not be verified for passenger"} 

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

+0

вы должны иметь возможность использовать модуль 'ожидать' вместо команды для автоматизации взаимодействия с пользователем. – SztupY

+0

Вы получили сообщение об ошибке с модулем' rpm_key'? Или почему вы пытались добавить ключ с модулем 'command'? –

+0

@knowhy Я добавил более подробные сведения к моему вопросу. Но отвечать на ваши, нет, нет ошибки. Просто, чтобы пакеты были установлены, недостаточно. См. Вывод «ansible» выше. –

ответ

1

Fixed, запустив yum непосредственно с -y переключателем (и с помощью rpm_key модуля, если что-нибудь):

- name: Install nginx with passenger 
    command: yum -y install {{ item }} 
    with_items: [nginx, passenger] 
0

После добавления репозитория и ключа репозитория, просто обновить метаданные, которые Repo с:

- name: update repo cache for the new repo 
    command: yum -q makecache -y --disablerepo=* --enablerepo=passenger 

Далее следует yum: name=..., как и прежде.

+0

Интересное предложение, но, к сожалению, оно [не было] (https://gist.github.com/x-yuri/5f177639dea7295a7192b87c0e43812a) работает. Кроме того, было бы хорошо, если бы он не запускался каждый раз. Чтобы не было похоже, что инициализация изменила что-то, когда на самом деле это не так. Поскольку по умолчанию команды 'command' отмечены поменявшимися. Кроме того, здесь не нужен переключатель '-q'. Но это неважно, конечно. –

+1

Я столкнулся с [ролью yumrepo Ansible] (https://github.com/picotrading/ansible-yumrepo), которая выглядит так, как будто она имеет обработку для ключей репо, поэтому может быть что-то попробовать. Я также открыл отчет в [Отслеживание проблем Ansible] (https://github.com/ansible/ansible/issues/20711), так как он действительно должен быть правильно обработан модулем 'rpm_key'. –

+0

Извините, мой плохой, я забыл, что ему нужен репозиторий EPEL. С помощью [этой пьесы] (https://gist.github.com/x-yuri/9f3902d9f7784377315ccf5f2fce328b) это удается. Подумайте о том, чтобы добавить его или ссылку на него к вашему ответу. –

 Смежные вопросы

  • Нет связанных вопросов^_^