LoginSignup
3
5

More than 5 years have passed since last update.

Ansible実行環境でserverspecを実行するための実行端末設定

Last updated at Posted at 2015-12-19

何かと手間が掛かかる上に人的ミスの起こりやすいサーバー構築を「Ansible+serverspec」の組み合わせで行ったケーススタディです。
現在進行形の為、備忘録的に書き留めているので、ミスに気付き次第修正をかけていきます。
同様の組み合わせでサーバー構築されている方にとって少しでも参考になれば幸いです。
アドバイス・ご指摘も助かります。

前提条件

サーバ構成図:
システム構成図(Qiita).png
※設定するサーバの種類は以下の3つとする。
APサーバ(以降、dev_apserv01と呼ぶ)
DBサーバ(以降、dev_dbserv01と呼ぶ)
開発管理サーバ兼バッチスケジューラ(以降、dev_adminserv01と呼ぶ)

OS:CentOS 7

事前にノーパスワード設定をしておく。

※現状AnsibleはSSH前提でWindowsからネイティブには接続できないためWindowsにAnsible用のLinuxをインストールする必要がある。

Ansible実行端末設定手順

1.Ansibleインストール

$ yum -y install ansible

2./etc/hostsに接続先サーバを設定

$ vi /etc/hosts

以下を記述する

/etc/hosts
192.168.102.151 dev_apserv01
192.168.102.152 dev_dbserv01
192.168.102.153 dev_adminserv01

3.KEYの生成

$ ssh-keygen -t rsa -N ""
/root/.ssh/id_rsa
/root/.ssh/id_rsa.pub

4.KEY情報を覚える状態に設定

$ eval \`ssh-agent\`
$ ssh-add

5.接続先サーバへの公開キー配布と権限付与

それぞれのサーバに対し、
(1)SSHで接続して.sshフォルダを作成する(すでにある場合は何もしない)
(2)Ansible実行端末の公開キーを信頼するサーバ群として登録する
(2回パスワードを求められる)

  • dev_apserv01への配布
$ ssh root@dev_apserv01  "mkdir ~/.ssh > /dev/null 2>&1;exit"
$ cat /root/.ssh/id_rsa.pub | ssh root@dev_apserv01 "cat > .ssh/authorized_keys && chmod 600 .ssh/authorized_keys"
  • dev_dbserv01への配布
$ ssh root@dev_dbserv01 "mkdir ~/.ssh > /dev/null 2>&1;exit"
$ cat /root/.ssh/id_rsa.pub | ssh root@dev_dbserv01 "cat > .ssh/authorized_keys && chmod 600 .ssh/authorized_keys"
  • dev_adminserv01への配布
$ ssh root@dev_adminserv01 "mkdir ~/.ssh > /dev/null 2>&1;exit"
$ cat /root/.ssh/id_rsa.pub | ssh root@dev_adminserv01 "cat > .ssh/authorized_keys && chmod 600 .ssh/authorized_keys"

6.Ansibleが接続対象サーバ群に自動接続可能かを確認

Ansible接続対象サーバ群をAnsible用のhostsファイルに登録する

$ vi /etc/ansible/hosts

操作するサーバ群をすべて記述

/etc/ansible/hosts
dev_apserv01
dev_dbserv01
dev_adminserv01

[ ]で括って操作するグループ名を作成
後の操作で対象とするサーバをグループ名で指定する為
ここでは将来APサーバが増えることを想定して[webservers]と設定している

/etc/ansible/hosts
[webservers]
dev_apserv01
[dbservers]
dev_dbserv01
[adminservs]
dev_adminserv01
#開発管理サーバはAPサーバのテスト機を兼ねる為、2つを一括設定用にグループ化
[ap_admin]
dev_apserv01
dev_adminserv01
#開発管理サーバはdbservのテスト機を兼ねる為、2つを一括設定用にグループ化
[db_admin]
dev_dbserv01
dev_adminserv01

接続の確認を行う

$ ansible all -m ping

下記が表示されたら接続完了

dev_adminserv01 | success >> {
"changed": false,
"ping": "pong"
}

dev_apserv01 | success >> {
"changed": false,
"ping": "pong"
}

dev_dbserv01 | success >> {
"changed": false,
"ping": "pong"
}

7.SSH-agentが自動起動するよう設定

$ vi /etc/profile.d/init.sh

以下を記述

/etc/profile.d/init.sh
eval \`ssh-agent\`
ssh-add

8.SSH-agentがログアウト時にKILLされるよう設定

$ vi /root/.bash_logout

以下を記述

/root/.bash_logout
ssh-agent -k

9.コマンドヒストリを端末間で共有

$ vi /etc/profile.d/init.sh

以下を記述

/etc/profile.d/init.sh
function share_history {
    history -a
    history -c
    history -r
}
PROMPT_COMMAND='share_history'
shopt -u histappend
export HISTSIZE=9999

10.環境変数の再読み込み

$ source /etc/profile.d/init.sh

以上でAnsible実行端末設定が完了です。

次回は、「Ansible実行環境でserverspecを実行するためRuby実行環境を構築する」について記述します。


目次:Vagrant-Ansible-Serverspecによるサーバ構築とサーバテスティング

3
5
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
3
5