My First Splunk App on Splunkbase

[Splunk](https://www.splunk.com) 向けの
Apps 公開コミュニティサイト [Splunkbase](https://splunkbase.splunk.com/) で
App を公開するまでの道のりの記録。

大まかなながれは、

  1. App を作る
  2. パッケージングする
  3. 事前チェックを行う
  4. アップロード＆審査
  5. 公開

となります。

## 1. App の作成

なにはともあれ、素材が無いと。
ナイスなアイデアを形にしましょう。

[投稿ガイドライン](https://docs.splunk.com/Documentation/Splunkbase/splunkbase/Splunkbase/Optionsforsubmittingcontent) や
[承認基準](https://docs.splunk.com/Documentation/Splunkbase/splunkbase/Splunkbase/Approvalcriteria) も
目を通しておきましょう。

[Splunk Add-on builder](https://docs.splunk.com/Documentation/AddonBuilder/2.2.0/UserGuide/Overview) というツールを使うと、
用途に応じたひな型を作ることもできます。

## 2. パッケージング

配布できる形式 (App パッケージ) でひとまとめにします。

Splunk コマンドもしくは、上記の Add-on builder で App パッケージを生成できます。
コマンドラインで行うには、こんな感じ。

```none
$ ./bin/splunk package app MY_APP_NAME
```

生成されたパッケージは `/opt/splunk/etc/system/static/app-packages` 以下に出力されます。

[Package your app](http://dev.splunk.com/view/SP-CAAAEMY#package) を参考に。

ちなみに勘所をつかめば、自分で zip することも可能です。

Splunkbase で公開するわけでなく、
自分で配布するなら、この状態でも可能です。

## 3. AppInspect

Splunkbase での公開要件に合致しているかの確認を、
CLI もしくは、API で実施することができます。
[Splunk AppInspect](http://dev.splunk.com/view/appinspect/SP-CAAAFAN) を使います。

予めパッケージングした app ファイルに対して、
以下のように実行します。

```none
$ splunk-appinspect inspect etc/system/static/app-packages/MY_APP_NAME.spl --mode precert
```

`--mode` やオプションなどは、色々調整できますので、
ドキュメントを参考に。


## 4. アップロード

Splunkbase へアップロードし、公開の申請をします。

[英語の公式ドキュメント](https://docs.splunk.com/Documentation/Splunkbase/splunkbase/Splunkbase/SubmitcontenttoSplunkbase)も参考に。

### Splunk ID の取得

まず Splunk ID (登録無料) の取得が必要です。
なお、Splunk ID で登録するメールアドレスと、
後ほど App 作成者の連絡先で登録するメールアドレスは
分けることができます。

### いざ App の登録 (Splunkbase へのログイン)

Splunkbase のトップページから、
ページ下部の Submit Your App のリンクを選択します。

![01-submit.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59810/995e3eea-9c10-4077-b42d-6fb54b6f33b1.png)

Splunk ID を使ったログイン画面に、遷移するので、
必要項目を入力して、ログインしましょう。

もし、持っていない場合は、 "Create your free account today" リンクから、
作成しましょう。

### 公開条件への同意

"Splunk Developer Distribution Agreement" (開発者の販売 / 配布契約) が
ダイアログ表示され、同意を求められます。
(Splunkbase での公開には、同意が必要です)

### 提供方法の選択 (Hostring)

いよいよ、作成した App をアップロードします。

今回は Splunkbase 上で公開してもらう
"Hosted on Splunkbase" を選びます。

* Srop package here or Choose file: 作成したパッケージをアップロードします。
  (tar.gz 形式で圧縮していること！ zip 形式だと、パッケージ方法が正しくない、とエラーになってしまいます)
* Release Notes: 適宜、説明を記載。
* Splunk Version: 動作確認している Splunk のバージョンを選択。
* CIM: (Common Information Models) に準拠しているのであれば、
  準拠バージョンを選択しましょう。

![02-hosting.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59810/e2671540-5a35-c204-ea81-ebba51987314.png)

なお、Hosted Externally を選択すると、
自前で公開しているウェブサイトへのリンクが求められます。

### 詳細の記述 (Description)

* Name: App の名称
* Categories: 関連カテゴリ
* Content Type: App か Add-on を選択
* Short Introduction: 短い説明
* Develper Support: 開発者の連絡先メールアドレス登録の有無

### 公開に関する設定 (Settings)

* License Name: ライセンス
* License URL: ライセンスの参照 URL
* Access Level: 一般公開 (Unrestricted) か 限定公開 (Restricted) か。
  今回は Unrestricted を選択。
* The package contains encrypted code: 暗号化されたソースコードを含むかどうか？


### 内容の確認と申請の実施 (Submit)

5 日以降であればリリース日付を指定することもできます。

お疲れ様でした。

do-not-reply@splunk.com から、
自動応答の *App "APP_NAME" submission received* という
メールが届いているかと思います。
審査を待ちましょう。

無事、申請が承認されると
*App "APP_NAME" submission approved* というメールが届きます。

ちなみに私の場合は、10 日間ほどかかりました。
気長に待ちましょう。