2017-06-01 2 views
0

Ich habe eine vordefinierte Rollbindung für ein OpenShift-Projekt, das ich mit einer .yml-Datei bearbeiten/aktualisieren möchte.Wie bearbeiten Sie vorhandene Rollebinding in OpenShift mit Yml-Dateien?

Ich habe bereits versucht, die folgenden:

  • oc create –f -> fehlgeschlagen ist, offensichtlich, weil es vorhanden ist, ist der Fehler:

    Error from server: rolebinding "edit" already exists 
    
  • oc patch –f -> ist fehlgeschlagen, sieht aus wie Patch nur akzeptiert -p Argument, der Fehler ist:

    Error: Must specify -p to patch 
    See 'oc patch -h' for help and examples. 
    
  • oc replace –f -> fehlgeschlagen ist, der Fehler ist:

    Error: error when replacing "sample.yml": resource name may not be empty 
    If I were to run the create command against the file on a new project, it works. 
    

Bitte antworten Sie, wenn jemand Gedanken dazu hat.

Dank viel, Aneesh

+2

Jeder Grund, warum Sie nicht einfach mit '' oc patch'' arbeiten können? Es wäre auch hilfreich, das yaml zu sehen, das Sie verwenden, damit Sie besser verstehen können, was Sie tun, und Tests mit ihm durchführen, also kann Lösung vorschlagen. –

+0

@GrahamDumpleton .. Lemme versuchen, die Yml-Dateien anhängen. –

+0

@GrahamDumpleton: Hier gehts .. [defaultpolicy.yml] 'APIVERSION: v1 Art: Template Artikel: - APIVERSION: v1 Gruppennamen: - group-name-a - group-name-b Art: RoleBinding Metadaten: Name: bearbeiten Namespace: Projekt -name-a roleRef: Name: bearbeiten Namespace: Projektname-a Themen: - Art: Gruppe Name: group-name-a - Art: Gruppe Name: group-name-b BenutzerName : null ' –

Antwort

0

Vielleicht oc patch -p $(cat file.patch) ... würde für Sie arbeiten?

+0

Nein. Das Format, das zum Patch-Befehl benötigt wird, ist ziemlich unterschiedlich. Sie können ihm nicht einfach eine Ressourcendatei geben, die Sie für "oc create", "oc replace" oder "oc apply" verwenden würden. –

+0

Vereinbarend mit Graham, wäre es intuitiv gewesen, die Möglichkeit zu haben, eine Datei gegen den Patch zu liefern, sieht aber so aus, als ob der Patch nur einen JSON-String-Wert akzeptiert; im Gegensatz dazu, wie Sie eine Datei zum Erstellen, Ersetzen oder Anwenden übergeben können. –

0

Wenn ich verstehe, was Sie versuchen zu tun, würde ich separate oc adm policy Befehle verwenden, um es zu tun.

oc adm policy add-role-to-group edit group-name-a 
oc adm policy add-role-to-group edit group-name-b 

oc adm policy add-role-to-group edit group-name-x 
oc adm policy add-role-to-group edit group-name-y 
oc adm policy add-role-to-group edit group-name-z 

Mit oc patch wird nur, wenn es zur Arbeit gehen bereits eine Ressource-Objekt für den roleRef Namen existiert, wird es nicht die ganze Rolle Bindungsobjekt zu erstellen, wenn es nicht existiert.

Das Ändern von Rollen ist eine der Zeiten, in denen Sie keine additiven Änderungen vornehmen können, indem Sie einfach eine neue Ressourcenobjektdefinition laden.

Sie können dies sehen, indem Sie die Protokollierung für den Befehl oc aktivieren und sehen, was es tut. Wenn Sie zusätzliche Rollenbindungen hinzufügen, fragt es zunächst die vorhandene Rollenbindung ab, fügt die Änderung hinzu und lädt dann den neuen geänderten Eintrag mit allen darin enthaltenen Rollenbindungen.

Run:

oc --loglevel=9 adm policy add-role-to-group edit group-name-x 

wenn nur group-name-a und group-name-b bereits eingerichtet worden, um zu sehen, was ich meine.

Verwandte Themen