個人サイト構築
この個人サイトを構築するにあたって、どのようにしたかメモ及び最初のポストとして。
まずこのサイトのドメインを取得した。ドメインはどこのプロバイダから取得してもいいが、今回はDNSとしてAWS Route53を使おうと思っていたので、ドメインもRoute53から取得。
DNSのCNAME設定などはすべてTerraformで。コードはこんな感じ。
data "aws_route53_zone" "selected" {
name = "masatomoito.com."
private_zone = false
}
resource "aws_route53_record" "www" {
zone_id = data.aws_route53_zone.selected.zone_id
name = "www"
type = "CNAME"
ttl = "5"
records = ["masa-org.github.io"]
}
resource "aws_route53_record" "media" {
zone_id = data.aws_route53_zone.selected.zone_id
name = "media"
type = "CNAME"
ttl = "5"
records = ["www.masatomoito.com"] # <-- Note this points to www
}aws_route53_recordを二つ作っているがは一つはwww(www.masatomoito.com)とApex(masatomoito.com)のもので、もう一つはサブドメインのmedia.masatomoito.comのためのもの。
mediaの方のCNAMEがwwwの方を指していることに注目。ここで依存関係があるので、terraformのdepends_onとかで依存を明示したくなるが、ここで行うのはCNAMEの登録だけなので特に依存は気にしなくてよい。
で、実際のコンテンツはgithub pagesで作成。GithubのRepo自体はマニュアルで作成した。TerraformのGitHub providerで作成することもできるが、そうすると間違ってdestroyとかしちゃうとRepoごと削除されちゃうのでterraformで管理しないほうがいいと判断。lifecycleでprevent_destroyにすることでも回避できるが、なんかめんどい。
ただ、Github providerのData sourceを使うことで情報は参照できる。こんな感じ。
data "github_repository" "www" {
full_name = "masa-org/masa-org.github.io"
}
data "github_repository" "media" {
full_name = "masa-org/media-masatomoito"
}Terraform便利だなぁ。