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