Merge remote-tracking branch 'refs/remotes/origin/main'
Some checks are pending
SSH and echo to file / ssh (push) Waiting to run

Add sops attribute to config.boot (vyos config file)
WIP shell.nix
Add encrypted config.boot for vyos config
Build workflow components for vyos development and deployment
Add metallb to nix-lab helmfile
This commit is contained in:
Joey Hafner 2024-10-14 14:19:13 -07:00
commit 9abb87ace5
9 changed files with 220 additions and 9 deletions

1
.gitattributes vendored
View File

@ -2,3 +2,4 @@ secrets.env filter=sops diff=sops
*.secrets filter=sops diff=sops *.secrets filter=sops diff=sops
*.token filter=sops diff=sops *.token filter=sops diff=sops
*.passwd filter=sops diff=sops *.passwd filter=sops diff=sops
config.boot filter=sops diff=sops

58
homelab/vyos/config.boot Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,5 @@
#!/bin/vbash
source /opt/vyatta/etc/functions/script-template
show

View File

@ -0,0 +1,9 @@
#!/bin/vbash
source /opt/vyatta/etc/functions/script-template
configure
load /home/vyos/config.boot
echo "Running commit && exit"
commit && exit || exit discard

7
homelab/vyos/op.sh Normal file
View File

@ -0,0 +1,7 @@
#!/bin/vbash
command="$@"
source /opt/vyatta/etc/functions/script-template
run $command

View File

@ -0,0 +1,8 @@
#!/bin/vbash
source /opt/vyatta/etc/functions/script-template
configure
save || exit discard

63
homelab/vyos/vyos.sh Executable file
View File

@ -0,0 +1,63 @@
#!/bin/bash
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
# Change this to the user, host, (and optionally port) of your VyOS target.
VYOS_TARGET="vyos@192.168.1.1"
# Returns saved config file
function get_config_saved () {
ssh $VYOS_TARGET 'cat /config/config.boot'
}
# Returns active config file
function get_config_active () {
scp -q ./get_config.sh $VYOS_TARGET:/home/vyos/get_config.sh
ssh $VYOS_TARGET 'chmod +x /home/vyos/get_config.sh; /home/vyos/get_config.sh; rm /home/vyos/get_config.sh'
}
# Push local ./config.boot to remote /home/vyos/config.boot
function post_config () {
scp -q ./config.boot :/home/vyos/config.boot
}
function load_config () {
scp -q ./load_config.sh $VYOS_TARGET:/home/vyos/load_config.sh
ssh $VYOS_TARGET 'chmod +x /home/vyos/load_config.sh; /home/vyos/load_config.sh; rm /home/vyos/load_config.sh'
}
function save_config () {
scp -q ./save_config.sh $VYOS_TARGET:/home/vyos/save_config.sh
ssh $VYOS_TARGET 'chmod +x /home/vyos/save_config.sh; /home/vyos/save_config.sh; rm /home/vyos/save_config.sh'
}
function get_dhcp_leases () {
scp -q ./op.sh $VYOS_TARGET:/home/vyos/op.sh
ssh $VYOS_TARGET 'chmod +x /home/vyos/op.sh; /home/vyos/op.sh "show dhcp server leases"; rm /home/vyos/op.sh'
}
function op () {
command="$@"
scp -q ./op.sh $VYOS_TARGET:/home/vyos/op.sh
ssh $VYOS_TARGET "chmod +x /home/vyos/op.sh; /home/vyos/op.sh $command; rm /home/vyos/op.sh"
}
function pull () {
get_config_saved > config.boot
}
function push () {
post_config
load_config
save_config
}
function edit () {
get_config_saved > $SCRIPT_DIR/config.boot
vim $SCRIPT_DIR/config.boot
push
}
"$@"
# Fair warning, this script is trash.

View File

@ -3,6 +3,8 @@ repositories:
url: https://charts.longhorn.io url: https://charts.longhorn.io
- name: kyverno - name: kyverno
url: https://kyverno.github.io/kyverno url: https://kyverno.github.io/kyverno
- name: metallb
url: https://metallb.github.io/metallb
--- ---
releases: releases:
# Distributed storage # Distributed storage
@ -15,3 +17,8 @@ releases:
namespace: kyverno namespace: kyverno
chart: kyverno/kyverno chart: kyverno/kyverno
version: 3.2.7 version: 3.2.7
- name: metallb
namespace: metallb-system
chart: metallb/metallb
version: 0.14.5

View File

@ -1,9 +1,62 @@
# Install git, sops, Docker, bash, # Install core packages, configure toolkits
let
nixpkgs = fetchTarball "https://github.com/NixOS/nixpkgs/tarball/nixos-24.05";
pkgs = import nixpkgs { config = {}; overlays = []; };
in
{ pkgs ? import <nixpkgs> {} }: pkgs.mkShell { pkgs.mkShellNoCC {
packages = with pkgs; [ packages = with pkgs; [
git sops docker ssh git sops docker
vim
tree btop tree btop
bat fd eza fzf bat fd eza fzf
ssh-to-age
]; ];
} shellHook = ''
# Configure env
USER="joey"
HOSTNAME="dungeon-master"
NAME="Joey Hafner"
EMAIL="joey@jafner.net"
# Configure SSH. Expects existing key at ~/.ssh/$USER@$HOSTNAME.key
SSH_KEY="~/.ssh/$USER@$HOSTNAME.key"
SSH_PUBKEY="~/.ssh/$USER@$HOSTNAME.pub"
alias ssh="ssh -i $SSH_KEY"
# Configure Git
# global
git config core.sshcommand "ssh -i $SSH_KEY"
git config user.name "$NAME"
git config user.email "$EMAIL"
git config user.signingkey "$SSH_PUBKEY"
git config init.defaultbranch "main"
git config gpg.format "ssh"
git config commit.gpgsign "true"
git config credential.helper "manager"
git config core.pager "delta"
git config delta.side-by-side "true"
git config interactive.difffilter "delta --color-only"
# repo
git config core.repositoryformatversion "0"
git config core.filemode "true"
git config core.bare "false"
git config core.logallrefupdates "true"
git config remote.origin.url "ssh://git@gitea.jafner.tools:2225/Jafner/Jafner.net.git"
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git config branch.main.remote "origin"
git config branch.main.merge "refs/heads/main"
git config submodule.sites/Jafner.dev/themes/hello-friend-ng.active "true"
git config submodule.sites/Jafner.dev/themes/hello-friend-ng.url "https://github.com/rhazdon/hugo-theme-hello-friend-ng.git"
# Configure sops
ssh-2-age -p -i $SSH_KEY $HOME/.age/key
git config filter.sops.smudge '.sops/decrypt-filter.sh %f'
git config filter.sops.clean '.sops/encrypt-filter.sh %f'
git config filter.sops.required "true"
'';
};