オープンソース

一覧へ

3. pc-snipe

3.1. pc-snipeとは

pc-snipeは、Snipe-PCViewのコアソフトウェアで、 1台のWindows PCからSNMPで情報を取得し、 これらをSnipe-ITに登録する機能があります。

pc-snipeの処理の流れは次の通りです。

  1. pc-snipeプログラムを起動する
  2. 設定ファイル群を読み込む
    • 環境設定ファイル
    • Snipe-ITに登録されたカスタムフィールドのマッピングを定義するファイル
    • 各登録項目について、情報の取捨選択をする設定ファイル
    • 各登録項目について、出力の形式を定義するテンプレートファイル
  3. 指定された資産をSnipe-ITから探す
  4. コンピュータ名をもとにActive DirectoryもしくはDNSサーバから対象PCのIPアドレスを取得する
  5. PCに対してSNMPを利用して情報を取得しに行く
  6. PCから取得した情報をSnipe-ITに登録する
pc-snipeの処理の流れ

pc-snipeの処理の流れ

3.2. pc-snipeのインストール

pc-snipeのインストールの手順は次の通りです。

  1. インストールするサーバ上に必要なソフトウェアをインストールする
  2. 公式サイトからソフトウェアアーカイブをダウンロードする
  3. /usr/local配下にソフトウェアを展開する
  4. 必要な設定を行う

3.2.1. インストールするサーバ上に必要なソフトウェアをインストールする

次のソフトウェアをインストールします。

  • python3
  • 次のpython3モジュール
    • pysnmpモジュール
    • pysnmp-mibsモジュール
    • dnsモジュール

3.2.2. 公式サイトからソフトウェアアーカイブをダウンロードする

下記のURLからソフトウェアアーカイブをダウンロードします。 アーカイブは、pc-snipe-バージョン.tar.gzです。

https://github.com/designet-inc-oss/Snipe-PCView

3.2.3. ソフトウェアを展開する

ダウンロードしたアーカイブを/usr/local等に展開します。 展開後、サンプルの設定をコピーします。

# cd /usr/local
# tar xvzf /path/to/pc-snipe-1.0.tar.gz
# cd /usr/local/pc-snipe/sample
# tar cf - . | ( cd .. ; tar xf - )

3.2.4. 環境設定ファイルを編集する

環境設定ファイルは、etc/pc-snipe.confです。 環境設定ファイルの書式は「項目名=設定値」で、 1行に1項目ずつ記載します。 項目名は大文字と小文字を厳密に区別します。

最低限、次の項目をサンプルから変更します。

  • SnipeIT_API_URL
    • SnipeITのAPIのURLを指定します
    • 典型的なSnipe-ITのインストールでは、http://ホスト名/api/v1 です
    • ホスト名の部分を、実際にSnipe-ITが稼働しているホスト名に書き換えます
    • 自サーバに同居している場合は、127.0.0.1です
  • DNS_AddressとDNS_Domain
    • 下記参照
  • DefaultCommunity
    • すべてのPCに設定するSNMPコミュニティ名が一律の場合、そのコミュニティ名を設定します

他の各項目の説明は、付録の pc-snipeの環境設定ファイル を参照してください。

3.2.4.1. DNSサーバとドメイン名について

管理対象PCがActive Directory(AD)のドメインにサインインすると、ADのDynamic DNS機能によりそのPCのIPアドレスが登録されます。 pc-snipeではこの機能を利用して、資産タグやコンピュータ名から実際にSNMP接続するIPアドレスを調べています。 DDNSに登録されるホスト名は、サインインしたPCに設定されているコンピュータ名をもとに、 ADの持つドメイン名が補完されて登録されます。 たとえば、コンピュータ名が「pc10002」、ADのドメイン名が「example.com」の場合、 ADに対して「pc10002.example.com」というホスト名で問い合わせることで、 pc10002のIPアドレスを調べることができます。

pc-snipeがインストールされているLinuxサーバのリゾルバがPCの名前解決をするDNSサーバに向いていない場合、DNS_Addressを指定します。 逆に、リゾルバがActive Directory(AD)などを向いている場合にはDNS_Addressは設定しません。

Snipe-ITの「コンピュータ名」の項目に、ドメイン名まで含めずに登録する場合(上記例では「pc10002」だけ)、 ADのDNSで名前を解決するため、ドメイン名の補完が必要になりますので、 DNS_Domainを設定します(上記例では「example.com」)。

ADのIPアドレスが172.16.10.101、ドメイン名がexample.comの場合、次のように設定します。

DNS_Address=172.16.10.101
DNS_Domain=example.com

3.2.5. Snipe-ITの情報とのマッピングファイルの設定

ファイル名は環境設定ファイルの設定項目MappingFileの設定値です。 標準では/usr/local/pc-snipe/etc/mapping.confです。

書式は「項目名=Snipe-ITのカスタムフィールド名」です。 ここに設定した内容が実際に管理する項目であり、 記載しなかった項目名についてはPCからの情報取得も、 Snipe-ITへの登録も行いません。 各項目の内容は、 Snipe-ITのカスタムフィールドの準備 の章の Snipe-PCViewで扱うカスタムフィールドの表 を参照してください。

設定例は次の通りです。

ComputerName=コンピュータ名
IPaddr=IPアドレス
Community=コミュニティ名
CPUThreads=CPUスレッド数
MemorySize=メモリサイズ
DiskSize=ディスクサイズ
DiskInfo=ディスク情報
Appli=インストール済みアプリケーション
ComputerInfo=コンピュータ情報
DeviceInfo=デバイス情報
NetworkInfo=ネットワークデバイス情報

3.2.6. Snipe-ITのAPIキーを設定する

Snipe-ITのAPIキーは、Snipe-ITの画面上で生成し、 生成されたキーをSnipeIT_API_KeyFileで指定したファイルに保存します。

Snipe-ITのAPIキーの生成の手順は次の通りです。

  1. 画面上部の管理者名の部分をクリックし、開いたタブの「APIキーの管理」をクリックします。
APIキーの管理画面へのアクセス

APIキーの管理画面へのアクセス

  1. 開いたキー管理画面の左上の「Create New Token」をクリックします
APIキーの新規作成ボタン

APIキーの新規作成ボタン

  1. ポップアップしたウィンドウのName欄に適当な一意な名前を入力し、「Create」ボタンをクリックします
APIキーの新規作成

APIキーの新規作成

  1. 表示されたAPIキーをクリップボードにコピーします
    • 非常に長いキーが表示されます
    • ひとたび「Close」ボタンをクリックすると、二度と表示されませんので、 クリップボードにコピーし忘れたら、一度作成したキーを削除した上で、 再度作成し直してください
作成されたAPIキーの表示例

作成されたAPIキーの表示例(画像は一部加工しています)

  1. 生成されたキーをファイルに保存します
    • SnipeIT_API_KeyFileで指定したファイルを開き、ペーストして保存します
# vi /usr/local/pc-snipe/etc/api.key
(クリップボードにコピーしたAPIキーをペーストし、保存する)

3.2.7. 取得情報の出力書式、取捨選択の設定をする

取得する項目ごとに、出力書式と取捨選択を設定することができます。 出力書式はテンプレートファイル、 情報の取捨選択はホワイトリスト・ブラックリストファイルで制御します。

ファイルの配置は次の通りです。

  • ディレクトリ
    • tmpl/項目名/
  • ファイル名(各項目名のディレクトリに配置されるファイル名)
    • テンプレートファイル:template.conf
    • ホワイトリストファイル:whitelist.conf
    • ブラックリストファイル:blacklist.conf

テンプレートファイルは、 項目ごとに出力書式を制御するためのファイルです。 置換タグと呼ばれるメタ文字列が、取得した情報に置換されます。 複数の情報に対応するためのループタグもあります。 取得項目によって、テンプレートファイルが効かないものもあります。

ホワイトリストファイル、ブラックリストファイルは、 取得された情報に含まれる語句によって情報を取捨選択するものを記述します。 取捨選択の対象情報は、項目ごとに異なります。 取捨選択のための語句は、1行に1つずつ書き、複数指定することもできます。 ホワイトリストとブラックリストは、次のように働きます。

  • ホワイトリストもブラックリストも定義しない
    • 取得情報を全て取り込みます
  • ホワイトリストのみ定義し、ブラックリストは定義しない
    • ホワイトリストに書かれた語句にマッチする情報のみ取り込みます
    • 複数語句を指定した場合、どれかにマッチする情報が取り込み対象です
  • ブラックリストのみ定義し、ホワイトリストは定義しない
    • ブラックリストに書かれた語句にマッチする情報は取り込み対象外です
    • 複数語句を指定した場合、どれかにマッチする情報は対象外になります
  • ホワイトリストとブラックリスト両方を定義
    • ホワイトリストに指定した語句にマッチした情報の中から、 ブラックリストに指定した語句にマッチした情報を除外します

テンプレートファイル、ホワイトリストファイル、ブラックリストファイルは、 サンプルとして提供されている内容から変更する必要はなく、 そのままでも利用に差し支えありません。 細かく情報の出力内容を変更したい、取得する情報を絞り込みたい場合には、付録にある 詳細情報 を参考に、設定を変更してください。

3.3. pc-snipeの実行

pc-snipeは単体のコマンドとして実行することができます。 書式は次の通りです。

# pc-snipe [-d] [-c conffile] <-t 資産タグ|-n コンピュータ名>
pc-snipeの引数
引数 説明
-d PCからSNMPで情報は取得するが、Snipe-ITには反映しない
-c ファイル名 「ファイル名」で指定したファイルをetc/pc-snipe.confの代わりに環境設定ファイルとして読み込む
-t 資産タグ
資産タグ指定モード
Snipe-ITに指定した資産タグとして格納されているPCの情報を取得する
必ず末尾の引数として指定する
-nとは同時に指定できない
-n コンピュータ名
コンピュータ名指定モード
Snipe-ITに指定したコンピュータ名として格納されているPCの情報を取得する
必ず末尾の引数として指定する
-tとは同時に指定できない

pc-snipeコマンドを実行すると、成否にかかわらずJSON形式で結果を出力します。 JSON形式の書式は次の通りです。

{
  "status": 終了コード,
  "messages": [
    メッセージ(あれば)...
  ],
  "tag": "対象資産の資産タグ",
  "before": {
    "コンピュータ名": "pc10002",
    ....
  },
  "after": {
    "コンピュータ名": "pc10002.example.com",
    ....
  }
}
JSONの書式
項目 説明
status コマンドの終了コード
messages
エラーメッセージや警告メッセージ
配列形式で、複数ある場合は複数出力される
エラーも警告もない場合は空配列
tag
対象データの資産タグ
Snipe-ITに該当データがなかった場合は空
before
pc-snipeコマンド実行前にSnipe-ITに登録されていた情報
下の階層には、Snipe-ITに登録されている項目名をキーに、
mapping.confに記載されたすべての項目名について内容が表示される
Snipe-ITに該当データがなかった場合は空配列
after
PCからSNMPによって取得された情報
下の階層には、Snipe-ITに登録されている項目名をキーに、
mapping.confに記載されたすべての項目名について内容が表示される
Snipe-ITに該当データがなかった場合やSNMPによって取得できなかった場合は空配列
一覧へ