docs: refine Terraform slides (providers, versions, copy)
- slide 7: "Snowflake Hell" -> "configuration drift" - slide 8: drop "Prod breaks on a Tuesday" bullet - slide 13: BSL -> BUSL 1.1 - slide 17: lead with FR/EU providers (OVHcloud, Scaleway, Clever Cloud), drop GCP/Azure - slide 18: Debian 13, OVH provider ~> 2.0, add version-syntax note - slide 19: bump versions (openstack v3.4.0, ovh v2.13.1), minimal "..." trim markers + notes - slide 20: smaller heading Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
27
index.html
27
index.html
@@ -442,7 +442,7 @@
|
||||
<!-- ─── SLIDE 7 ─────────────────────────────────────────────────── -->
|
||||
<section>
|
||||
<h2>Unique. Unreproducible. Undocumented.</h2>
|
||||
<p><em>Welcome to Snowflake Hell.</em></p>
|
||||
<p><em>Welcome to configuration drift.</em></p>
|
||||
<aside class="notes">
|
||||
<ul>
|
||||
<li>"Snowflake servers" — unique, fragile, impossible to recreate.</li>
|
||||
@@ -459,7 +459,6 @@
|
||||
<section>
|
||||
<h2>Configuration drift is silent…</h2>
|
||||
<ul>
|
||||
<li>Prod breaks on a Tuesday</li>
|
||||
<li>Can't reproduce the bug locally</li>
|
||||
<li>Can't scale reliably</li>
|
||||
<li>Can't onboard a new server without fear</li>
|
||||
@@ -632,7 +631,7 @@
|
||||
<li><strong>Infrastructure as Code</strong> tool for provisioning cloud resources</li>
|
||||
<li>Created by <strong>HashiCorp</strong> in 2014</li>
|
||||
<li>Written in <strong>Go</strong></li>
|
||||
<li>BSL license since 2023 (was MPL)</li>
|
||||
<li>BUSL 1.1 license since 2023 (was MPL)</li>
|
||||
</ul>
|
||||
<aside class="notes">
|
||||
<ul>
|
||||
@@ -802,7 +801,7 @@
|
||||
<section class="s-tf">
|
||||
<h2>One tool. Every API.</h2>
|
||||
<ul>
|
||||
<li><strong>1000+ providers</strong> — AWS, GCP, Azure, Cloudflare, GitHub, Kubernetes…</li>
|
||||
<li><strong>1000+ providers</strong> — OVHcloud, Scaleway, Clever Cloud, AWS, Cloudflare, Kubernetes…</li>
|
||||
<li>Not just cloud — DNS, monitoring, CI/CD, anything with an API</li>
|
||||
</ul>
|
||||
<p><em>If it has an API, there's a Terraform provider for it.</em></p>
|
||||
@@ -822,13 +821,13 @@
|
||||
terraform {
|
||||
required_providers {
|
||||
openstack = { source = "terraform-provider-openstack/openstack", version = "~> 3.0" }
|
||||
ovh = { source = "ovh/ovh", version = "~> 1.0" }
|
||||
ovh = { source = "ovh/ovh", version = "~> 2.0" }
|
||||
}
|
||||
}
|
||||
|
||||
resource "openstack_compute_instance_v2" "web" {
|
||||
name = "finistdevs-web"
|
||||
image_name = "Debian 12"
|
||||
image_name = "Debian 13"
|
||||
flavor_name = "b3-8"
|
||||
network { name = "Ext-Net" }
|
||||
}
|
||||
@@ -845,6 +844,7 @@ resource "ovh_domain_zone_record" "web" {
|
||||
<li>Real OVHcloud example: spin up an instance, then point a DNS record at it.</li>
|
||||
<li>Note the implicit dependency — the DNS record references the instance's IP, so Terraform orders them automatically.</li>
|
||||
<li>Two different providers (OpenStack + OVH) working together in one file.</li>
|
||||
<li>Version syntax: <code>~></code> is the pessimistic constraint operator. <code>~> 2.0</code> allows any 2.x (>= 2.0, < 3.0) — patch and minor updates, but never a breaking major bump. <code>~> 2.13.0</code> would pin tighter, allowing only 2.13.x.</li>
|
||||
</ul>
|
||||
</aside>
|
||||
</section>
|
||||
@@ -856,16 +856,17 @@ resource "ovh_domain_zone_record" "web" {
|
||||
$ terraform init
|
||||
Initializing provider plugins...
|
||||
- Finding terraform-provider-openstack/openstack versions matching "~> 3.0"...
|
||||
- Finding ovh/ovh versions matching "~> 1.0"...
|
||||
- Installing terraform-provider-openstack/openstack v3.0.0...
|
||||
- Installing ovh/ovh v1.3.0...
|
||||
- Finding ovh/ovh versions matching "~> 2.0"...
|
||||
- Installing terraform-provider-openstack/openstack v3.4.0...
|
||||
- Installing ovh/ovh v2.13.1...
|
||||
Terraform has been successfully initialized!
|
||||
|
||||
$ terraform plan
|
||||
openstack_compute_instance_v2.web: Refreshing state...
|
||||
...
|
||||
Plan: 2 to add, 0 to change, 0 to destroy.
|
||||
|
||||
$ terraform apply
|
||||
...
|
||||
openstack_compute_instance_v2.web: Creating...
|
||||
openstack_compute_instance_v2.web: Creation complete after 45s [id=abc-123]
|
||||
ovh_domain_zone_record.web: Creating...
|
||||
@@ -878,13 +879,17 @@ Apply complete! Resources: 2 added, 0 changed, 0 destroyed.
|
||||
<li>Walk the lifecycle: init (download providers) → plan → apply.</li>
|
||||
<li>"2 added, 0 changed, 0 destroyed" — exactly the diff you reviewed, nothing more.</li>
|
||||
<li>Re-running apply with no changes does nothing — that's idempotence.</li>
|
||||
<li>Each <code>...</code> on the slide hides real output — call it out so nobody thinks Terraform is this terse.</li>
|
||||
<li>The <code>...</code> after <code>plan</code>: a full per-resource <code>+</code>/<code>-</code> diff of every attribute Terraform will set — this is what you actually review.</li>
|
||||
<li>The <code>...</code> after <code>apply</code>: Terraform replays that same plan, then pauses for an interactive "yes" prompt — skip it with <code>-auto-approve</code> in CI.</li>
|
||||
<li>I also trimmed init: real output adds backend init, "Installed … (signed by …)" lines, and the <code>.terraform.lock.hcl</code> being written.</li>
|
||||
</ul>
|
||||
</aside>
|
||||
</section>
|
||||
|
||||
<!-- ─── SLIDE 20 : OpenTofu ─────────────────────────────────────── -->
|
||||
<section class="s-tf">
|
||||
<h2>HashiCorp changed Terraform's license.</h2>
|
||||
<h2 style="font-size:1.05em;">HashiCorp changed Terraform's license.</h2>
|
||||
<ul>
|
||||
<li><strong>BSL</strong> instead of MPL — no longer truly open-source</li>
|
||||
<li>The community responded: <strong>OpenTofu</strong>, by the OpenTF Foundation</li>
|
||||
|
||||
Reference in New Issue
Block a user