第7章 動的グループの使用
動的グループは、インベントリーの検索に使用する検索用語を指定し、グループに属する一致するリソースを特定します。検索結果は、結果が追加および削除されると自動的に変更されるため、グループメンバーシップは常に変更され、常に最新の状態になります。動的グループを使用すると、大規模な履歴の管理タスクを自動化できます。
注記
動的グループは、ニックネーム Dynagroups によって参照され ます。
エンタープライズリソースは、クラスター ID、ブロードキャストグループ、論理サービス層、地理的な場所、セキュリティードメイン、またはその他の論理グループを使用してグループ化できます。
個別のリソースは複数のグループに属する可能性がありますが、大規模な資料では、複数のグループ定義が企業リソースにどのように影響するかを知ることが重要です。
7.1. 動的グループ構文
動的グループは、グループ定義 で設定されます。グループ定義は、リソースの検索を定義する 式 と、再計算の間隔などのグループに関するその他の情報を定義します。
動的グループには、動的検索(「動的検索構文について」)に使用される式構文と非常に似ています。
7.1.1. 一般的な式構文
式 は、属性の特定の値によって、特定のリソース属性を中心とするか、単に属性が存在するだけで特定のリソース属性を中心とした検索条件です。
式は、リソースをグループ化する方法を定義します。
- 特定のリソース属性または値( 簡単 な式)
- リソースタイプ(ピボットテーブル 式 )
- 別のグループのメンバー別( 絞り込む 式)
1 つのグループ定義は複数の式を持つことができます。グループ定義の式の順序は問題ありません。たとえば、グループメンバーの計算時に、両方の式が全く同じ解釈されます。
expression 1 exprA1 exprA2 groupby exprB1 groupby exprB2 expression 2 exprA2 exprA1 groupby exprB2 groupby exprB1
注記
複数の式がグループ定義で使用される場合、それらは論理 AND 表現として扱われ、リソースはそのグループに属するすべての基準と一致する必要があります。
dynagroup 定義の式の間の空の行は無視されます。
設定可能なリソースプロパティーは、リソース名、タイプ、プラグイン、バージョン、設定プロパティー、インベントリー ID 番号などのリソース情報を対象とします。
type | サポートされる属性 | ||||||
---|---|---|---|---|---|---|---|
リソース自体に関連する | |||||||
resource
|
| ||||||
リソースタイプに関連する | |||||||
resourceType
|
| ||||||
リソース設定に関連する | |||||||
plug-inConfiguration
|
プラグイン設定プロパティー
| ||||||
resourceConfiguration
|
すべてのリソース設定プロパティー
| ||||||
リソースモニタリングデータに関連する | |||||||
traits
|
任意の監視特性
| ||||||
可用性
|
UP または DOWN のいずれかの現在の状態
|
式に structure resource.属性 がある場合、これはグループのメンバーとなるリソースに適用されます。ただし、先祖エントリーまたは子エントリーの属性を使用して、グループメンバーを再帰的に特定することが可能です。
たとえば、リソースをインベントリー ID 10001 としてメンバーとして追加するには、式は以下のようになります。
resource.id = 10001
ID が 10001 のリソースの 子 をすべてグループメンバーとして追加するには、プレフィックスを使用し resource.parentます。
resource.parent.id = 10001
には、表7.1「動的グループプロパティー」 以下のすべてのリソース属性の接頭辞が 4 つあります。
- resource
- resource.child
- resource.parent
- resource.grandParent
定義が制限され、フィルターに一致するリソースがない場合は、グループは作成されません。JBoss ON は、実際にグループ定義により作成されないようにするため、空のグループになります。空のグループがないため、インベントリーにリストされている余分なグループがないため、実際のインフラストラクチャーを反映して管理が容易になります。
7.1.2. 単純な式: 値の検索
単純な式は、属性と値のペアまたはこの形式でトリドを使用します。
resource.attribute[string-expression] = value
例:
resource.parent.type.category = Platform
リソース属性にはすべて string-expression が追加されているわけではありません。string-expression は基本的にサブ属性です。たとえば、
resource.trait は
汎用リソース属性で、partitionName などのサブ属性は実際のパラメーターを 特定
します。
単純な式は通常明示的な値に基づいてリソースを検索しますが、リソースには null 値を持つ属性があり、これらの null 値は単純な式で返されません。empty キーワードは、null 値を持つ特定の属性を持つリソースを検索します。
empty resource.attribute[string-expression]
empty キーワードを使用する場合は、式で指定される 値 はありません。
simple 式は、null ではない限り、属性の値に関係なく、その属性を持つすべてのリソースを検索する not empty キーワードも使用できます。empty キーワードと同様に、すべての値が式と一致するため、式に 値 を指定する理由はありません。
not empty resource.attribute[string-expression]
7.1.3. ピボットテーブル: 属性によるグループ化
簡単な式は検索の特定の結果に基づいて、1 つのグループを作成します。ピボットテーブルは複数のグループを作成 します。これは、属性が存在するかどうかに基づいてグループに属するリソースを特定し、値に基づいてサブグループを作成します。ピボットテーブル式では groupby キーワードを使用します。
groupby resource.attribute
ピボットテーブルの式は、属性値の一意の出現に基づいてグループを作成します。たとえば、
parent.name
属性はすべての親リソースに基づいて一意のグループを作成します。
groupby resource.parent.name
のリソースについて 図7.1「リソースおよび親」、ピボットテーブルはリソース階層内で ResourceParentA、ResourceParentB、および✓A2 の 3 つの固有のグループを作成します。
図7.1 リソースおよび親
グループ定義全体に null 値を持つリソースが含まれる場合、ピボットテーブル式はこれらのリソースが含まれる特別なサブグループを作成します。
7.1.4. 式の絞り込み: グループのメンバー
式は通常、インベントリー 全体 で評価されます。たとえば、JBoss AS 7 Server リソースタイプのピボットテーブル式を設定すると、EAP 6 または AS 7 インスタンスごとにインベントリーがチェックされます。
特に、アクセス制御またはバンドル管理用に粒度の細かいグループを作成しようとすると、同じタイプのリソースのサブセットを取得するために複雑な式を作成しようとするより、既存のグループのメンバーに対して実行する式を定義する方が簡単です。
これは、memberof キーワードを指定して行われます。これは、グループ名(互換性のあるグループ、複数のグループ、自動グループ、再帰グループ、別の dynagroup であっても)を指定し、そのグループのメンバーのみが他の一致式に対して評価されます。
注記
memberof キーワードはグループ名を指定します。グループが再帰グループの場合、評価のためにすべての再帰メンバーがグループの一部として組み込まれます。
たとえば、管理者は開発チーム、QE、および実稼働チーム向けのアプリケーション開発関連リソースに異なるグループを作成します。これらは、プラットフォーム、Postgre データベース、EAP 6 サーバー、および Web コンテキストの混合グループです。新しいリソースがデプロイされると、CLI スクリプトを実行してリソースをインポートし、リソースグループを自動的に更新します。アクセス制御ルールとロールは、リソースタイプに基づいて、Dev Stack Resource Group、複数のグループ内のサブグループ、および リソースタイプに基づいてメイングループの両方を使用する必要があります。複数のグループおよびロールは、リソースがデプロイまたは削除されるたびに作成および更新するの で はなく、まず指定のチームリソースグループに式の範囲を絞り込み、リソースタイプ別にピボットします。Dynagroup の定義は一度だけ設定する必要があります。また、グループが再計算されるたびに、インベントリーの変更で動的に更新されます。
memberof = "Dev Resource Group" groupby resource.type.name
注記
グループメンバーシップは、他の式と同様に、dynagroup が再計算される時にのみ memberof 変更で更新されます。
グループ定義では複数の memberof 式が許可され、1 つのグループを参照する各 memberof 式を使用できます。複数の memberof 式が使用される場合、それらは AND 式として扱われます。一致するリソースは すべて指定されたすべて のグループのメンバーである必要があります。
7.1.5. 複合式
複数の式を 1 つの dynagroup 定義で使用できます。これらは 複雑な 式です。
複数の式がグループ定義で使用される場合、それらは論理 AND 表現として扱われ、リソースはそのグループに属するすべての基準と一致する必要があります。(Dynagroup 定義の式間の空の行は無視されます。)
たとえば、この基本的な式は、プラットフォームを親として持つすべてのリソースを検索します。
resource.parent.type.category = Platform
これにより、サーバーおよびサービスの非常に長いリストが返されます。その初期リストは、名前でフィルターする別の簡単な式を追加して、さらに絞り込むことができます。
resource.parent.type.category = Platform resource.name.contains = JBossAS
プラットフォームが親として、JBossAS が名前に指定 さ れ た リソースのみがグループに追加されます。
ピボットテーブルの式は複合式でも使用することができます。すべての行には groupby キーワードを含める必要があります。最初の行だけでなく、groupby キーワードが必要です。
groupby resource.type.plugin groupby resource.type.name groupby resource.parent.name
複合式には、単純な式とピボットテーブルの両方を含めることができます。これにより、プラットフォーム上の一意のサーバータイプごとに互換性のあるグループが作成されます。
resource.type.category = server groupby resource.type.plugin groupby resource.type.name groupby resource.parent.name
最後に、複合式には空のキーワードを含めることができ、空のキーワードは含まれません。たとえば、簡単な式を使用して、リソースタイプと名前を基にして JBoss サーバーを特定できます。その後、どの JBoss サーバーがセキュアであるかを特定するために、式は空のプリンシパル接続プロパティーで JBoss サーバーのフィルターを実行できます。
resource.type.plugin = JBossAS resource.type.name = JBossAS Server empty resource.pluginConfiguration[principal]
7.1.6. サポートされない式
複数の式を一緒に使用する方法には制限があります。
すべての式が同じ設定エリアにある必要があります。
式のすべての設定プロパティーはリソース設定からのみ、またはプラグイン設定のみである必要があります。両方から式を取ることはできません。
各プロパティーは一度だけ使用する必要があります。
プロパティーは、dynagroup 定義で 1 回のみ使用できます。
valid resource.trait[x] = foo not valid resource.trait[x] = foo resource.trait[y] = bar
たとえば、resource.trait 式は定義で 1 回だけ発生するだけです。
resource.grandParent.trait[Trait.hostname].contains = stage resource.parent.type.plugin = JBossAS5 resource.type.name = Web Application (WAR)
1 秒未満の時間(またはそれ以上)を使用すると、後続の使用に失敗し、定義が解析されません。
resource.grandParent.trait[Trait.hostname].contains = stage resource.parent.type.plugin = JBossAS5 resource.type.name = Web Application (WAR) resource.trait[contextRoot] = jmx-console
これにより、計算エラーが発生します。
There was a problem calculating the results: java.lang.IllegalArgumentException: org.hibernate.QueryParameterException: could not locate named parameter [arg2]
[arg2] エラーは、同じ型の複数の式が使用されており、2 つ目の式によって計算に失敗するという記号です。
これは、プロパティータイプが 異なる リソースコンテキストで使用される場合でも true になります。
resource.parent.trait[x] = foo resource.grandParent.trait[y] = bar
この例では、グランド親リソースに適用された 1 つの特性と、リソース自体に 1 つの特性が適用されていました。trait プロパティーが異なるリソースであっても 2 回使用されたため、これは失敗しました。
7.1.7. Dynagroup 式の例
1 つのグループ定義には複数の式を含めることができ、1 つの定義で単純な式とピボットされた式を混在させることもできます。これらの例の多くは、定義を完了するために複数の式が必要です。
例7.1 JBoss クラスター
resource.type.plugin = JBossAS resource.type.name = JBossAS Server groupby resource.trait[partitionName]
例7.2 各プラットフォームタイプのグループ
resource.type.plugin = Platforms resource.type.category = PLATFORM groupby resource.type.name
例7.3 autogroups
groupby resource.type.plugin groupby resource.type.name groupby resource.parent.name
注記
これにより、多数のグループが大量に作成される可能性があります。
例7.4 未加工の測定テーブル
resource.type.plugin= Postgres resource.type.name = Table resource.parent.name = rhq Database resource.name.contains = rhq_meas_data_num_
例7.5 マルチキャスト検出のエージェントのみ
resource.type.plugin= RHQAgent resource.type.name = RHQ Agent resource.resourceConfiguration[rhq.communications.multicast-detector.enabled] = true
例7.6 イベント追跡を含む Windows プラットフォームのみ
resource.type.plugin= Platforms resource.type.name = Windows resource.pluginConfiguration[eventTrackingEnabled] = true
例7.7 マシン別に JBoss AS サーバー
groupby resource.parent.trait[Trait.hostname] resource.type.plugin = JBossAS resource.type.name = JBossAS Server