2
0

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.

AnsibleでAWSのリージョン間VPCピアリングを構築する(Inter-Region VPC Peering)

Posted at

先月の2月22日、待ちにまったInter-Region VPC Peeringが東京リージョンにもやってきました :tada:

Inter-Region VPC Peeringは世界中の(対応している)リージョンとVPC Peerを張れる機能です。
これで、今まで東京リージョンに来ていなかったAWSサービスを使う事が可能となります。
EC2 C5シリーズとか、ECS Fargateとか、Amazon EFSとか!

それでは、早速導入していきましょう。
Webコンソールからはボタン3つぐらいで出来るのですが
今回はAnsibleを使って構築していきます。

概要

Ansible2.5のec2_vpc_peerモジュールでpeer先のリージョンが指定できるようになります。
https://github.com/ansible/ansible/blob/stable-2.5/lib/ansible/modules/cloud/amazon/ec2_vpc_peer.py#L30-L34
Ansible2.5を待てない人や、何かしらの理由でアップデート出来ない人は
ライブラリに追加する事で利用ができます。

手順

Ansible2.5のモジュールをコピー

Ansible2.5にアップデート出来る人はこの対応が不要です。

ライブラリパスの通る場所に
上記ec2_vpc_peer.pyファイルを置いてしまいましょう。
ライブラリとAnsible本体に同盟のモジュールがある場合は
ライブラリのモジュールが優先されます。
一部機能だけ先に使いたい場合はダウンロードする事で
古いバージョンのまま新しいモジュールを使うことができます。

もちろん、依存関係があるモジュールなどは依存を気にする必要はありますが。

私の場合は以下のようなファイル構成にして利用しました。

vpc-create-role
user@my-serv:~/ansible-setup-repository/aws-vpc$ tree -a
.
├── library
│   ├── ec2_vpc_peer.py
│   ├── .gitignore
│   └── README.md
└── tasks
    └── main.yml

私はgitignoreで除外設定をしてREADME.mdに説明を書いていましたが
git submoduleなどで管理してもいいですね。

2つのリージョンのVPCを用意

VPC Peerを貼るVPCを用意します。

VPCを作る手順は省略します。
Qiitaにもいくつか記事がありますので、参考までにリンクを記載します。
https://qiita.com/search?q=VPC+ansible

この時、Peerを張る先のリージョンをきちんと確認しておきましょう。
(当然ですが…)。
東京リージョンに来ていないFargateやC5インスタンスはus-east-1リージョンで利用可能ですが
過去の障害実績や利用サービス、料金などを見てリージョンを選びましょう。

リージョンごとに利用できるサービス一覧は以下のページが参考になります。
https://aws.amazon.com/jp/about-aws/global-infrastructure/regional-product-services/
過去のリージョンごとの障害は以下の記事を見ておくと安心できます。
https://qiita.com/saitotak/items/07931343bcb703b101f8

Ansibleでピア設定

Ansible TaskでPeerの設定をします。
以下は参考までに私が記載したTaskです。

aws-vpc/tasks/main.yml
- name: Create Connection vpc-a_vpc-b
  ec2_vpc_peer:
    profile: "{{ vpc-a_profile }}"
    vpc_id: "{{ vpc-a_vpc_id }}"
    region: "{{ vpc-a_region }}"
    peer_owner_id: "{{ vpc-b_account_id }}"
    peer_vpc_id: "{{ vpc-b_vpc_id }}"
    peer_region: "{{ vpc-b_region }}"
    tags:
      Name: "{{ peer_name }}"
    state: present
  register: _vpc_peer

明確に変更があったのはpeer_regionパラメータだけですね。
その他には、ap-northeast-1固定だったリージョンを変数化していたります。

その後、Route Tableの設定なども必要ですが
これは普通のVPC Peer設定と変わらないですね。

最後に

これで東京リージョンに来ていないAWSサービスが利用しやすくなりました!

リージョン間の通信費など、考えないといけない事は残っていますが
別リージョンのサービスをVPC内で完結して利用できるので
導入のハードルがだいぶ下がったのではないでしょうか。

2
0
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?