Terraform-provider-nexus: 作成されたリポジトリの権限のリストを取得/抽出することはできないようです。

作成日 2020年06月03日  ·  16コメント  ·  ソース: datadrivers/terraform-provider-nexus

こんにちは、みんな、

これは拡張リクエストです。

リポジトリの作成後、Nexusはこのリポジトリの権限を作成します。
さらに、作業中に、このロールまたはそのロールにさらに特権を追加/アタッチする必要がある場合があります。
また、現在、特定のリポジトリの権限のリストを取得することは不可能です。
ユースケース:複数のリポジトリからの特権を持つロールが必要でした。
この種の機能があると素晴らしいでしょう。 ;)

よろしく、
タラス。

enhancement

全てのコメント16件

こんにちは@ fog1985

特権のデータソースを提供するのに役立ちますか? domainrepositorynameなどのフィルターに基づいて、フィルターに一致するすべての特権を返すことができます。 返されたリストを使用して、他の処理を行うことができます。

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

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

こんにちは@Nosmoht
うん。 それは魅力のように機能します。

@Nosmoht
複数のフィルターまたはネストされた結果の可能性があると便利です。 リポジトリ内のCuzには、複数のタイプの特権があります。 したがって、 thisリポジトリに適用されるタイプrepository-view特権を取得するとよいでしょう。

こんにちは@ fog1985

これはv1.7.0で修正する必要があります。

ドキュメンテーション

ドキュメンテーション

いいね。 ありがとう@Nosmoht

@ fog1985それが機能するかどうか、問題を解決できるかどうかを

ねえ@Nosmoht
私はそれがうまくいくと確信しています。 新しいリリースを入れてすぐにテストする機会はありません。
または、数日間そのままにしておいてください。来週初めにテストするために最善を尽くします。

こんにちは@Nosmoht
使ってみました。 そして、必要なものすべてを宣言する方法と少し混乱しています。
ここに私が持っているもの:

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

このコードで参照していました:
https://github.com/datadrivers/terraform-provider-nexus/blob/master/nexus/data_source_privileges.go

確かにprivilegesセクションがあるようです。
しかし、ないように注意してくださいとの違いは何であるformatルート宣言とで例えばformat権限の内部が。

それにもかかわらず、私は次のようになります:

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

actionsをルートに入れても、そのactions are not expected here失敗します。

こんにちは@ fog1985

データリソースは、指定されたリポジトリformatおよびtypeの特権のリストを取得するために使用されます。 したがって、宣言からprivilegesを削除してください。そうすれば、リポジトリapt-proxyのすべての特権のリストを戻り値として取得する必要があります。

こんにちは@Nosmoht
ありがとう。 私は次のようにすべての特権の名前を読み取ることができました:

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
}

たとえば、アクションがREADまたはWRITE表す特権を取得する方法はありますか?
または、すべての特権のリストだけですか?

また、データソースブロックのこのパラメータについても明確ではありません。

type = "repository-view"

リポジトリの形式にする必要がありますか、それとも特権の形式にする必要がありますか?
それが特権の形式である場合、それは期待どおりに機能しません。 Cuz with repository-view書き込み/編集などを目的としたものを含む、すべての特権の完全なリストを取得しました。

データソースの出力をいくつかのREAD、WRITE、または特権のその他のフィルターにフィルターで除外する方法についての簡単な例があると便利です。

私たちにできることは、 name = ".*-read"ような名前フィルターを追加することだけだと思います。 したがって、特権名に正規表現を使用して、正規表現に一致する特権のみを取得できます。 それはあなたを助けますか?

私はイエスと思う。 それはうまくいくでしょう。
また、Terrafomrのfilter機能を使用しようとしました。 ここで説明されているように:
https://www.terraform.io/docs/providers/oci/guides/filters.html
どちらも動作しません。

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

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

結果:

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.

したがって、可能であればnameが機能します。

暫定的な解決策として、私はこれを思いついたところです。

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

READ特権を返します。 :)

同じものを探しているかもしれない人のために:

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

このようにして、 RegExp使用して、 actions基づく優れたフィルタリングを取得できます。
または、さまざまなリポジトリやデータソースからの特権を、Terraformのconcat関数の使用法と組み合わせることもできます。

こんにちは@ fog1985

問題を解決して、特権フィルターの新しい機能リクエストを作成できますか?

こんにちは@ fog1985

問題を解決して、特権フィルターの新しい機能リクエストを作成できますか?

こんにちは@Nosmoht
もちろん。
ありがとうございました。

このページは役に立ちましたか?
0 / 5 - 0 評価