StackStormでSlackによるChatOpsの設定をする

先日からStackStormをちょこちょこいじっているのだが、今回はChatOpsの設定をしてチャットの入力内容をトリガーに処理を行わせるようにしてみる。 Chatに使うのはSlack。Botを利用する必要があるので、HubotのAPIキーの払い出しなどをすでに行っているものとする。

1.st2chatopsの設定

まず、以下のコマンドを実行しChatOpsのサービスを有効にする。

export ST2_AUTH_TOKEN=$(st2 auth st2admin -p パスワード -t)
st2 rule get chatops.notify || st2 rule crea...

Proxmox VEで、一度作成したVMのIDを後から変更する場合がある。
その場合、Web管理画面からは変更できないため、sshでログインしてコンソールから処理をする必要がある。

まず、VMが停止した状態で以下のように対象のVMの仮想HDDをリネームする。

mv /var/lib/vz/images/{移動元ID,移動後ID}
mv /var/lib/vz/images/移動後ID/vm-{移動前ID,移動後ID}-disk-1.qcow2


第25回シェル芸勉強会に行ってきたので、その復習。
前半は結構簡単な内容だったのだが、後半がちょっと難しかった。

問題および模範回答はこちら

Q1

指定されたドメイン(www.usptomo.com)のIPアドレスのみを取得するという問題。
これは簡単で、digコマンド一発で取れる。

dig www.usptomo.co...

Gitlabのバージョンを確認する

Gitlabのバージョンを確認するには、以下の2パターンの方法がある。

1.ブラウザから確認する

ブラウザから確認する場合は、GitlabのURL末尾に「/help」を付与すればよい。
「http://GitlabのIPアドレスorホスト名/help」でバージョンを確認できる。

2.コンソールからコマンドで確認する

もしくは、コンソールから以下のコマンドで確認ができる。

gitlab-rake git...

先日、Twitter上でそういった処理について盛り上がってた(気づいたときにはすでに終わってた)ので、復習がてら実際に解いたり人の回答を解析したりしてみることにした。
とりあえずebanさんの解答がすごすぎてよくわからん…。ので、分解してみる。

「響け!ユーフォニアム」という文字列を循環(巡回シフト)させて以下のような出力を得る、というお題。

響け!ユーフォニアム
け!ユーフォニアム響
!ユーフォニアム響け
ユーフォニアム響け!
ーフォニアム響け!ユ
フォニアム響け!ユー
ォニアム響け!ユーフ
ニアム響け!ユーフォ
アム響け!ユーフォニ
ム響け!ユーフォニア

sedでやるパタ

...

CentOS 7にRedisサーバをインストールする場合、epelおよびremiからインストールをすると簡単だ。
まず、以下のコマンドでepelおよびremiをインストールする。

yum install -y epel-release
rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm


SlackでHubotを経由してRundeckのジョブを実行させる

RundeckのジョブをSlackから実行できないかと思ったところ、Hubot用のプラグインがあったのでこれでやってみることにする。
なお、事前にこちらからSlackへの追加・設定を終わらせておくこと。

1.Hubotの動作サーバを構築する

1-1.パッケージのインストール

まずは、Hubotを動かすためのサーバを構築する。今回の例ではOSはCentOS 7を用いる。
Node.jsやnpmが必要になるので、それらを含めもろもろ以下のコマンドでインストールする。

yum install -y epel-release
yum install -y nodejs re...

StackStormでは、WebHookからトリガーを受け付けることでPackがないツールとも連携が可能になっている。
確かに、ここにあるPackだけだといろいろと少なかったりするので、この機能はあるとうれしい。

早速テストしてみよう。
といっても、以下のようなテスト用のルールを作成するだけだ。

test_webhook.yml
--- name: "webhook_test" pack: "default" description: "WebHook Test Rule." enabled: true trigger:...

GraylogでTwitterからキーワード検索してデータを取り込む

ふと、Graylogで特定キーワードを含むツイートを集計できないかと思い調べてみたところ、ちゃんとそういったプラグインがあるようなのでやってみることにした。
なお、すでにTwitterAPIでAccessToken等を取得済みとする。

まず、以下のコマンドでプラグインを導入してやる。

cd /usr/share/graylog-server/plugin/
sudo wget https://github.com/Graylog2/graylog-plugin-twitter/releases/download/1.0.0/graylog-plugin-twitter-1.0.0...

Graylogのログ監視をターミナルで行えるツール『Graylog CLI dashboard』というものを見かけ、グラフをターミナル上で表示できるタイプで面白そうなので入れてみることにした。
Linux/Macで動作するらしい。

とりあえず、まず「\~/.graylog_dashboard」というファイルを作成し、以下のようにGraylogのユーザ名・パスワードだけ設定しておく。

username: ユーザ名
password: パスワード

次に、以下のコマンドでgraylog-cli-dashboardのインストールを行う。

npm install graylog-cli...

さて、前回StackStormのインストールを行ったので、今回は実際に何らかの処理を行わせてみる。
StackStormにはブラウザ経由での管理が行えるWebUI管理画面があるのだが、今回はCUIでの設定・操作をする。

まず、StackStormには以下の4つの要素がある。

  • Action → トリガーを受けて、対象のホストに対して処理を行う
  • Trigger → 何かしらの操作やエラー、フラグをトリガーとし、アクションを実行する
  • Sensor → トリガーを検知するセンサー
  • Rule → トリガーとアクションを組み合わせたもの

つまり、TriggerとActionを...


CentOS 7にトリガーに応じてワークフローやアクションを行わせるIT自動化ツール「StackStorm」をインストールする

先日行われてた「【IoT x クラウド】自動化・IoTプラットフォーム StackStorm勉強会」に行ってきたのだが、今回は勉強会の主題であった自動化ツール「StackStorm(Githubではこちら)」をCentOS 7にインストールしてみることにする。ツールの概要については以下のスライドを見てもらえるとわかるかと思うが、ざっくり「いろんなイベントをトリガーにジョブを実行できるツール」という認識(IFTTTライクなツールといえばわかりやすいのだろうか?)。つまり、メールとか特定のログやセンサーの閾値をオーバーした場合などにジョブを実行できるということなので、かなり便利そうなツ...


Linuxからpywinrmを用いてWinRM経由でWindowsを操作する場合、まず以下のコマンドをWindows側で実行しWinRMを有効にする。

winrm qc
winrm set winrm/config/client/auth '@{Basic="true"}'
winrm set winrm/config/service/auth '@{Basic="true"}'
winrm set winrm/config/service '@{AllowUnencrypted="true"}'
PS C:\Users\Administrator> winrm qc
WinRM サー...

RundeckでWindowsに対しジョブを実行する

Rundeckでは対象のノードに処理を実施する場合、ssh接続してコマンドを実行するのだが、Windowsに対しジョブを実行する場合はWinRMを使うのがよさそうだ。
Windows 10とかならsshサーバも使えるようになったし、それ使えばいいんだろうけど、いかんせんWindows Server 2008/2012 R2などにはsshサーバの機能はない(OpenSSHとか入れればできる)。

できればWindowsとして提供されている機能でアクセスしたいなぁ…ということで、WinRMを用いての接続をする。
プラグインはこちら。なお、触ってみた限りRundeck側でスクリプトを書いて...


RundeckからRedmineにチケットを起票させる

RundeckからRedmineにチケット起票をさせるには、こちらのプラグイン(というか、パラメータファイル)を入れればいい。
以下のコマンドで、設定ファイルの配置およびサービスの再起動を行う。

git clone https://github.com/skylost/redmine-notification
cp redmine-notification/src/RedmineNotification.groovy /var/lib/rundeck/libext/

次に、Rundeckの設定ファイルにRedmineへの接続情報を記述しサービス再起動をする。
(下の例だとPro...


GraylogとRundeckを連携させて特定のログ発生時にジョブをキックさせる

GraylogでStreamで定義したログを検知した際、Rundeckの特定のジョブをキックさせるようにさせたい。
そんな時は、Graylog側にこちらのプラグインを導入し諸々の設定をしてやればよい。

今回は、Graylogからログ内の特定の値をRundeckに連携して、任意のジョブを実行させるよう設定してみる。

1.Graylogへプラグインのインストール

まずは、以下のコマンドを実行してGraylogにプラグインのインストールを行う。
ダウンロードするjarファイルのURLについては、こちらで最新のものを確認しておく。

cd /usr/share/graylog...

ネットワーク機器のコンフィグバックアップツール『Oxidized』でNW機器のコンフィグをGitlab連携する

ネットワーク機器のコンフィグバックアップを自動化するツールといえば、前に紹介したrancidrConfigらへんがあるのだが、rancidに影響を受けたツールで『Oxidized』というツールを見かけたので、ちょっと触ってみることにした。
サポートしているNW機器のOSは結構多くて、CiscoのIOSやJuniperのJunOS・ScreenOSはもちろんのこと、VyattaとかRouterOS、FortiOSとかもあるようだ(NetGearェ…)。
Webクライアントもあり、かつ履歴管理はGitで行えるようなので結構便利そう。

今回は、このツールをCentOS 7に入れ...


Rundeckでジョブの実行結果をSlackに通知する

Rundeckでジョブの実行結果をSlackに通知する場合は、プラグインを導入してやる必要がある。
2016年時点では、Slack連携用のプラグインは以下の2個あるようだが、前者は3年ほど更新されていないため、今回は後者のプラグインを利用する。

まず、以下のコマンドでプラグインをダウンロード、所定のディレクトリに配置しサービスを再起動する。
(ダウンロードするjarファイルは、こちらから最新のURLを確認してやるとよ...


CentOS 7にいろいろなシステムと連携できるジョブスケジューラー『Rundeck』をインストールする

ジョブスケジューラーについていろいろと物色しているのだが、最近であればやはりRundeckは触っといたほうがいいだろうと思ったのでCentOS 7に入れていじってみることにする。
「Rundeck」は、Webベースのインターフェイスを持つ軽量なエージェントレス(ssh接続)のジョブスケジューラーだ。また、プラグインなどを用いて他のシステムと連携して、特定のログなどをトリガーにジョブをキックさせることもできる(この辺はStackStormのほうが対応数が多いっぽい。その他Apache NifiとかHugginとかのIFTTTに影響を受けたプロジェクトのほうが強いかも?)。
ジョブ...


Graylogでログの分解・特定項目の値抜き出しを行う

Graylogでは、特定のログに記述されている"特定の項目の値"のみを抜き出し、Graylog側で個別に認識させることができる。
例えば、以下のようなログを受けたとしよう。FortiGateなんかがこんな感じのログだ。

Graylogでは、上の例でいうと「USER」「COMMAND」「ARGS」それぞれの値を抽出してやることができる。
じゃあどうやるのかというと、JSONの時とおなじように対象のログのMessageID、INDEX値を控えて[System] > [Inputs]から対象のインプットの[Manage extractors]を開き、ログを検索。
messageのと...


GraylogをActiveDirectoryサーバと連携する

Graylogを社員に開放して、ある程度メンバーの権限で見れるようにするためにActive Directory連携をしたのでその設定の備忘。
設定は簡単で、上部メニューから[System] > [Authentication]を選択し、「3.LDAP/Active Directory」をクリックする。

あとは、LDAP/ActiveDirectoryの設定について各項目の入力をしていけばいい。

基本的には、ふつう...


コンソールから利用できるネットワークモニタリングツール『Mylg』

別件の調べものをしてたところ、コンソールで利用できるネットワークモニタリングツール『Mylg』というものを見かけたので、少し触ってみることにした(Githubはこちら)。
とりあえず、イメージをつかむなら公式サイトの動画を見るとよさそう。で、見る限り結構便利そうな印象だ。専用コンソールに入って操作するようだけど、かなり扱いやすそうな感じ。

見ててなんとなく予想がついたかもしれないが、Golangで記述されたツールのようだ。
一応、Mac用のパッケージもCentOSなど用のrpmファイルも提供されているようなのだが、今回はUbuntu Server 16.04 LTSにこのツール...


GraylogでJSON形式のログを取り扱う

会社でログ管理にGraylogを使っているのだが、一部に存在しているJSON形式のログを取り込めないか調べたところGraylogにはその機能が標準で組み込まれていることを知った。
例えば、Collector Sidecarでファイルを指定してログ回収した結果、以下のようなログが来ていたとする。

これを、jsonの項目名ごとに分割してやるには、まず対象のログのMessageID(上の画像だと「22ddcf00-8b5d-11e6-b270-623530633165」となっているログのID)とIndex番号(上の画像では「graylog_0」)を控えておき、[System] > [Inp...


CentOS 7にワークフローをいじって設定できるPython製のジョブスケジューラー『Dagobah』をインストールする

ジョブスケジューラーを導入しようと色々調べていたところ、ワークフローとかが使えるPython製のジョブスケジューラー『Dagobah』というものを見かけたので、ちょっと触ってみる事にする。
なお、インストール先としてはCentOS 7を用いる。

1.インストール

『Dagobah』はpip経由でインストールできるようなので、以下のコマンドでインストールする。

yum -y install python-pip gcc libxml2-devel libxslt-devel python-devel
pip install dagobah
pip install pymongo...

VulsでProxmoxのセキュリティ脆弱性を確認する(失敗?)

個人的に仮想基盤のソフトでDebianベースのProxmox VEと言うものを使っているのだが、Vulsでこれの脆弱性について検出できるかどうかやってみる事にする。
基本はDebianベースだからいけると思うのだけど…ちょっと微妙な結果になった。

1.ユーザ作成・鍵ファイルの設定

まず、Proxmox側にssh接続してvulsユーザの作成をする。

useradd vuls -b /opt -s /bin/bash
mkdir /opt/vuls
chown vuls. /opt/vuls
passwd vuls

次に、Vulsサーバからssh接続する際の鍵ファイルを登録、コン...


Redmine3.2でバージョン管理もできるドキュメント管理プラグイン「DMSF」

ドキュメントの管理について、通常のファイルサーバだと管理が煩雑になったり間違えて上書きする人も出てきたりして、色々と面倒なことがある。
履歴管理についてはこちらにあるような方法を取ればなんとか行えるけど、端末がWindows以外だとシンボリックリンクを別途用意したり、面倒が多い。

で、ドキュメント管理システムとしてわざわざサーバを新たに作るのも面倒(権限管理とか)だったりなのだが、Redmineにあるドキュメント管理のプラグイン「DMSF」を使えば、そのあたりを大体クリアできる。プロジェクトごとに管理されるので、権限管理はそこに依存させればいいし。
Redmineのバージョンは...