Blog
Wie Sie die Überprüfung von Google-Seiten mit terraform automatisieren

Für eine Reihe von Diensten der Google Cloud-Plattform muss ich eine Google-Site-Verifizierung durchführen, um zu beweisen, dass ich tatsächlich Eigentümer einer Domain bin. Leider bietet der Google Terraform-Anbieter dafür keine Unterstützung. In diesem Blog zeige ich Ihnen, wie Sie dies mit einem eigenen Terraform-Anbieter automatisieren können.
Obwohl Google die API für die
, unterstützt der
Es gibt eine Reihe von Möglichkeiten, wie ich nachweisen kann, dass ich die Domain besitze: durch Meta-Tags, HTML-Dateien, Google Analytics Tracking-Code, Google Tag Manager Container-Code oder DNS-Einträge. Der Anbieter implementiert die DNS-TXT-Methode.
Wie kann man automatisieren?
Ich automatisiere die Überprüfung des Besitzes der Domäne in den folgenden Schritten:
- Installieren Sie das terraform Google Site Verification Plugin
- Aktivieren Sie die Google Site Verification API
- eine von Cloud DNS gehostete Zone für Ihre Domain erstellen
- die NS-Einträge bei der übergeordneten Domäne registrieren
- den TXT-Eintrag in die von Cloud DNS gehostete Zone einfügen
- beantragen Sie eine Website-Überprüfung bei Google.
das Plugin installieren
Um das Plugin zu installieren, folgen Sie den Installationsanweisungen von terraform-provider-googlesiteverification.
terraform {
required_providers {
googlesiteverification = {
source = "hectorj/googlesiteverification"
version = "0.4.2"
}
}
}
Aktivieren Sie die Google Site Verification API
Das folgende Terraform-Snippet aktiviert die API zur Standortüberprüfung:
resource google_project_service siteverification {
service = "siteverification.googleapis.com"
}
Erstellen Sie die gehostete Zone in Cloud DNS
Das folgende Terraform-Snippet erstellt die gehostete Zone in Cloud DNS:
resource "google_dns_managed_zone" "domain" {
name = replace(var.domain_name, ".", "-")
dns_name = "${var.domain_name}."
}
Ich verwende eine separate gehostete Zone, da ich so die gesamte gehostete Zone innerhalb von Google über Terraform verwalten kann.
NS-Einträge in der übergeordneten Domäne registrieren
Das folgende Terraform-Snippet registriert die NS-Einträge in der übergeordneten Domain:
data "aws_route53_zone" "parent" {
name = "${local.parent_domain_name}."
}
resource "aws_route53_record" "domain_ns_records" {
zone_id = data.aws_route53_zone.parent.zone_id
name = "${var.domain_name}."
type = "NS"
ttl = "60"
records = google_dns_managed_zone.domain.name_servers
}
In meinem Fall ist die übergeordnete Domain in AWS registriert.
den Validierungseintrag in Cloud DNS einfügen
Das folgende Terraform-Snippet fordert das erforderliche Token und
an und fügt den Validierungseintrag in Cloud DNS ein:
data "googlesiteverification_dns_token" "domain" {
domain = var.domain_name
depends_on = [google_project_service.siteverification]
}
resource "google_dns_record_set" "domain" {
managed_zone = google_dns_managed_zone.domain.name
name = "${data.googlesiteverification_dns_token.domain.record_name}."
rrdatas = [data.googlesiteverification_dns_token.domain.record_value]
type = data.googlesiteverification_dns_token.domain.record_type
ttl = 60
}
beantragen Sie eine Website-Überprüfung bei Google.
Das folgende Terraform-Snippet fordert die Überprüfung der Website bei Google an:
resource "googlesiteverification_dns" "domain" {
domain = var.domain_name
token = data.googlesiteverification_dns_token.domain.record_value
depends_on = [aws_route53_record.domain_ns_records]
}
Anwendung der Änderungen
Zum Bewerben tippen Sie:
$ terraform apply --auto-approve
data.aws_route53_zone.parent: Refreshing state...
google_project_service.siteverification: Creating...
google_dns_managed_zone.domain: Creating...
google_dns_managed_zone.domain: Creation complete after 1s [id=projects/binx-demo/managedZones/google-binx-dev]
aws_route53_record.domain_ns_records: Creating...
google_project_service.siteverification: Creation complete after 4s [id=binx-demo/siteverification.googleapis.com]
data.google-site-verifier_dns_token.domain: Refreshing state...
google_dns_record_set.domain: Creating...
aws_route53_record.domain_ns_records: Still creating... [10s elapsed]
google_dns_record_set.domain: Creation complete after 4s [id=google-binx-dev/google.binx.dev./TXT]
aws_route53_record.domain_ns_records: Still creating... [20s elapsed]
aws_route53_record.domain_ns_records: Still creating... [30s elapsed]
aws_route53_record.domain_ns_records: Creation complete after 40s [id=XXXXXXXXXXXX_google.binx.dev._NS]
google-site-verifier_dns.domain: Creating...
google-site-verifier_dns.domain: Still creating... [10s elapsed]
google-site-verifier_dns.domain: Still creating... [20s elapsed]
google-site-verifier_dns.domain: Still creating... [30s elapsed]
google-site-verifier_dns.domain: Still creating... [40s elapsed]
google-site-verifier_dns.domain: Creation complete after 42s [id=google.binx.dev.]
Apply complete! Resources: 5 added, 0 changed, 0 destroyed.
das Ergebnis ansehen
Wenn Sie die Website zur Überprüfung der Website aufrufen, können Sie das Ergebnis sehen. Es sollte in etwa so aussehen
:
Verifizierungsversuche
| Datum | E-Mail | Ergebnis | Methode |
| - | - | - | - |
| 2 minutes ago
9/25/20 7:33:07 PM UTC | google-site-verifier@binx-demo.iam.gserviceaccount.com | Verifizierung erfolgreich. | DNS TXT record |
| 2 minutes ago
9/25/20 7:32:56 PM UTC | google-site-verifier@binx-demo.iam.gserviceaccount.com | Verification failed. | DNS TXT record |
| 2 minutes ago
9/25/20 7:32:45 PM UTC | google-site-verifier@binx-demo.iam.gserviceaccount.com | Verifizierung fehlgeschlagen. | DNS TXT record |
| 2 minutes ago
9/25/20 7:32:36 PM UTC | google-site-verifier@binx-demo.iam.gserviceaccount.com | Verification failed. | DNS TXT record |
| 2 minutes ago
9/25/20 7:32:32 PM UTC | google-site-verifier@binx-demo.iam.gserviceaccount.com | Verification failed. | DNS TXT record |
| 2 minutes ago
9/25/20 7:32:29 PM UTC | google-site-verifier@binx-demo.iam.gserviceaccount.com | Verification failed. | DNS TXT record |
| 2 minutes ago
9/25/20 7:32:27 PM UTC | google-site-verifier@binx-demo.iam.gserviceaccount.com | Verifizierung fehlgeschlagen. | DNS TXT-Eintrag |
Fazit
Mit dem Terraform-Provider für die Google Site Verification
habe ich die Validierung des Domainbesitzes gegenüber Google automatisiert. Es wäre schön, wenn diese Funktion Teil des Standard-Google-Providers wäre. Wenn Sie das auch so sehen, bewerten Sie bitte Ressourcen zur Validierung einer Domain hinzufügen #5698.
Den vollständigen Quellcode finden Sie im Github-Repository.
Foto von CDC auf Unsplash
Verfasst von

Mark van Holsteijn
Mark van Holsteijn is a senior software systems architect at Xebia Cloud-native solutions. He is passionate about removing waste in the software delivery process and keeping things clear and simple.
Contact



