🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
serverspec

serverspecは、Ruby製のサーバ環境テストケース作成ツールです。

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

Q&A

解決済

2回答

3535閲覧

各サーバの構成情報を取得し一覧化して表示するには

gsr

総合スコア7

serverspec

serverspecは、Ruby製のサーバ環境テストケース作成ツールです。

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

0グッド

2クリップ

投稿2019/10/04 07:06

前提・実現したいこと

複数台のサーバに対してそれぞれのサーバにインストールされている
MWやOS情報を一覧として取得したいと考えております。

具体的には以下のような一覧を取得したいです。
インストールされていないものに関しては X または not installed など
そのミドルウェアがインストールされていない旨が判定できればよいです。

サーバ名OSApacheNginxPostfixMySQLPostgreSQL
Server1RHEL7.X2.4.41XX5.7.27X
Server2Ubuntu 18.04 LTSXX3.4.7X9.4.24
Server3Amazon Linux2.4.41XX5.7.27X
Server4CentOS7X1.17.0X5.7.27X

それぞれのOSにログインして一台ごとに確認するような手間は取りたくありません。
何か良い案、または考えはありますでしょうか。

お知恵をお借りできればと思います。

環境に関して

AnsibleでOSの設定、Serverspecにて単体テスト(OSやMWレベル)を実施しております。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

javahack

2020/02/04 12:49

OSやMWの情報は、サーバ構築時に資料としてまとめておけば、稼働中に調べる必要は無いと思うのですが、そのような資料は保存されていないのでしょうか?
guest

回答2

0

これは、管理の問題であり、OSの種類等は
企業の場合、従業員にPCを配布する前にMACアドレス、OS、管理番号を
データベースに登録し管理するのが一般的です。

ですが、linux等のアパッチ等様々なサービスは
管理者が責任をもって、管理するものであり
データベース上ではOS がlinuxとだけの記述であり
各サービスのversion までは linuxを使っている管理者が
把握するものです。

投稿2020/02/04 02:10

nanami12

総合スコア1015

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gsr

2020/02/04 02:50

ご回答ありがとうございます。 ご回答によると、企業では一般的に、管理者が必要な情報をデータベースに登録し 管理されているようですがそのような作業は何かしらのツールを利用し自動化されて いるものなのでしょうか。 企業の種類にもよるとは思いますが一般的な企業は従業員がそれなりにいると 思われますし、かつ企業内で管理しているサーバ台数もそれなりにあると思われます。 そのようなサーバにいちいち ssh や rdp でログインして一つ一つの設定を人手で 確認するような作業は、私には考えられません。 そこで私の担当しているPJでは、なるべく自動化で構成管理をしたいと考えており 今はAnsible等のツールを利用して、構成管理の課題にぶつかっている次第です。 貴女がご経験された環境では、Linux/Windowsサーバの管理者はDBへの情報の登録 をどのようにおこなっているものなのでしょうか?
guest

0

ベストアンサー

OSの取得なら、Ansibleでできそうです。

Ansibleの設定ファイルに"stdout_callback = json"を追加して行います。
普段使用している設定ファイルとは分けて、環境変数で設定ファイルを指定してAnsibleを実行するとよいでしょう。

$ cat getinfo.cfg [defaults] stdout_callback = json $ cat getinfo.yml - hosts: all $ ANSIBLE_CONFIG=getinfo.cfg ansible-playbook -i inventory getinfo.yml

大量に出ますが、ansible_distribution などを見るとよいかと思います。

MWの取得は良い方法が思い浮かびません。
上記で調べたOSをもとに、rpm/dpkgコマンドを判定し、sshで直接コマンドを実行するようなスクリプトを書いて・・・位でしょうか。

ssh server1 dpkg -l

最新バージョンがインストールされているかどうかであれば、パッケージインストールのplaybookをチェックモードで実行することでわかると思います。

投稿2020/01/08 02:45

Youichi256

総合スコア204

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gsr

2020/02/04 02:02

ご回答ありがとうございます。 返信遅くなり大変申し訳ございません。 OSの情報取得に関して ansible_distribution や ansible_distribution_major_version を利用しようかと検討しております。 ただ、私の環境での問題でもありますが、Amazon Liux を利用していた場合 ansible_distribution_major_version は N/A となりうまく取得できないようです。 ほかのディストリビューションでは取得できていることから、Amazon Linux固有の問題のようです... そういった観点では別の方法を検討する必要もありそうです。 MW の例に関してはスクリプトの例まで示していただきありがとうございます。 Ansible ではある程度妥協しなければならない部分もあると思いますが、 なるべくスクリプト化はしたくないのが個人的な意見です。 逆に皆様はどのようにして私の欲しいような情報を構成管理されているのか気になります。
Youichi256

2020/02/05 06:01

Ansibleは、決まった構成に設定するのが目的なので、既存の構成を取得するのには向いていなさそうです。 何とか構成を取得する場合は・・・という意味で、上記の提案をしました。 本番系だとインストール手順書みたいな感じで、どんなパッケージが追加で入っていて、どのような設定をされているかの情報はあると思います。 Ansible化時に、その手順書などを元にPlaybookを作るところで、実はドキュメントと設定が違っていたことに気付いたりということはあるかもしれません。 どの程度厳密に管理したいかによって、管理方法は違うと思います。 厳密に管理するのであれば、ごく少数の特定の管理者以外は対象サーバにログインできず(少なくともrootになれない)、Ansibleによってのみ設定変更できるようします。AWSなら、CloudFormationを使い手作業を一切不要にすることで、より厳密に管理できそうです。 さらに、Ansibleで使用するPlaybookもGitなどで管理して承認を得ないと設定が有効にならないなどしておけば、履歴も残ってより完璧かと思います。 厳密に運用する環境なら、このくらいコストをかけるのもありかと思います。 ここまですれば、パッケージやバージョンが厳密にに管理されますので、例えばセキュリティホールが発見された場合とかでもどのサーバに影響があるのかはすぐにわかります。 管理が目的であれば、設計通りにきちんと設定されるようにすることに力を注ぐほうがよいのではないでしょうか。 何がインストールされているかよくわからないサーバがたくさんあってその管理を任された・・・とかであれば、Serverspecで思いつく限りのにチェックをするくらいしか思いつきません。
gsr

2020/02/12 01:03

なるほど、結論として管理手法や権限周りの整備をしっかりしたほうが 結果として、バージョン管理の徹底化ができるということですね。 参考になりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問