前回の記事では、ローカルPCからAnsibleでEC2を操作しました。今回は、Cloud9からAnsibleを実行してEC2を操作してみたいと思います。EC2と同一VPC内にCloud9を作成し、プライベートIPアドレスで接続するようにします。また、Ansible定義はCodeCommitで管理しているため、Cloud9からクローンします。
Cloud9からAnsibleを実行する手順
前提条件
- EC2と同じVPC内にCloud9を起動
- EC2のセキュリティグループで、Cloud9からの接続を許可
- Ansibleの定義ファイルは下記で作成したものを使用
Ansible定義の変更点
上記の記事からAnsibleの定義を変更した箇所を記載します
- inventoryファイルの対象サーバのIPアドレスをプライベートIPに変更
- ssh_configファイルの対象サーバのIPアドレスをプライベートIPに変更
- ~/.sshにプライベートキーを配置
Cloud9の起動
1.AWSにログインしてAWS Cloud9のコンソールを開く
2.左ペインの「Your environments」を開き、作成済みenvironmentsの「Open IDE」ボタンをクリックする
Cloud9でCodeCommitのリポジトリをクローンする
Ansible用のディレクトリを作成
$ mkdir ansible
作成したディレクトリに移動する
$ cd ansible
下記コマンドでCodeCommitのリポジトリからクローンする
$ git clone https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/<リポジトリ名>
Ansibleを実行する
Cloud9で作成したEC2サーバにはAnsibleが入っていなかったので、実行前にインストールします。
$ sudo yum install ansible
下記コマンドでAnsibleを実行
$ ansible-playbook web.yml -i hosts/prd
PLAY [Deploy web server] *****************************************************************************************************************************************************************
(中略)
PLAY RECAP *******************************************************************************************************************************************************************************
10.0.0.155
まとめ
今回はCloud9からAnsibleを実行することに成功しました。Cloud9を対象EC2と同一VPC内に作成することにより、プライベートIPアドレスとSSHで接続できるため、よりセキュアな状態で実行することができました。