この記事の担当 @kawaD
はじめに
こんにちは!技術部 Corporate Engineering Group(CEG)のkawaDです!CEGは、いわば情シス部門であり、仕事内容は多岐にわたります。その中の一つに、業務用PCの管理があります。
JamfやIntuneといったMDMは導入していますが、レンタル契約管理や入退者のPC管理についてはGoogleスプレッドシートを利用しています。このGoogleスプレッドシートでの管理に課題を感じていて、イケてる仕組みを目指してSnipe-ITを検証してみました。
Snipe-ITを使ってみた背景
弊社では業務用PCを2年間の契約でレンタルし、毎月約30台の切替管理作業を行なっています。PC台帳は頻繁に更新され、ベンダーとの連携もあり、Googleスプレッドシートでの運用が難しくなりました。
具体的な課題
- PC運用が複雑
- パートナーが利用するPCはレンタルしていて発注や納品後の対応などで、PC台帳を頻繁に更新しています。また発注用、納品用などファイルが複数存在していて、抜け漏れや管理の仕組みが複雑になっていて、台帳が安定しない状態です。
- 情報共有しずらい
- Slackを介したパートナーへの情報収集や、ベンダーとの連携について手間がかかっていて、リアルタイムな情報共有が難しい状況にあります。現在はパートナーへの発送先住所を聞くのを都度手入力でメンションして聞いていてリアルタイムに共有できていないので、自動的にメンションするようなシステムを構築したくなりました。
上記の課題が解決するようなスムーズな資産管理の仕組みを目指し、Snipe-ITという資産管理ツールを検証しました。
Snipe-ITには資産管理台帳があり、APIでの外部連携やSlack Integrationもある様子だったので、実際に使ってみて、運用課題を解決しそうか検証しました。
検証結果としてはSnipe-ITを導入すればPC運用の複雑さが解消され、他の要望も部分的には満たしました。ただSnipe-ITの導入は行っていません。理由はこの検証結果をベースに、他の資産管理ツールと比較を行うという結論になったためです。
この記事では今回の検証から得た知識を共有し、Snipe-ITの基本的な機能を紹介したいと思います。使い始めやすくなるようなポイントを中心にご説明いたします。
Snipe-ITについて
Snipe-ITは資産管理を得意とするクラウドベースのアプリケーションです。サーバー、PC、ライセンスなどの資産を効果的に管理することができます。
このアプリケーションはオープンソースソフトウェアとして提供されており、ユーザーは自分自身でアプリをホストできます。同時に、契約を結べばSaaSとしても利用可能です。
環境構築
環境構築には色々手段はありますが、Dockerイメージが用意されてるのでそれを使って、MacBook Pro M1でのローカル環境を作ってみます。
はじめに、Snipe-ITを動かすための設定ファイルを用意します。env-file
を作成して下記のように用意します。
# Mysql Parameters
MYSQL_ROOT_PASSWORD=YOUR_SUPER_SECRET_PASSWORD
MYSQL_DATABASE=snipeit
MYSQL_USER=snipeit
MYSQL_PASSWORD=YOUR_snipeit_USER_PASSWORD
# Email Parameters
# - the hostname/IP address of your mailserver
MAIL_PORT_587_TCP_ADDR=smtp.example.com
#the port for the mailserver (probably 587, could be another)
MAIL_PORT_587_TCP_PORT=587
# the default from address, and from name for emails
MAIL_ENV_FROM_ADDR=youremail@example.com
MAIL_ENV_FROM_NAME=Your Full Email Name
# - pick 'tls' for SMTP-over-SSL, 'tcp' for unencrypted
MAIL_ENV_ENCRYPTION=tcp
# SMTP username and password
MAIL_ENV_USERNAME=your_email_username
MAIL_ENV_PASSWORD=your_email_password
# Snipe-IT Settings
APP_ENV=production
APP_DEBUG=false
APP_KEY=後ほど設定する
APP_URL=http://127.0.0.1:YOUR_PORT_NUMBER
APP_TIMEZONE=US/Pacific
APP_LOCALE=en
# Docker-specific variables
PHP_UPLOAD_LIMIT=100
設定ファイルを適宜変更します。APP_KEYについては後ほど作成します。
Snipe-IT用のmysqlを立ち上げます。
MacBook Pro M1だと、platformを指定する必要がありましたので、--platform linux/x86_64
を付け足します。
docker run --platform linux/x86_64 --name snipe-mysql --env-file=env-file --mount source=snipesql-vol,target=/var/lib/mysql -d -P mysql:5.6
次に、APP_KEYを生成するため、下記のようにsnipe-itコンテナを使いAPP_KEYを生成します。
docker run --rm snipe/snipe-it
Please re-run this container with an environment variable $APP_KEY
An example APP_KEY you could use is:
xxxx:xxxxAPP_KEYxxxxx(←APP_KEYが生成される)
生成したAPP_KEYをenv-file
に記載します。
記載後、下記を実行してSnipe-ITを立ち上げます。ポートはご自身で適宜設定してください。
docker run -d -p YOUR_PORT_NUMBER:80 --name="snipeit" --link snipe-mysql:mysql --env-file=env-file --mount source=snipe-vol,dst=/var/lib/snipeit snipe/snipe-it
http://127.0.0.1:YOUR_PORT_NUMBER にアクセスすると下記のように初回の設定画面が表示されるので案内通り設定していけば完成です。
基本的な機能
以下はSnipe-ITの基本的な機能で、アプリケーションの仕組みを理解するのに役立ちます。
Asset Tags
Asset Tagは資産データに対する識別子であり、資産データ登録時には必須項目となります。一度登録された後でも値を変更できますが、一意である必要があります。
Asset Model
Asset Modelは資産データ登録に必須項目で、その資産データがどんな種類なのかを指定する必要があります。Asset Modelは事前にSnipe-ITの設定から作成しておく必要があります。
Asset Modelを作成する際には、以下の2つの機能であるCategoryとCustom Fieldsを理解する必要があります。
Category
Asset Modelを作成する際には、必ずCategoryを指定する必要があります。CategoryはAsset Model自体を種類ごとに整理するための機能です。
たとえば、PCというCategoryを作成し、その配下にWindowsやMacといったAsset Modelを設定します。
Snipe-ITの管理対象は、PCだけでなくサーバーやライセンスなど多岐にわたるため、これらをより詳細に種類分けすることができます。これにより、異なる種類の資産を効果的に管理できるのがSnipe-ITの特長です。
Custom Fields
資産データは上記画像のように行列表示されます。資産登録時、Snipe-ITがデフォルトで用意されている項目もありますが、管理するために項目を増やしたい時があります。
そんな時のために、Snipe-ITにはデフォルトで提供されるカラム以外にも、ユーザーが独自のカラムを作成する機能があります。作成するにはAsset ModelにCustom Fieldsと Fieldsetsを設定する必要があります。
Custom Fieldsでは、新しいカラムの設定を行います。例えば、購入日というカラムを追加する場合、データ型は日付にする、資産登録時には必須にするなど、カラム自体の特性を設定します。
さらに、Fieldsetsというグルーピング機能を使用して、作成した各カラムをまとめます。たとえば、購入日、OS、サイズといったカラムを作成し、PC必須項目というFieldsetsでまとめます。
そして、Asset ModelにFieldsetsを紐づけます。資産登録時にAsset Modelを選択するとそのAsset Modelに紐づいたFieldsetsの項目が表示され登録できるようになります。例えばAsset ModelのWindowsにPC必須項目というFieldsetsを指定することで、資産データを登録する際にWindowsを選択すると、PC必須項目のグループが表示され、それぞれの情報を登録することができます。
Checkin/Checkout
この機能は所有者や使用者を指定するためのもので、資産の状態に基づいて割り当てを行います。退職や修理などの状況に応じて、資産の所有者や利用者を確定させます。
Status Labels
各データには資産の状態を示すためのラベルが必要です。基本的には以下の4つの項目を使用して各資産を管理します。
- Undeployable: 利用者を割り当てることができない状態を表します。例:返却済み・廃棄など
- Deployable: 利用者を割り当てることができます。例:納品済みPCなど
- Pending: 利用者を割り当てられませんが、最終的には割り当てられる予定のような状態です 。例:発注中や修理中など
- Archived: 利用者を割り当てることができず、Archivedビューにのみ表示される状態です。例:返却済み・廃棄など
これら4つのステータス以外にも、必要に応じてカスタムステータスを作成することができます。ただし、新しいステータスを作成する場合、これら4つのステータスを親として子要素のように関連付ける必要があります。例えば、Pending-修理中、Pending-発注中などの形で登録します。
また、各ステータスごとに専用のビュー画面を設けることができます。これにより、異なるステータスごとにフィルタリングされた結果を見ることができます。また、修理中のようなカスタムしたステータスについても、それぞれ独立して表示を分けることが可能です。
Column Selection
画面上に表示されるカラムの表示・非表示を設定できるのがColumn Selection機能です。Custom Fieldsで大量のカラムを作成すると、管理画面が複雑になることがあります。この機能を使用すると、必要な情報だけを表示し、不要な項目を非表示にして見やすさを向上させることができます。
API
Snipe-ITにはAPIが用意されています。
APIを叩くには管理画面でアクセストークンを発行します。
アクセストークン発行は、ユーザーアイコンを選択するとプルダウンの中にManage API Keysがあり、そこから作成します。
作成したトークンをHeaderにつけてリクエストすればデータを取得できます。
例えば、下記のようなリクエストで資産データを取得することができます。
curl --request GET \
--url 'http://127.0.0.1:YOUR_PORT_NUMBER/api/v1/hardware?limit=2&offset=0&sort=created_at&order=desc' \
--header 'Authorization: Bearer xxxx作ったTokenxxxx \
--header 'accept: application/json'
GUIでも検索フォームはありますが、列を指定した検索ができませんが、APIを使えばカラムを指定して検索ができます。また、Custom Fieldsで作成したカラムについても指定することができます。
上記のように、APIを活用すれば細かい操作が可能になります。
おわりに
以上がSnipe-ITの基本的な機能でした。
Snipe-ITにはAPIやSlack Integrationなど、他にも様々な機能が存在しますが、これら基本的な機能を理解することで、より使いやすく、効果的に資産管理が行えるでしょう。