8
11

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 5 years have passed since last update.

aws上に作成したansibleサーバーでテストサイトを構築する(1) Ansibleサーバー構築

Last updated at Posted at 2017-10-30

はじめに

EC2上に構築したAnsibleサーバーで、新しいVPCの作成、EC2インスタンスの準備、ELBでの冗長化、RDSの作成をして、テストサイトを構築してみます。
テスト対象のWebアプリは何でもいいのですが、ここではwordpressをインストールすることにしました。
今回作成するのは、素のwordpressを準備するところまでで、カスタマイズ部分をデプロイして、テストする部分は含めません。

AWSアカウントの準備

AWSのアカウント作成については記載しませんので、適宜作成してください。
新規で作成したときには、以下のページなどを参考にしてアカウントの保護をしたほうがよいでしょう。

今回は、IAMロールを割り当てるのでその権限があるアカウントでAWSにサインインする必要があります。

Ansibleサーバー用インスタンスの準備

まず最初に、環境を構築・管理するAnsibleサーバーを構築します。AWS上の最初のサーバーなので手作業で実施します。

インスタンスの設定

AWSマネジメントコンソールでデフォルトのVPC上にEC2インスタンスを作成します。
画面上部の「サービス」から「EC2」を開き、「インスタンスの作成」をクリックします。
マシンイメージの選択画面となるので、ここでは無料枠のAmazon Linuxであるami-2a69be4cを選択します。
2017-10-27_11h32_48.png

EC2のタイプは同じく無料枠のt2.microを選択。
2017-10-03_11h21_27.png

選択したら「確認と作成」ではなく、「次の手順:インスタンスの詳細の設定」をクリックします。

ネットワークの設定

ネットワーク関連の設定で、自動割り当てパブリックIPが有効になっていることを確認してください。(既定で作成されているサブネットでは有効になっているはずです。)
これがないと作ったサーバーに外からログインできません。(後からでも変更はできます)
2017-10-03_11h25_55.png

IAMロールの設定

今回作成するインスタンスには、IAMロールを使用してAWSの操作を許可するように設定します。
ACCESS_KEYを使う方法もありますが、今回はせっかくEC2インスタンス上にAnsibleサーバーを構築するので、キーやAWSアカウントの管理を考えなくてもよいようにロールを使用します。

上の画面で「新しいIAMロールの作成」をクリックして、「IAM Management Console」で「ロールの作成」をクリックします。
「ロールタイプの選択」画面が表示されるので「AWSサービス」から「EC2」を選択。
2017-10-03_12h01_15.png
2017-10-03_12h05_33.png

アクセス権限は「AmazonEC2FullAccess」を割り当てて1ください。
2017-10-03_12h08_11.png

最後の確認画面で、作成したロールの名前を付けます。ここでは「ansible_server_role」としました。
2017-10-03_12h16_01.png

残りの選択肢は変更せず、「確認と作成」をクリックします。

セキュリティグループの設定

「インスタンス作成の確認」画面が表示されます。
ここで作成するEC2インスタンスへのSSH接続のみを許可するセキュリティグループを作成します。
「セキュリティグループの編集」をクリックしてください。
2017-10-03_12h22_07.png

EC2の作成、操作を許可する権限をつけているので、可能であれば接続元となるソースはマイIPなどを指定して絞り込んだほうがよいでしょう。
2017-10-03_12h27_04.png

アクセス用キーペアの設定

すべて入力して「確認と作成」ボタンをクリックすると、インスタンスへのSSH接続に使用するキーペアが要求されます。
「新しいキーペアの作成」を選択してキーペア名を入力し、「キーペアのダウンロード」をクリックして秘密鍵をダウンロードしてください。
ここでは「ansible-server-key」としました。
2017-10-27_11h46_58.png

「インスタンスの作成」をクリックすると仮想マシンの作成が始まります。

Ansible関連パッケージのインストール

インスタンスが起動したら、グローバルIPアドレス宛にSSHで接続してみましょう。
認証には前項でダウンロードした秘密鍵を使用します。ユーザーはec2-userです。

SSHで無事接続できたら、ansibleサーバーとしてのセットアップを実行します。
AnsibleでAWSを操作するためにはbotoが必要ですが、AWS関連のモジュールで便利なものはboto3を要求するので、そちらもインストールします。

command
$ sudo su -
# yum update -y
# pip install ansible
# pip install boto3

後はお好みでgitなどをインストールしてください。
また、このサーバー上で頻繁に作業することになるので、ローカルのホスト名表示だけでも変更しておいたほうが混乱しにくいでしょう。2

できあがったサーバーのAnsible関連のバージョンは以下の通りとなりました。

command
$ python --version
Python 2.7.12

$ aws --version
aws-cli/1.11.132 Python/2.7.12 Linux/4.9.51-10.52.amzn1.x86_64 botocore/1.7.36

$ pip list | grep -i boto
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
boto (2.42.0)
boto3 (1.4.7)
botocore (1.7.36)

$ ansible --version
ansible 2.4.1.0
  config file = None
  configured module search path = [u'/home/ec2-user/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python2.7/site-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 2.7.12 (default, Sep  1 2016, 22:14:00) [GCC 4.8.3 20140911 (Red Hat 4.8.3-9)]

pipからWarningが出ていますが、以下のファイルを作成すると出なくなります。3

~/.pip/pip.conf
[list]
format = legacy

次回

次回はAnsibleを使用して、テストサイト用のAWSのネットワーク関連リソースを作成していきます。


  1. 権限が適切かはあまりわかっていません…

  2. Linux インスタンスのホスト名の変更 - Amazon Elastic Compute Cloud

  3. [小ネタ] pip 9 系にしたら pip list で警告出るようになったので止めたい

8
11
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
8
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?