mirror of
https://github.com/holos-run/holos.git
synced 2026-03-20 17:25:01 +00:00
This patch changes the `holos generate` command to `holos init` to match other tools like `go mod init`.
127 lines
3.2 KiB
Plaintext
127 lines
3.2 KiB
Plaintext
---
|
|
slug: setup
|
|
title: Setup
|
|
description: Install Holos and build the initial structure.
|
|
sidebar_position: 20
|
|
---
|
|
|
|
import Tabs from '@theme/Tabs';
|
|
import TabItem from '@theme/TabItem';
|
|
import RenderPlatformDiagram from '@site/src/diagrams/render-platform-sequence.mdx';
|
|
|
|
# Setup
|
|
|
|
## Overview
|
|
|
|
This tutorial will guide you through the installation of Holos and its
|
|
dependencies, as well as the initialization of a minimal Platform that you can
|
|
extend to meet your specific needs.
|
|
|
|
## Installing Holos
|
|
|
|
Holos is distributed as a single file executable that can be installed in a
|
|
couple of ways.
|
|
|
|
### Releases
|
|
|
|
Download `holos` from the [releases] page and place the executable into your
|
|
shell path.
|
|
|
|
### Go Install
|
|
|
|
```shell
|
|
go install github.com/holos-run/holos/cmd/holos@latest
|
|
```
|
|
|
|
### Dependencies
|
|
|
|
Holos integrates with the following tools that should be installed to enable
|
|
their functionality.
|
|
|
|
- [Helm] to fetch and render Helm chart Components.
|
|
- [Kubectl] to [kustomize] components.
|
|
|
|
## Generating a Platform
|
|
|
|
Use `holos` to generate a minimal platform using the recommended directory
|
|
structure. First, create and cd into a blank directory. Then use the `holos
|
|
generate platform` command to generate a minimal platform.
|
|
|
|
```shell
|
|
mkdir holos-tutorial
|
|
cd holos-tutorial
|
|
holos init platform v1alpha5
|
|
```
|
|
|
|
Holos creates a `platform` directory containing a `platform.gen.cue` file
|
|
serving as the entry point for your new platform configuration. You'll register
|
|
software components with the platform using the CUE code in this `platform`
|
|
directory.
|
|
|
|
## Rendering the Platform
|
|
|
|
We usually make configuration changes with holos in the following loop:
|
|
|
|
1. Edit some CUE code.
|
|
2. Render the whole platform.
|
|
3. Review the fully rendered manifests.
|
|
4. Repeat
|
|
|
|
Rendering the platform to plain manifest files allows us to see the changes
|
|
clearly.
|
|
|
|
<Tabs groupId="66379FE3-206D-4DF1-BAF0-29C9A6C17D00">
|
|
<TabItem value="command" label="Command">
|
|
```bash
|
|
holos render platform ./platform
|
|
```
|
|
</TabItem>
|
|
<TabItem value="output" label="Output">
|
|
```txt
|
|
rendered platform in 8.292µs
|
|
```
|
|
</TabItem>
|
|
<TabItem value="diagram" label="Diagram">
|
|
<RenderPlatformDiagram />
|
|
</TabItem>
|
|
</Tabs>
|
|
|
|
In this initial state `holos` doesn't do anything because no components are
|
|
registered with the platform. You can inspect the Platform definition to get
|
|
this insight.
|
|
|
|
<Tabs groupId="218658D2-1305-46D3-8F55-8DA8EB45F114">
|
|
<TabItem value="command" label="Command">
|
|
```bash
|
|
holos cue export --expression holos --out=yaml ./platform
|
|
```
|
|
</TabItem>
|
|
<TabItem value="output" label="Output">
|
|
```yaml
|
|
kind: Platform
|
|
apiVersion: v1alpha5
|
|
metadata:
|
|
name: default
|
|
spec:
|
|
components: []
|
|
```
|
|
Note the `spec.components` field is empty.
|
|
</TabItem>
|
|
</Tabs>
|
|
|
|
## Next Steps
|
|
|
|
You've got the structure of your platform configuration in place. Continue on to
|
|
[Hello Holos] where you'll learn how easy it is to manage a Helm chart with
|
|
holos.
|
|
|
|
[Helm]: https://github.com/helm/helm/releases
|
|
[Kubectl]: https://kubernetes.io/docs/tasks/tools/
|
|
[kustomize]: https://kustomize.io/
|
|
[Local Cluster]: ../topics/local-cluster.mdx
|
|
[Hello Holos]: ./hello-holos.mdx
|
|
[releases]: https://github.com/holos-run/holos/releases
|
|
[k3d]: https://k3d.io/
|
|
[OrbStack]: https://docs.orbstack.dev/install
|
|
[Docker]: https://docs.docker.com/get-started/get-docker/
|