2016-07-12 22 views
1

Ich versuchte es two ways:Wie yum Repository-Schlüssel mit ansible installieren?

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

Aber für sie, ich muß arbeiten, um die Maschine ssh, bestätigen Sie den Schlüssel importieren (mit einem yum Befehl ausgeführt wird, zum Beispiel yum list installed) und dann Bereitstellung fortsetzen. Gibt es eine Möglichkeit, es automatisch zu tun?

UPD hier ist was ansible sagt:

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

So wird der Schlüssel in der Tat in beiden Fällen importiert, aber verwendet werden, um es bestätigt werden muss.

+0

Sie sollten das 'expect'-Modul anstelle des Befehls 1 verwenden können, um die Benutzerinteraktion zu automatisieren – SztupY

+0

Haben Sie einen Fehler mit dem Modul' rpm_key' bekommen? Oder warum hast du versucht, den Schlüssel mit 'command' Modul hinzuzufügen? –

+0

@knowhy Ich habe mehr Details zu meiner Frage hinzugefügt. Aber um dir zu antworten, nein, kein Fehler. Es reicht jedoch nicht aus, dass Pakete installiert werden. Siehe "ansible" -Ausgabe oben. –

Antwort

1

es Feste von yum direkt mit -y Schalter läuft (und rpm_key Modul verwenden, wenn überhaupt):

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

Nach dem Repository hinzugefügt und das Repository Schlüssel, nur, dass Metadaten des Repo-Aktualisierung mit:

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

Dann fahren Sie mit yum: name=... wie zuvor fort.

+0

Interessanter Vorschlag, aber leider funktioniert es nicht (https://gist.github.com/x-yuri/5f177639dea7295a7192b87c0e43812a). Außerdem wäre es eine gute Sache, es nicht jedes Mal laufen zu lassen. Dass es nicht so aussieht, als hätte die Bereitstellung etwas verändert, wenn es in Wirklichkeit nicht so ist. Da 'command' Aufgaben markiert sind, werden sie standardmäßig geändert. Auch hier wird der Schalter "-q" nicht benötigt. Aber das ist sicher keine große Sache. –

+1

Ich stieß auf die [yumrepo Ansible-Rolle] (https://github.com/picotrading/ansible-yumrepo), die aussieht, als hätte sie die Handhabung für Repo-Schlüssel, also könnte es etwas ausprobieren. Ich habe auch einen Bericht in [Ansible's issue tracker] (https://github.com/ansible/ansible/issues/20711) geöffnet, da dieser richtig vom 'rpm_key' Modul behandelt werden sollte. –

+0

Entschuldigung, mein Schlechter, ich habe vergessen, dass es auch EPEL-Repository benötigt. Mit [diesem Playbook] (https://gist.github.com/x-yuri/9f3902d9f7784377315ccf5f2fce328b) ist es gelungen. Überlegen Sie bitte, fügen Sie es hinzu oder verknüpfen Sie es bitte mit Ihrer Antwort. –