<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Guides on Deevnet Terraform Provider</title><link>https://deevnet.github.io/terraform-provider-deevnet/docs/guides/</link><description>Recent content in Guides on Deevnet Terraform Provider</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://deevnet.github.io/terraform-provider-deevnet/docs/guides/index.xml" rel="self" type="application/rss+xml"/><item><title>Install</title><link>https://deevnet.github.io/terraform-provider-deevnet/docs/guides/install/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deevnet.github.io/terraform-provider-deevnet/docs/guides/install/</guid><description>&lt;h1 id="install-the-provider">
 Install the provider
 &lt;a class="anchor" href="#install-the-provider">#&lt;/a>
&lt;/h1>
&lt;p>&lt;strong>The provider is not in the public Terraform Registry.&lt;/strong> It goes into Terraform&amp;rsquo;s implicit
local mirror, and &lt;code>terraform init&lt;/code> finds it there:&lt;/p>
&lt;pre tabindex="0">&lt;code>~/.terraform.d/plugins/registry.terraform.io/deevnet/deevnet/&amp;lt;version&amp;gt;/&amp;lt;os&amp;gt;_&amp;lt;arch&amp;gt;/
&lt;/code>&lt;/pre>&lt;p>The source address is &lt;code>deevnet/deevnet&lt;/code> all the same, so a tenant&amp;rsquo;s &lt;code>required_providers&lt;/code>
block reads as it would for a registry provider.&lt;/p>
&lt;h2 id="at-a-deevnet-site">
 At a Deevnet site
 &lt;a class="anchor" href="#at-a-deevnet-site">#&lt;/a>
&lt;/h2>
&lt;p>&lt;strong>On the tenant developer network, the site&amp;rsquo;s download server is the fastest route.&lt;/strong> It also
installs the &lt;code>grafana&lt;/code> provider, for dashboards as code.&lt;/p></description></item><item><title>What a Tenant Holds</title><link>https://deevnet.github.io/terraform-provider-deevnet/docs/guides/tenant-credential/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deevnet.github.io/terraform-provider-deevnet/docs/guides/tenant-credential/</guid><description>&lt;h1 id="what-a-tenant-holds">
 What a tenant holds
 &lt;a class="anchor" href="#what-a-tenant-holds">#&lt;/a>
&lt;/h1>
&lt;p>&lt;strong>A tenant holds one credential: its Deevnet token.&lt;/strong> Nothing else about the substrate
reaches the tenant: no hypervisor credential, no vault access.&lt;/p>
&lt;h2 id="enrollment">
 Enrollment
 &lt;a class="anchor" href="#enrollment">#&lt;/a>
&lt;/h2>
&lt;p>&lt;strong>The first apply trades a single-use enrollment token for the tenant&amp;rsquo;s own token.&lt;/strong> The
substrate admits a tenant name and issues the enrollment token, delivered encrypted into the
tenant&amp;rsquo;s repository. The first &lt;code>terraform apply&lt;/code> spends it and receives the tenant&amp;rsquo;s own
token, which every later call uses
(
 &lt;a href="https://deevnet.github.io/deevnet-docs/docs/architecture/decisions/tenant-model/0015-tenant-onboarding-through-api/">ADR-0015&lt;/a>).&lt;/p></description></item><item><title>Restore Instead of Recreate</title><link>https://deevnet.github.io/terraform-provider-deevnet/docs/guides/restore/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deevnet.github.io/terraform-provider-deevnet/docs/guides/restore/</guid><description>&lt;h1 id="restore-instead-of-recreate">
 Restore instead of recreate
 &lt;a class="anchor" href="#restore-instead-of-recreate">#&lt;/a>
&lt;/h1>
&lt;p>&lt;strong>When the API no longer holds an object, the provider restores it from state instead of
creating a new one.&lt;/strong> The usual advice for a remote object that is gone is to drop it from
state and let the next plan create another. For the resources that carry secrets or addressing
that would be a loss: a new tenant would mean new keys, and a new workload would mean a new
address.&lt;/p></description></item></channel></rss>