はじめに
弊社のチームではBizRobo!の検証をするための環境構築を依頼されることが度々あります。
そのたびにインスタンスを新規作成しているのですが、依頼される頻度が多くなってきたので効率化したいなと思いAWSのCloudFormationを使って構築してみました。
タグ管理も統一できるようになるので効率的な運用ができそうです。
どのように実現したのかまとめてみました。
構築イメージ
インフラ構成図
事前準備
CloudFormationを構築する前に準備しておく事
- BizRobo!の環境構築済みのAMI
- VPC
- IGWの設定
- サブネット
- ルートテーブルの設定
- セキュリティグループ
やってみる
実際に構築したコードは以下に記します。
AWSTemplateFormatVersion: 2010-09-09
Description: BizRobo!v11.3 test instance
Parameters:
ExistingVpcId:
Type: AWS::EC2::VPC::Id
Description: 利用するvpcID
ExistingSubnetId:
Type: AWS::EC2::Subnet::Id
Description: 利用するsubnetID
ExistingSecurityGroupId:
Type: AWS::EC2::SecurityGroup::Id
Description: 利用するsgID
Resources:
MyEIP:
Type: AWS::EC2::EIP
Properties:
Domain: vpc
MyNetworkInterface:
Type: AWS::EC2::NetworkInterface
Properties:
SubnetId: !Ref ExistingSubnetId
GroupSet:
- !Ref ExistingSecurityGroupId
Tags:
- Key: Name
Value: v11.3_testserver_network_interface
MyInstance:
Type: AWS::EC2::Instance
Properties:
ImageId: 利用するamiID
InstanceType: r5a.large(タイプは用途に応じて)
NetworkInterfaces:
- NetworkInterfaceId: !Ref MyNetworkInterface
DeviceIndex: 0
Tags:
- Key: Name
Value: v11.3_testserver
- Key: Used
Value: unknown
- Key: Product
Value: test
- Key: EndDate
Value: unknown
- Key: Team
Value: unknown
~余談~
プログラミング経験が浅いのでChatGPTに問いかけて大枠の構成を作成してもらい、細かい修正を筆者が行いました。
ざっくりした問いかけである程度作成してもらえるので、プログラミングの勉強時間が削減できていいですね!
振り返り
VPC・サブネット・セキュリティグループを固定に設定したかったのですが、既存のものはパラメーターからしか設定できないようです。
運用オペレーションでカバーできますが、本当は固定にしたいなと思います。
AMIは固定値にしていますが、パラメータで選択するようにして事前に複数バージョン用意しておけば対応の幅が広がる気がします。
また、特定のサブネットにあるインスタンスを自動停止する設定をしておけば不要なコストがかかりっぱなしになるリスクも下げれられると思います。(こちらの記事で記述します)
おわりに
ある程度要件が似たような環境構築をする際はCloudFormationを利用すると便利だと感じました。
環境構築がシンプルで容易になるように模索していきたいと思います。