<?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 ainfra</title><link>https://projectious-work.github.io/ainfra/v0.1/docs/guides/</link><description>Recent content in Guides on ainfra</description><generator>Hugo</generator><language>en</language><atom:link href="https://projectious-work.github.io/ainfra/v0.1/docs/guides/index.xml" rel="self" type="application/rss+xml"/><item><title>Lifecycle operations</title><link>https://projectious-work.github.io/ainfra/v0.1/docs/guides/lifecycle/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://projectious-work.github.io/ainfra/v0.1/docs/guides/lifecycle/</guid><description>&lt;h2 id="validate"&gt;Validate&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ainfra validate path/to/document.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ainfra validate path/to/document.json --format json
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Validation reads a document but does not resolve secret references or run an
infrastructure engine.&lt;/p&gt;
&lt;h2 id="check-readiness"&gt;Check readiness&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ainfra doctor
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ainfra doctor --format json
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ainfra doctor --input .ainfra/hetzner.input.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ainfra doctor --environment development
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The input-aware form also checks backend readiness for the intended
environment.&lt;/p&gt;
&lt;h2 id="plan"&gt;Plan&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ainfra plan TEMPLATE --input INPUT
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For an initialized project, use the declared environment:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ainfra plan --environment development
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Treat the plan as sensitive. Review resource ownership, addresses, firewall
rules, image selection, and estimated cost. Apply only the returned plan ID:&lt;/p&gt;</description></item><item><title>Local validation</title><link>https://projectious-work.github.io/ainfra/v0.1/docs/guides/local-tooling/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://projectious-work.github.io/ainfra/v0.1/docs/guides/local-tooling/</guid><description>&lt;p&gt;The repository intentionally runs its gates locally. It does not contain
GitHub Actions workflow files.&lt;/p&gt;
&lt;h2 id="install-security-tools"&gt;Install security tools&lt;/h2&gt;
&lt;p&gt;The supported bootstrap installs pinned tools into the ignored
&lt;code&gt;.ainfra/tools/&lt;/code&gt; directory:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scripts/bootstrap-security-tools
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;It installs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Checkov &lt;code&gt;3.2.529&lt;/code&gt; in an isolated uv tool environment;&lt;/li&gt;
&lt;li&gt;Gitleaks &lt;code&gt;8.30.1&lt;/code&gt;, verified against its release checksum.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Checkov is isolated because its dependency constraints conflict with the
project environment. Runtime version checks fail closed.&lt;/p&gt;
&lt;h2 id="run-all-gates"&gt;Run all gates&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scripts/validate-all
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scripts/test-all
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The validation suite covers formatting, typing, contracts, OpenTofu,
Ansible, repository policy, Rust Clippy and RustSec checks, Checkov, and
Gitleaks. Rust &lt;code&gt;1.96.1&lt;/code&gt; is pinned in &lt;code&gt;rust-toolchain.toml&lt;/code&gt;; the aibox workspace
installs Rust, Clippy, Rustfmt, and &lt;code&gt;cargo-audit&lt;/code&gt;. Missing required tooling is a
failure, not a skipped check.&lt;/p&gt;</description></item><item><title>Authoring templates</title><link>https://projectious-work.github.io/ainfra/v0.1/docs/guides/authoring-templates/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://projectious-work.github.io/ainfra/v0.1/docs/guides/authoring-templates/</guid><description>&lt;p&gt;Read the &lt;a href="https://projectious-work.github.io/ainfra/v0.1/docs/concepts/template-strategy/"&gt;template strategy&lt;/a&gt; first. This guide covers the concrete
authoring workflow.&lt;/p&gt;
&lt;h2 id="choose-adaptation-or-a-new-template"&gt;Choose adaptation or a new template&lt;/h2&gt;
&lt;p&gt;Adapt an existing template when the provider, resource topology, lifecycle,
and security model remain the same. Typical adaptations include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;changing sizes, counts, locations, or opt-in networking through inputs;&lt;/li&gt;
&lt;li&gt;adding another explicitly supported operating-system image;&lt;/li&gt;
&lt;li&gt;extending an existing Ansible role;&lt;/li&gt;
&lt;li&gt;adding a compatible output or capability already understood by ainfra.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Create a new template when the provider changes, the topology has different
ownership or teardown behavior, the engine layout changes materially, or the
existing template&amp;rsquo;s security promises would become misleading.&lt;/p&gt;</description></item></channel></rss>