Terraform-provider-nexus: Tampaknya tidak mungkin untuk mendapatkan/mengekstrak daftar hak istimewa untuk Repositori yang dibuat.

Dibuat pada 3 Jun 2020  ·  16Komentar  ·  Sumber: datadrivers/terraform-provider-nexus

Halo kawan-kawan,

Ini adalah permintaan peningkatan.

Setelah pembuatan Repositori, Nexus membuat hak istimewa untuk repositori ini.
Lebih lanjut, dalam pekerjaan mungkin terjadi bahwa lebih banyak hak istimewa perlu ditambahkan/dilekatkan pada peran ini atau itu.
Dan sekarang tidak mungkin untuk mendapatkan daftar hak istimewa untuk repositori tertentu.
Use-case: membutuhkan peran yang memiliki hak istimewa dari beberapa Repositori.
Akan luar biasa memiliki fitur seperti ini. ;)

Salam,
Tara.

enhancement

Semua 16 komentar

Hai @fog1985 ,

akankah membantu menyediakan sumber data untuk hak istimewa? Itu bisa kembali, berdasarkan filter seperti domain , repository atau name , semua hak istimewa yang cocok dengan filter. Anda dapat menggunakan daftar yang dikembalikan untuk melakukan beberapa hal lain dengannya.

resource "nexus_repository" "demo" {
  type   = "hosted"
  format = "maven2"
  name   = "demo"
  ...
}

data "nexus_privileges" "demo" {
  repository = nexus_repository.demo.name
}

Hai @Nosmoht ,
Ya. Ini akan bekerja seperti pesona.

@Nosmoht ,
Akan menyenangkan untuk memiliki kemungkinan beberapa filter atau hasil bersarang. Karena dalam repositori ada beberapa jenis hak istimewa. Oleh karena itu akan menyenangkan untuk mendapatkan katakanlah hak istimewa tipe repository-view yang diterapkan untuk repositori this .

Hai @fog1985 ,

ini harus diperbaiki dengan v1.7.0 .

Dokumentasi

Dokumentasi

Dingin. Terima kasih @Nosmoht

@fog1985 Tolong beri tahu saya jika berhasil dan jika kami dapat menyelesaikan masalah.

Hai @Nosmoht ,
Saya yakin itu berhasil. Tidak memiliki kesempatan untuk menempatkan rilis baru dan mengujinya segera.
Atau tolong biarkan selama beberapa hari dan saya akan mencoba yang terbaik untuk mengujinya awal minggu depan.

Hai @Nosmoht ,
Saya baru saja mencoba menggunakannya. Dan agak bingung dengan cara mendeklarasikan semua barang yang dibutuhkan.
Berikut yang saya miliki:

data "nexus_privileges" "apt-proxy-read" {
  format     = "apt"
  repository = "apt-proxy"
  type = "repository-view"
  privileges {
    actions = ["read"]
  }
}

Mengacu pada kode ini:
https://github.com/datadrivers/terraform-provider-nexus/blob/master/nexus/data_source_privileges.go

Tampaknya memang ada bagian privileges .
Tetapi tidak yakin apa perbedaan antara format misalnya dalam deklarasi root dan format di dalam hak istimewa.

Namun demikian, saya mendapatkan sebagai berikut:

Error: "privileges": this field cannot be set

  on roles.tf line 1, in data "nexus_privileges" "apt-proxy-read":
   1: data "nexus_privileges" "apt-proxy-read" {

Jika saya memasukkan actions ke root masih gagal actions are not expected here .

Hai @fog1985 ,

sumber daya data digunakan untuk mendapatkan daftar hak istimewa untuk repositori yang ditentukan format dan type . Jadi tolong hapus privileges dari deklarasi Anda dan Anda akan mendapatkan daftar semua hak istimewa repositori apt-proxy sebagai nilai kembalian.

Hai @Nosmoht ,
Terima kasih. Saya telah berhasil membaca semua nama hak istimewa sebagai berikut:

data "nexus_privileges" "apt-proxy-read" {
  format     = "apt"
  repository = "apt-proxy"
  type = "repository-view"
}

output "privileges" {
    value = data.nexus_privileges.apt-proxy-read.privileges.*.name
}

Apakah ada cara untuk mendapatkan hak istimewa misalnya tindakan yang merupakan singkatan dari READ atau WRITE ?
Atau hanya daftar semua hak istimewa?

Juga tidak jelas tentang parameter ini di blok sumber data:

type = "repository-view"

Haruskah format repositori atau format hak istimewa?
Jika itu adalah format hak istimewa maka itu tidak berfungsi seperti yang diharapkan. Karena dengan repository-view Saya mendapatkan daftar lengkap semua hak istimewa termasuk yang ditujukan untuk menulis/mengedit dll.

Akan lebih baik untuk memiliki contoh singkat tentang cara memfilter output dari sumber data ke beberapa READ, MENULIS, atau filter lain untuk hak istimewa.

Saya percaya satu-satunya hal yang bisa kita lakukan adalah menambahkan filter nama seperti name = ".*-read" . Jadi kita bisa menggunakan regexp pada nama hak istimewa untuk mendapatkan hanya hak istimewa yang cocok dengan regexp. Apakah itu membantu Anda?

Saya pikir ya. Itu akan berhasil.
Saya juga mencoba menggunakan fasilitas filter Terrafomr. Seperti yang dijelaskan di sini:
https://www.terraform.io/docs/providers/oci/guides/filters.html
Tidak bekerja juga.

data "nexus_privileges" "apt-proxy-read" {
  format     = "apt"
  repository = "apt-proxy"
  type = "repository-view"

  filter {
    name = "actions"
    values = ["READ"]
  }
}

Hasil:

Error: Unsupported block type

  on roles.tf line 6, in data "nexus_privileges" "apt-proxy-read":
   6:   filter {

Blocks of type "filter" are not expected here.

Jadi name akan bekerja jika memungkinkan.

Sebagai solusi sementara, saya baru saja menemukan yang ini:

value = [for x in data.nexus_privileges.apt-proxy-read.privileges: x.name if contains(x["actions"], "READ")]

Yang mengembalikan hak istimewa READ . :)

Bagi mereka yang mungkin mencari hal yang sama:

output "privileges_apt_proxy_all_read" {
    value = [for x in data.nexus_privileges.apt-proxy-read.privileges: x.name if can(regex("ALL|READ", join("",x.actions)))]
}

output "privileges_apt_proxy_browse" {
    value = [for x in data.nexus_privileges.apt-proxy-read.privileges: x.name if can(regex("BROWSE", join("",x.actions)))]
}

output "privileges_multiple_repos_example" {
    value = concat([for x in data.nexus_privileges.apt-proxy-read.privileges: x.name if can(regex("ALL|READ", join("",x.actions)))], [for x in data.nexus_privileges.apt-proxy-read.privileges: x.name if can(regex("BROWSE", join("",x.actions)))])
}

Dengan cara ini, kita bisa mendapatkan pemfilteran yang bagus berdasarkan actions dengan penggunaan RegExp .
Atau bahkan menggabungkan hak istimewa dari repositori dan sumber data yang berbeda dengan penggunaan fungsi concat Terraform.

Hai @fog1985 ,

bisakah kita menutup masalah dan membuat permintaan fitur baru untuk filter hak istimewa?

Hai @fog1985 ,

bisakah kita menutup masalah dan membuat permintaan fitur baru untuk filter hak istimewa?

Hai @Nosmoht ,
Tentu.
Terima kasih.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat