Red Hat Training
A Red Hat training course is available for Red Hat JBoss Operations Network
第13章 例: インベントリーを管理するためのスクリプト(すべてのリソースタイプ)
サーバーおよびサービスは、定期的にローカルマシンを追加または削除します。検出スキャンは定期的にスケジュールされますが、実際に JBoss ON インベントリー内でそのリソースの追加または削除は手動です。また、管理者は実際にリソースのインポートを選択する必要があります。
管理者は、新しいリソースを自動的に追加し、定義する基準に基づいて他のリソースを自動的に削除することで、JBoss ON インベントリーを管理できます。
13.1. New Resources の自動インポート: autoimport.js
リソースが検出されると、技術的にはすでに JBoss ON のインベントリーにあります。ステータスには、が含まれ NEWます。JBoss ON はリソースが存在する場合に認識されるため、JBoss ON の状態はリソースがコミットされていないため、JBoss ON が管理できないためです。
スクリプトを作成して、定期的に実行して、新たに検出したリソースをインベントリーに自動的に追加できるようにします。このスクリプトはインベントリーの状態の新しいリソースに基づいて識別を行うため、無視またはインポート済みのリソースが含まれていません。
CLI スクリプトは 3 つの手順で実行されます。
- を使用して新規リソースを識別します。
findUncommittedResources()
メソッド。 - 新規リソースの ID を取得します。
- その後、検出システムのインポート操作を呼び出してこれらのリソースをインポートします。
//Usage: autoImport.js //Description: Imports all auto-discovered inventory into JON // autoImport.js rhq.login('rhqadmin', 'rhqadmin'); println("Running autoImport_js"); var resources = findUncommittedResources(); var resourceIds = getIds(resources); DiscoveryBoss.importResources(resourceIds); rhq.logout();
リモート API にすでに定義されている操作の 1 つのみ
importResources
.他の 2 つの機能 findUncommittedResources
および getIds
- スクリプトで定義する必要があります。
コミットされていない(新しい)リソースは、
ResourceCriteria
検索するには、インベントリーのステータスに基づいて検索パラメーターを追加します。
// returns a java.util.List of Resource objects // that have not yet been committed into inventory function findUncommittedResources() { var criteria = ResourceCriteria(); criteria.addFilterInventoryStatus(InventoryStatus.NEW); return ResourceManager.findResourcesByCriteria(criteria); }
2 番目の関数は、インベントリー検索が実際にリソースを返したことを確認します。その場合は、アレイ内の各リソースの ID を取得します。
// returns an array of ids for a given list // of Resource objects. Note the resources argument // can actually be any Collection that contains // elements having an id property. function getIds(resources) { var ids = []; if (resources.size() > 0) { println("Found resources to import: "); for (i = 0; i < resources.size(); i++) { resource = resources.get(i); ids[i] = resource.id; println(" " + resource.name); } } else { println("No resources found awaiting import..."); } return ids; }