個人サイト構築
この個人サイトを構築するにあたって、どのようにしたかメモ及び最初のポストとして。
まずこのサイトのドメインを取得した。ドメインはどこのプロバイダから取得してもいいが、今回は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
便利だなぁ。