moving everything to active or retired vs incubating and graduated
All checks were successful
Reese's Arch Toolbox / build-and-push-arch-toolbox (push) Successful in 14s
All checks were successful
Reese's Arch Toolbox / build-and-push-arch-toolbox (push) Successful in 14s
This commit is contained in:
@@ -3,7 +3,7 @@ run-name: Build and Push Reese's Arch Toolbox
|
||||
on:
|
||||
push:
|
||||
paths:
|
||||
- infrastructure/graduated/distoolbox/**
|
||||
- active/software_distoolbox/distoolbox/**
|
||||
- .gitea/workflows/**
|
||||
schedule:
|
||||
- cron: '@daily'
|
||||
@@ -23,8 +23,8 @@ jobs:
|
||||
- name: Build and push Docker image
|
||||
uses: https://github.com/docker/build-push-action@v5
|
||||
with:
|
||||
context: ${{ gitea.workspace }}/infrastructure/graduated/distoolbox
|
||||
file: ${{ gitea.workspace }}/infrastructure/graduated/distoolbox/arch-toolbox.containerfile
|
||||
context: ${{ gitea.workspace }}/active/software_distoolbox
|
||||
file: ${{ gitea.workspace }}/active/software_distoolbox/arch-toolbox.containerfile
|
||||
target: cpu
|
||||
push: true
|
||||
tags: "gitea.reeseapps.com/services/arch-toolbox:latest,gitea.reeseapps.com/services/arch-toolbox:${{gitea.sha}}"
|
||||
@@ -32,8 +32,8 @@ jobs:
|
||||
- name: Build and push AMD GPU Docker image
|
||||
uses: https://github.com/docker/build-push-action@v5
|
||||
with:
|
||||
context: ${{ gitea.workspace }}/infrastructure/graduated/distoolbox
|
||||
file: ${{ gitea.workspace }}/infrastructure/graduated/distoolbox/arch-toolbox.containerfile
|
||||
context: ${{ gitea.workspace }}/active/software_distoolbox
|
||||
file: ${{ gitea.workspace }}/active/software_distoolbox/arch-toolbox.containerfile
|
||||
target: amdgpu
|
||||
push: true
|
||||
tags: "gitea.reeseapps.com/services/arch-toolbox-amdgpu:latest,gitea.reeseapps.com/services/arch-toolbox-amdgpu:${{gitea.sha}}"
|
||||
|
||||
2
.vscode/tasks.json
vendored
2
.vscode/tasks.json
vendored
@@ -6,7 +6,7 @@
|
||||
{
|
||||
"label": "Build arch-toolbox",
|
||||
"type": "shell",
|
||||
"command": "./infrastructure/graduated/distoolbox/arch-build.sh",
|
||||
"command": "./active/software_distoolbox/arch-build.sh",
|
||||
"problemMatcher": [],
|
||||
"group": {
|
||||
"kind": "build",
|
||||
|
||||
126
README.md
126
README.md
@@ -4,9 +4,10 @@ A project to store homelab stuff.
|
||||
|
||||
Just here for the Arch distoolbox?
|
||||
|
||||
[Arch Distoolbox](infrastructure/graduated/distoolbox/distoolbox.md)
|
||||
[Arch Distoolbox](active/software_distoolbox/distoolbox.md)
|
||||
|
||||

|
||||

|
||||
|
||||
## Table of Contents
|
||||
|
||||
@@ -15,16 +16,18 @@ Just here for the Arch distoolbox?
|
||||
- [Fun Facts](#fun-facts)
|
||||
- [Important Dates and Times](#important-dates-and-times)
|
||||
- [Project Lifecycle](#project-lifecycle)
|
||||
- [Supported Projects](#supported-projects)
|
||||
- [Graduation Requirements](#graduation-requirements)
|
||||
- [Project Types](#project-types)
|
||||
- [Active Project Requirements](#active-project-requirements)
|
||||
- [Retirement Requirements](#retirement-requirements)
|
||||
- [Project Structure](#project-structure)
|
||||
- [Creating a Project](#creating-a-project)
|
||||
- [Order of Operations](#order-of-operations)
|
||||
|
||||
## Fun Facts
|
||||
|
||||
On linux, <kbd>ctrl</kbd>+<kbd>shift</kbd>+<kbd>u</kbd>, then, while holding
|
||||
<kbd>ctrl</kbd>+<kbd>shift</kbd>, typing <kbd>b</kbd>+<kbd>0</kbd> will type a ° (degree) symbol. Also you
|
||||
can enter any unicode symbol this way.
|
||||
<kbd>ctrl</kbd>+<kbd>shift</kbd>, typing <kbd>b</kbd>+<kbd>0</kbd> will type a
|
||||
° (degree) symbol. Also you can enter any unicode symbol this way.
|
||||
|
||||
## Important Dates and Times
|
||||
|
||||
@@ -34,55 +37,67 @@ can enter any unicode symbol this way.
|
||||
|
||||
## Project Lifecycle
|
||||
|
||||
Projects will fall into one of the three following categories:
|
||||
Projects will either be `active` or `retired`.
|
||||
|
||||
1. Incubating
|
||||
2. Graduated
|
||||
3. Retired
|
||||
Active projects are being actively developed. They are in-use, stable, and
|
||||
production ready. Active projects should meet and track the [active project
|
||||
requirements](#active-project-requirements)
|
||||
|
||||
Incubating projects are experimental or prototypal. They're being actively developed and aren't
|
||||
ready for production deployment. These projects may appear and disappear without warning and are not
|
||||
stable. There is no minimum requirement for a project to be in incubation.
|
||||
Retired projects are no longer in use or recommended. They are kept for
|
||||
reference. Retired projects must meet the [retirement
|
||||
requirements](#retirement-requirements)
|
||||
|
||||
Graduated projects are in-use, stable, and production ready. They met the [graduation
|
||||
requirements](#graduation-requirements) and are actively maintained.
|
||||
You'll notice that most of the active projects have scripts or examples that
|
||||
use the `active` path as part of their install process. When moved outside the
|
||||
`active` directory their scripts and examples break. This is intentional. If
|
||||
you want a retired project to work again, bring it back to the active
|
||||
directory.
|
||||
|
||||
Retired projects are no longer in use or recommended. They are kept for reference. Retired projects
|
||||
must meet the [retirement requirements](#retirement-requirements)
|
||||
## Project Types
|
||||
|
||||
## Supported Projects
|
||||
All projects will be prefixed with one of the following categories:
|
||||
|
||||
All projects will fall into one of the following categories:
|
||||
- `device_`
|
||||
- `os_`
|
||||
- `cloud_`
|
||||
- `systemd_`
|
||||
- `podman_`
|
||||
- `docker_`
|
||||
- `kubernetes_`
|
||||
|
||||
- hardware
|
||||
- infrastructure
|
||||
- cloud
|
||||
- systemd
|
||||
- podman
|
||||
- docker
|
||||
- kubernetes
|
||||
Note, some projects will be named with just the prefix. These are projects for
|
||||
configuring the underlying technology. The `podman` project, for example, will
|
||||
tell you how to configure and install podman so it works correctly.
|
||||
|
||||
Hardware will contain projects that relate to specific machines or equipment. 3D printers, Raspberry
|
||||
Pis, and other IOT devices qualify as specialized hardware that needs documentation and
|
||||
configuration. This is not limited to computer equipment. The furnace is an important part of the
|
||||
home lab. the Air Conditioner is integral to the homelab's function. These projects will also be documented.
|
||||
`device_` will prefix projects that relate to specific machines or equipment.
|
||||
3D printers, Raspberry Pis, and other IOT devices qualify as specialized
|
||||
hardware that needs documentation and configuration. This is not limited to
|
||||
computer equipment. The furnace is an important part of the homelab. the Air
|
||||
Conditioner is integral to the homelab's function. These projects will also be
|
||||
documented.
|
||||
|
||||
Infrastructure will contain projects that set up the environments for the remaining listed project
|
||||
types. For example, infrastructure will contain "how to set up a linux box with docker" or "how to
|
||||
set up a k3s cluster for kubernetes".
|
||||
`os_` will contain projects that set up operating systems. These include best
|
||||
practices, backups, updates, default software, etc.
|
||||
|
||||
Cloud projects are for specific cloud providers.
|
||||
`cloud_` projects are for specific cloud providers. This will contain
|
||||
documentation and errata for things like AWS IAM, Route53, etc. Note these will
|
||||
be prefixed with the cloud's name, not the word "cloud". So AWS services will
|
||||
be prefixed with `aws_` and azure would be `azure_`. This should make them more
|
||||
searchable.
|
||||
|
||||
Systemd projects are designed to be installed with ansible and run via systemd on a linux VM or
|
||||
other linux hardware.
|
||||
`systemd_` projects are designed to be installed with ansible and run via
|
||||
systemd on a linux VM or other linux hardware.
|
||||
|
||||
Podman projects are either designed to be run as quadlets or as podman containers outright.
|
||||
`podman_` projects are either designed to be run as quadlets or as podman
|
||||
containers outright.
|
||||
|
||||
Docker projects are either docker-compose or some form of docker run command.
|
||||
`docker_` projects are either docker-compose or some form of docker run
|
||||
command.
|
||||
|
||||
Kubernetes projects are helm, kustomize, kubectl, or some other kubernetes compliant deployment.
|
||||
`kubernetes_` projects are helm, kustomize, kubectl, or some other kubernetes
|
||||
compliant deployment.
|
||||
|
||||
## Graduation Requirements
|
||||
## Active Project Requirements
|
||||
|
||||
- [ ] Installation is documented
|
||||
- [ ] Installation configuration examples are provided
|
||||
@@ -98,11 +113,30 @@ Kubernetes projects are helm, kustomize, kubectl, or some other kubernetes compl
|
||||
- [ ] If applicable, a replacement has been identified and documented
|
||||
- [ ] If applicable, backup data locations are documented
|
||||
|
||||
## Project Structure
|
||||
|
||||
All projects will have, at minimum.
|
||||
|
||||
1. A README named `project-name.md`
|
||||
2. A directory called `secrets` which will be gitignored.
|
||||
|
||||
## Creating a Project
|
||||
|
||||
Assuming your project name is `my-project` and it runs on `podman`
|
||||
|
||||
1. Create a new directory called `podman_my-project` under the `active`
|
||||
directory
|
||||
2. Copy the readme template: `cp project_readme_template.md
|
||||
active/podman_my-project/my-project.md`
|
||||
3. Populate `my-project.md` as you work through the install process
|
||||
4. Create a directory called `secrets` in `podman_my-project`. This will be
|
||||
automatically gitignored. Put all secrets here.
|
||||
5. Push the changes when you have a working product
|
||||
|
||||
## Order of Operations
|
||||
|
||||
1. Install cloud projects. These usually have no dependencies and typically provide critical services
|
||||
to other projects (DNS, email notifications, etc.)
|
||||
2. Install infrastructure projects. Usually these only have dependencies on cloud services.
|
||||
3. Install systemd services. These are usually low-level programs that require a dedicated machine
|
||||
and perform semi-critical functions (ipv4 proxy, ddns, etc.).
|
||||
4. Install kubernetes, docker, podman, and other services.
|
||||
1. Configure cloud providers. These usually have no dependencies and typically
|
||||
provide critical services to other projects (DNS, email notifications, etc.)
|
||||
2. Install infrastructure projects. Usually these only have dependencies on
|
||||
cloud services.
|
||||
3. Install systemd, kubernetes, docker, podman, and other services.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# AWS Credentials
|
||||
|
||||
Note: this requires the AWS CLI. See [AWS CLI](/cloud/graduated/aws_cli/aws_cli.md)
|
||||
Note: this requires the AWS CLI. See [AWS CLI](/active/aws_cli/aws_cli.md)
|
||||
|
||||
- [AWS Credentials](#aws-credentials)
|
||||
- [Route53 Credential Generation](#route53-credential-generation)
|
||||
@@ -14,10 +14,10 @@ export AWS_USERNAME=
|
||||
aws iam create-user --user-name $AWS_USERNAME
|
||||
|
||||
# Allow updating reeseapps
|
||||
aws iam attach-user-policy --user-name $AWS_USERNAME --policy-arn $(cat cloud/graduated/aws_iam/secrets/update-reeseapps-iam-policy-arn)
|
||||
aws iam attach-user-policy --user-name $AWS_USERNAME --policy-arn $(cat active/aws_iam/secrets/update-reeseapps-iam-policy-arn)
|
||||
|
||||
# Allow updating reeselink
|
||||
aws iam attach-user-policy --user-name $AWS_USERNAME --policy-arn $(cat cloud/graduated/aws_iam/secrets/update-reeselink-iam-policy-arn)
|
||||
aws iam attach-user-policy --user-name $AWS_USERNAME --policy-arn $(cat active/aws_iam/secrets/update-reeselink-iam-policy-arn)
|
||||
|
||||
# Create credentials (run aws configure on the machine that needs these to input them manually)
|
||||
aws iam create-access-key --user-name $AWS_USERNAME
|
||||
@@ -27,7 +27,7 @@ aws iam create-access-key --user-name $AWS_USERNAME
|
||||
|
||||
Example Policy:
|
||||
|
||||
cloud/graduated/aws_iam/secrets/policies/route53_reeselink.json
|
||||
active/aws_iam/secrets/route53_reeselink.json
|
||||
|
||||
```json
|
||||
{
|
||||
@@ -59,10 +59,10 @@ cloud/graduated/aws_iam/secrets/policies/route53_reeselink.json
|
||||
|
||||
```bash
|
||||
# Allow updating route53 records for reeselink.com
|
||||
aws iam create-policy --policy-name update-reeselink --policy-document file://cloud/graduated/aws_iam/secrets/route53_reeselink_policy.json
|
||||
aws iam create-policy --policy-name update-reeselink --policy-document file://active/aws_iam/secrets/route53_reeselink_policy.json
|
||||
|
||||
# Allow updating route53 records for reeseapps.com
|
||||
aws iam create-policy --policy-name update-reeseapps --policy-document file://cloud/graduated/aws_iam/secrets/route53_reeseapps_policy.json
|
||||
aws iam create-policy --policy-name update-reeseapps --policy-document file://active/aws_iam/secrets/route53_reeseapps_policy.json
|
||||
```
|
||||
|
||||
## Email Credentials
|
||||
@@ -17,14 +17,14 @@ convenience.
|
||||
|
||||
## Reeselink Addresses
|
||||
|
||||
See `example-record-file.json` for example contents of `file://cloud/graduated/aws_route53/secrets/aws/reeselink.json`.
|
||||
See `example-record-file.json` for example contents of `file://active/aws_route53/secrets/aws/reeselink.json`.
|
||||
|
||||
```bash
|
||||
aws route53 change-resource-record-sets --hosted-zone-id $(cat cloud/graduated/aws_route53/secrets/reeselink-zoneid) --change-batch file://cloud/graduated/aws_route53/secrets/reeselink.json
|
||||
aws route53 change-resource-record-sets --hosted-zone-id $(cat active/aws_route53/secrets/reeselink-zoneid) --change-batch file://active/aws_route53/secrets/reeselink.json
|
||||
```
|
||||
|
||||
## Reeseapps Addresses
|
||||
|
||||
```bash
|
||||
aws route53 change-resource-record-sets --hosted-zone-id $(cat cloud/graduated/aws_route53/secrets/reeseapps-zoneid) --change-batch file://cloud/graduated/aws_route53/secrets/reeseapps.json
|
||||
aws route53 change-resource-record-sets --hosted-zone-id $(cat active/aws_route53/secrets/reeseapps-zoneid) --change-batch file://active/aws_route53/secrets/reeseapps.json
|
||||
```
|
||||
3
active/aws_ses/aws_ses.md
Normal file
3
active/aws_ses/aws_ses.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# AWS SES
|
||||
|
||||
AWS Simple Email Service
|
||||
3
active/kubernetes/kubernetes.md
Normal file
3
active/kubernetes/kubernetes.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# Kubernetes
|
||||
|
||||
See [k3s](/active/systemd_k3s/k3s.md)
|
||||
@@ -12,7 +12,7 @@ helm repo add bitwarden https://charts.bitwarden.com/
|
||||
helm repo update
|
||||
|
||||
kubectl create namespace bitwarden
|
||||
helm show values bitwarden/self-host > kubernetes/incubating/bitwarden/values.yaml
|
||||
helm show values bitwarden/self-host > active/kubernetes_bitwarden/values.yaml
|
||||
|
||||
# Installation ID: https://bitwarden.com/host/
|
||||
# Optional argument for Have I Been Pwned: --from-literal=globalSettings__hibpApiKey="REPLACE" \
|
||||
@@ -25,5 +25,5 @@ kubectl create secret generic custom-secret -n bitwarden \
|
||||
--from-file=globalSettings__yubico__key=./secrets/bitwarden/yubico_secret \
|
||||
--from-file=SA_PASSWORD=./secrets/bitwarden/sa_password
|
||||
|
||||
helm upgrade bitwarden bitwarden/self-host --install --namespace bitwarden --values kubernetes/incubating/bitwarden/values.yaml
|
||||
helm upgrade bitwarden bitwarden/self-host --install --namespace bitwarden --values active/kubernetes_bitwarden/values.yaml
|
||||
```
|
||||
@@ -40,7 +40,7 @@ helm repo update
|
||||
helm upgrade --install \
|
||||
gitea \
|
||||
gitea-charts/gitea \
|
||||
--values kubernetes/graduated/gitea/gitea-values.yaml \
|
||||
--values active/kubernetes_gitea/gitea-values.yaml \
|
||||
--namespace gitea \
|
||||
--create-namespace
|
||||
```
|
||||
@@ -8,7 +8,7 @@ helm repo update
|
||||
helm upgrade --install my-grafana grafana/grafana \
|
||||
--namespace monitoring \
|
||||
--create-namespace \
|
||||
--values kubernetes/incubating/grafana/values.yaml
|
||||
--values active/kubernetes_grafana/values.yaml
|
||||
|
||||
kubectl get secret --namespace monitoring my-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
|
||||
```
|
||||
@@ -25,5 +25,5 @@ helm upgrade --install \
|
||||
kube-prometheus-stack \
|
||||
prometheus-community/kube-prometheus-stack \
|
||||
--namespace kube-system \
|
||||
--values kubernetes/incubating/grafana/helm-prom-stack-values.yaml
|
||||
--values active/kubernetes_grafana/helm-prom-stack-values.yaml
|
||||
```
|
||||
@@ -7,7 +7,7 @@ This creates a basic iperf3 server.
|
||||
```bash
|
||||
helm upgrade --install \
|
||||
iperf3 \
|
||||
./kubernetes/graduated/iperf3 \
|
||||
./active/kubernetes_iperf3/iperf3 \
|
||||
--namespace iperf3 \
|
||||
--create-namespace
|
||||
```
|
||||
@@ -5,7 +5,7 @@
|
||||
```bash
|
||||
helm upgrade --install \
|
||||
jellyfin \
|
||||
./kubernetes/graduated/jellyfin \
|
||||
./active/kubernetes_jellyfin \
|
||||
--namespace jellyfin \
|
||||
--create-namespace
|
||||
```
|
||||
@@ -10,15 +10,8 @@
|
||||
|
||||
```bash
|
||||
# Download the updated template from github
|
||||
kubectl kustomize "github.com/rancher/local-path-provisioner/deploy?ref=v0.0.31" > kubernetes/graduated/local-path-provisioner/local-path-storage.yaml
|
||||
kubectl kustomize "github.com/rancher/local-path-provisioner/deploy?ref=v0.0.31" > active/kubernetes_local-path-provisioner/local-path-storage.yaml
|
||||
|
||||
# Apply customizations (ssd/hdd storage, read write many support)
|
||||
kubectl kustomize kubernetes/graduated/local-path-provisioner | kubectl apply -f -
|
||||
|
||||
# Create test pod
|
||||
kubectl apply -f systemd/graduated/k3s/tests/local-storage-test.yaml
|
||||
kubectl get pod -n default
|
||||
# Exec in and test - storage will be mounted at /storage
|
||||
kubectl exec -it -n default <local-storage-test> -- bash
|
||||
kubectl delete -f systemd/graduated/k3s/tests/local-storage-test.yaml
|
||||
kubectl kustomize active/kubernetes_local-path-provisioner | kubectl apply -f -
|
||||
```
|
||||
@@ -10,7 +10,7 @@ with a new port. The server-downloader is called "minecraft_get_server" and is a
|
||||
```bash
|
||||
helm upgrade --install \
|
||||
testcraft \
|
||||
./kubernetes/graduated/minecraft \
|
||||
./active/kubernetes_minecraft \
|
||||
--namespace minecraft \
|
||||
--create-namespace
|
||||
```
|
||||
@@ -20,7 +20,7 @@ helm upgrade --install \
|
||||
```bash
|
||||
helm upgrade --install \
|
||||
nimcraft \
|
||||
./kubernetes/graduated/minecraft \
|
||||
./active/kubernetes_minecraft \
|
||||
--namespace minecraft \
|
||||
--create-namespace
|
||||
```
|
||||
@@ -30,7 +30,7 @@ helm upgrade --install \
|
||||
```bash
|
||||
helm upgrade --install \
|
||||
courtniecraft \
|
||||
./kubernetes/graduated/minecraft \
|
||||
./active/kubernetes_minecraft \
|
||||
--namespace minecraft \
|
||||
--create-namespace
|
||||
```
|
||||
@@ -40,7 +40,7 @@ helm upgrade --install \
|
||||
```bash
|
||||
helm upgrade --install \
|
||||
camcraft1 \
|
||||
./kubernetes/graduated/minecraft \
|
||||
./active/kubernetes_minecraft \
|
||||
--namespace minecraft \
|
||||
--create-namespace
|
||||
```
|
||||
@@ -7,7 +7,7 @@ Snapdrop is a file sharing app that allows airdrop-like functionality over the w
|
||||
```bash
|
||||
helm upgrade --install \
|
||||
snapdrop \
|
||||
./kubernetes/graduated/snapdrop \
|
||||
./active/kubernetes_snapdrop \
|
||||
--namespace snapdrop \
|
||||
--create-namespace
|
||||
```
|
||||
@@ -10,7 +10,7 @@ point.
|
||||
```bash
|
||||
helm upgrade --install \
|
||||
wordpress \
|
||||
-f kubernetes/incubating/bitnami/wordpress.yaml \
|
||||
-f active/kubernetes_bitnami/wordpress.yaml \
|
||||
--set wordpressUsername=admin \
|
||||
--set wordpressPassword=password \
|
||||
--set mariadb.auth.rootPassword=secretpassword \
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user