2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Splunk]splunk-ansibleを検証する

Posted at

[Splunk]splunk-ansibleを検証する

目的・背景

GitHubで公開されている「splunk-ansible」を検証します

参考サイト

splunk/splunk-ansible
CentOSへPython、pipをインストール

環境

AWS EC2 RHEL8を利用しました。

必要パッケージのインストール

$ sudo yum update -y

python3のインストール

$ sudo yum install -y https://repo.ius.io/ius-release-el7.rpm

$ sudo yum search python37
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: d36uatko69830t.cloudfront.net
 * epel: d2lzkl7pfhq30w.cloudfront.net
 * extras: d36uatko69830t.cloudfront.net
 * updates: d36uatko69830t.cloudfront.net
警告: 一致するものが見つかりません: python37
No matches found

$ sudo yum search python36
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: d36uatko69830t.cloudfront.net
 * epel: d2lzkl7pfhq30w.cloudfront.net
 * extras: d36uatko69830t.cloudfront.net
 * updates: d36uatko69830t.cloudfront.net
================================================= N/S matched: python36 ==================================================
python36-cairo-devel.x86_64 : Libraries and headers for python36-cairo
    :
wsgi-plugin-python36-tornado.x86_64 : uWSGI - Plugin for Tornado (Python 3.6) support
uwsgi-plugin-python36u.x86_64 : uWSGI - Plugin for Python support

  Name and summary matches only, use "search all" for everything.


$ sudo yum install -y python36u python36u-libs python36u-devel python36u-pip

$ sudo python3.6 -m pip install --upgrade pip

$ python3.6 --version
Python 3.6.8
$ python3 --version
Python 3.6.8

$ python3.6 -m pip --version
pip 20.2.3 from /usr/local/lib/python3.6/site-packages/pip (python 3.6)
$ python3 -m pip --version
pip 20.2.3 from /usr/local/lib/python3.6/site-packages/pip (python 3.6)

$ pip install requests

dockerのインストール

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
$ sudo yum install docker
$ docker --version
Docker version 1.13.1, build 64e9980/1.13.1

$ sudo systemctl start docker
$ sudo systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: active (running) since 火 2020-09-29 06:07:09 UTC; 1min 10s ago
     Docs: http://docs.docker.com

docker-composeのインストール

$ sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ docker-compose --version
docker-compose version 1.22.0, build f46880fe

ユーザ・グループの作成

$ sudo groupadd splunk
$ sudo groupadd ansible

$ cat /etc/group | grep splunk
splunk:x:1001:
$ cat /etc/group | grep ansible
ansible:x:1002:

$ sudo useradd splunk -m -g 1001
$ sudo useradd ansible -m -g 1002

$ sudo passwd splunk
ユーザー splunk のパスワードを変更。
新しいパスワード: 
よくないパスワード: このパスワードは辞書チェックに失敗しました。 - 辞書の単語に基づいています
新しいパスワードを再入力してください: 
passwd: すべての認証トークンが正しく更新できました。

$ sudo passwd ansible
ユーザー ansible のパスワードを変更。
新しいパスワード: 
よくないパスワード: このパスワードは辞書チェックに失敗しました。 - 辞書の単語に基づいています
新しいパスワードを再入力してください: 
passwd: すべての認証トークンが正しく更新できました。

$ sudo usermod -aG wheel ansible
$ sudo usermod -aG wheel splunk

$ su - ansible
パスワード: 
最後の失敗ログイン: 2020/09/29 (火) 05:25:57 UTC日時 pts/0
最後の正しいログインの後に 1 回の失敗ログインの試行があります

$ groups
ansible wheel

$ sudo su -

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for ansible: P@ssw0rd
Last login: Tue Sep 29 04:51:58 UTC 2020 from softbank126150083139.bbtec.net on pts/0
# whoami
root

# exit
$ exit

$ sudo groupadd docker
$ sudo gpasswd -a splunk docker
# sudo gpasswd -a ansible docker
$ sudo systemctl restart docker

splunkコンテナイメージの取得と起動

splunkユーザに切り替え

$ sudo su - splunk

splunkイメージの取得

$ docker pull splunk/splunk
Using default tag: latest
Trying to pull repository docker.io/splunk/splunk ...
latest: Pulling from docker.io/splunk/splunk
e96e3a1df3b2: Pull complete
    :

splunkコンテナの起動

$ docker run -d --name splcontainer -p 8000:8000 splunk/splunk:latest no-provision

$ docker ps
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS                            PORTS                                                                           NAMES
1c341d8d176f        splunk/splunk:latest   "/sbin/entrypoint...."   8 seconds ago       Up 7 seconds (health: starting)   8065/tcp, 8088-8089/tcp, 8191/tcp, 9887/tcp, 0.0.0.0:8000->8000/tcp, 9997/tcp   splcontainer

インストール媒体の取得

Splunk Enterpriseの媒体を取得
$ sudo wget -O splunk-8.0.6-152fb4b2bb96-Linux-x86_64.tgz 'https://www.splunk.com/bin/splunk/DownloadActivityServlet?architecture=x86_64&platform=linux&version=8.0.6&product=splunk&filename=splunk-8.0.6-152fb4b2bb96-Linux-x86_64.tgz&wget=true'

Splunk UNIVERSAL Forwarderの媒体を取得
$ sudo wget -O splunkforwarder-8.0.6-152fb4b2bb96-Linux-x86_64.tgz 'https://www.splunk.com/bin/splunk/DownloadActivityServlet?architecture=x86_64&platform=linux&version=8.0.6&product=universalforwarder&filename=splunkforwarder-8.0.6-152fb4b2bb96-Linux-x86_64.tgz&wget=true'

デフォルトパラメータの取得

コンテナ内にあるパラメータファイルをローカルにコピー
$ docker run -it splunk/splunk:latest create-defaults > default.yml
$ ll
合計 4
-rw-rw-r--. 1 centos centos 3467  9月 29 06:12 default.yml

パラメータファイルの設定

このサイトを参照し、必要なパラメータを設定

splunkセクションに以下を追加

splunk:
  role: splunk_universal_forwarder
  build_location: /opt/ansible/splunkforwarder-8.0.6-152fb4b2bb96-Linux-x86_64.tgz
  apps_location: null
  password: changeme
roleには以下が設定可
    splunk_standalone
    splunk_search_head
    splunk_search_head_captain
    splunk_indexer
    splunk_deployer
    splunk_cluster_master
    splunk_deployment_server
    splunk_heavy_forwarder
    splunk_license_master
    splunk_universal_forwarder
    splunk_monitor
  • パラメータファイル内のパスに注意
    UniversalForwarderだと「/opt/splunkforwarder/〜」に変更する
    変更しないとUniversalForwarderが解凍された「/opt/splunkforwarder/」ではなく、「/opt/splunk/」を参照し処理が実行されるためインストール処理がエラーで中断してしまう

設定後のパラメータファイルとインストール媒体をコンテナ内に配置

$ docker cp ./default.yml splcontainer:/opt/ansible/
$ docker cp ./splunk-8.0.6-152fb4b2bb96-Linux-x86_64.tgz splcontainer:/opt/ansible/
$ docker cp ./splunkforwarder-8.0.6-152fb4b2bb96-Linux-x86_64.tgz splcontainer:/opt/ansible/

(課題)プレイブックの実行

ansible-playbookコマンドはエラーなく終了するがコンテナ内にインストールされてしまいました。
インベントリファイルの修正でローカルまたは他サーバにインストールできそうですが未検証です。

$ docker exec -it splcontainer bash -c 'cd /opt/ansible; ansible-playbook --inventory localhost, --connection local site.yml --extra-vars "@default.yml"'

(参考)コンテナ内のAnsibleをローカルにコピー

$ sudo docker cp splcontainer:/opt/ansible .

(応急処置)コンテナではなくローカルで実行

上記のように、コンテナで実行するとコンテナ内に構築されてしまいました。
公式のガイドにも説明がありましたが、コンテナ内からローカルにAnsible一式を取得し実行させてみました。

なお、既にローカルにSplunk関連サービスが起動中の場合、インストール時にエラーが発生します。
そのため、起動中のSplunkサービスを停止してから実行する必要があります。

(例)Splunk Universal Forwarderがインストール済みの場合
$ cd /opt/splunkforwarder/bin
$ ./splunk stop
$ cd ansible
$ cp ../default.yml ./
$ cp ../splunk-8.0.6-152fb4b2bb96-Linux-x86_64.tgz ./
$ cp ../splunkforwarder-8.0.6-152fb4b2bb96-Linux-x86_64.tgz ./
$ ansible-playbook --inventory localhost, --connection local site.yml --extra-vars "@default.yml"
  • 実行後、インストールに使用したファイル(.tgz)は削除されます。
    再実行するときは再度媒体をコピーする必要がある

おわりに

コンテナ内でAnsibleを実行させ、Splunkをインストールすることができませんでしたが、Ansibleを使いSplunkをインストールさせることはできました。
何をインストールするのか、インストール先はどこにするのかなどはパラメータファイルである「default.yml」に記載します。
インベントリファイル、パラメータファイルを用途ごとに用意すればAnsibleによる冪等性を保ったデプロイバリエーションが広がりそうです。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?