You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openserverless.apache.org by ms...@apache.org on 2024/07/07 10:40:16 UTC

(openserverless) 10/23: documentation, extra scripts, submodules

This is an automated email from the ASF dual-hosted git repository.

msciabarra pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/openserverless.git

commit e0642f0944b70de1ca1354114c901e218570d85f
Author: Michele Sciabarra <mi...@nuvolaris.io>
AuthorDate: Sat Jul 6 12:48:24 2024 +0200

    documentation, extra scripts, submodules
---
 .gitmodules                   |   4 +-
 README.md                     |  53 ++++++++++++++++---
 aliases                       | 117 ++++++++++++++++++++++++++++++++++++++++++
 cli/.envrc                    |   1 +
 cli/shell.nix                 |  10 ++++
 cloud-init.yaml               |  32 +++++++++---
 openserverless-documentation  |   1 -
 openserverless.code-workspace |  23 +++++++++
 operator/.envrc               |   1 +
 operator/shell.nix            |  10 ++++
 sync-branch.sh                |  26 ++++++++++
 update-tree.sh                |   4 ++
 website                       |   1 +
 13 files changed, 268 insertions(+), 15 deletions(-)

diff --git a/.gitmodules b/.gitmodules
index 0b16eb5..32b3f54 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,3 @@
-[submodule "openserverless-documentation"]
-	path = openserverless-documentation
+[submodule "website"]
+	path = website
 	url = ssh://git@github.com/nuvolaris/openserverless-documentation
diff --git a/README.md b/README.md
index 983811b..8553c32 100644
--- a/README.md
+++ b/README.md
@@ -30,20 +30,61 @@ The method we use to setup a VM in Linux and Mac is using [multipass](https://mu
 
 -  Otherwise follow [those instructions](https://multipass.run/install)
 
-Once you have `multipass` type the following 
+Once you have `multipass` type the following and wait util you see `status: done`
 
+```
+multipass launch -nopenserverless -c4 -d20g -m8g --cloud-init https://raw.githubusercontent.com/nuvolaris/openserverless/main/cloud-init.yaml
+multipass exec "openserverless" -- sudo cloud-init status --wait
+```
+
+## Setup SSH access for VSCode
+
+## Setup access to multipass in Mac and Linux
+
+To access the virtual machine from VSCode you need to setup a key and a configuration. Follow those steps:
+
+1. Check if you already have a key in `$HOME/.ssh/id_rsa`. If not, generate one with  `ssh-keygen -t rsa` (just press enter to confirm)
+
+2. copy the key in the virtual machine:
 
 ```
-multipass launch -nopenserverless -c4 -d20g -m8g --cloud-init cloud-init.yaml
+cat ~/.ssh/id_rsa.pub | multipass exec openserverless -- tee -a .ssh/authorized_keys
+```
 
+3. Create a configuration named `openserverless` to easily access it.
 
-multipass launch -nopenserverless -c4 -d20g -m8g --cloud-init https://raw.githubusercontent.com/nuvolaris/openserverless/main/cloud-init.yaml
+First type `multipass list`. You will see something like this:
 
-multipass exec "openserverless" -- sudo cloud-init status --wait
+````
+Name                    State             IPv4             Image
+openserverless          Running           10.6.73.253      Ubuntu 24.04 LTS
+                                          10.42.0.0
+                                          10.42.0.1
 ```
 
-#### Removal
-If you do now want to keep the vm anymore,   ensure you have backed up all your files. Then use the following commands to cleanup:
+Take note of the `<IP>` in the `openserverless line` (in this case `10.6.73.253` but yours can be different)
+
+Add to the file `~/ssh/config` the following
+
+```
+Host openserverless
+  Hostname  <IP>
+  User ubuntu
+  IdentityFile ~/.ssh/id_rsa
+```
+
+4. Check you have access without password:
+
+```
+ssh openserverless
+```
+
+### Cleanup
+
+
+If you do now want to keep the vm anymore,   esure you have backed up all your files. Then remove it in your cloud provider (check your cloud provider documentation). 
+
+For multipass, use the following commands to cleanup:
 
 ```
 multipass delete openserverless
diff --git a/aliases b/aliases
new file mode 100644
index 0000000..729b526
--- /dev/null
+++ b/aliases
@@ -0,0 +1,117 @@
+## NOTE! This script should be sourced, not executed. 
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+alias va="vi ~/openserverless/aliases ; source ~/openserverless/aliases"
+
+# prompt
+parse_git_branch() {
+     git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'
+}
+export PS1="[\h:\[\e[32m\]\w:\[\e[91m\]\$(parse_git_branch)\[\e[00m\]]\n$ "
+
+
+function secrets {
+    if ! which op
+    then echo "download the op cli from https://developer.1password.com/docs/cli/get-started/"
+         return
+    fi
+    if ! test -e .env.dist
+    then echo "no .env.dist listing the required secrets" 
+         return
+    fi
+    echo "reading .env.dist to generate .env and .env.src from 1password"
+    echo "I OVERWRITE the existing files, type your password or interrupt now"
+    eval $(op signin)
+    rm -f .env .env.src
+    cat .env.dist | awk '{
+        if(match($1, /^(.*)=(.*):/, a)) {
+            print a[1] " op://secrets/" a[2] "/" a[1]
+        }
+    }' | while read VAR SEC 
+    do 
+        VAL="$(op read $SEC)"
+        echo read $VAR 
+        echo "$VAR=$VAL" >>.env
+        echo "echo export and config $VAR" >>.env.src
+        echo "export $VAR=\"$VAL\"" >>.env.src
+        echo "nuv -config \"$VAR=$VAL\""  >>.env.src
+    done
+    source .env.src
+}
+
+export KNS="default"
+alias k='kubectl -n $KNS'
+alias kg='kubectl -n $KNS get'
+alias kgy='kubectl -n $KNS -o yaml get'
+alias kap='kubectl -n $KNS apply -f'
+alias kde='kubectl -n $KNS describe'
+alias kdel='kubectl -n $KNS delete'
+alias kin="kubectl cluster-info"
+
+function kex { 
+  ME=$1
+  CMD=${2:-bash} 
+  kubectl -n $KNS exec -ti $(kubectl -n $KNS get po | awk "/$ME/"'{print $1}') -- $CMD
+}
+
+function klo {
+  ME=$1
+  shift
+  kubectl -n $KNS logs $(kubectl -n $KNS get po | awk "/$ME/"'{print $1}') "$@"
+} 
+
+function kns {
+  if test -z "$1"
+  then kubectl get ns
+       echo "*** current: $KNS ***"
+  else export KNS="$1"
+       kubectl config set-context --current --namespace "$1"
+  fi
+}
+
+alias kwa="watch kubectl get po,deploy,sts,jobs,svc,ingress --no-headers"
+alias kwp="watch kubectl get po,deploy,sts,jobs --no-headers"
+alias kws="watch kubectl get svc,ingress --no-headers"
+alias kwc="watch kubectl get cm,secret --no-headers"
+
+alias kfin='kubectl patch -p {"metadata":{"finalizers":[]}} --type=merge' 
+
+alias ga="git add"
+alias gst="git status"
+alias glog="git log --pretty=oneline"
+alias gdf="git diff --name-only"
+alias gcm="git commit -m"
+alias gcam="git commit -a -m"
+alias gpom="git push origin main"
+
+function gsnap {
+  if test -z "$1"
+  then echo msg please
+  else x=""; for i in "$@" ; do x="$x$i " ; done
+       git commit -a -m "$x" 
+       git push 
+  fi
+}
+
+alias t=task
+alias tt='task -d ..'
+alias ttt='task -d ../..'
+alias dtag="date +%y%m%d%H"
+alias lenv='export $(xargs <.env)'
+alias nssh="ssh -oStrictHostKeyChecking=no"
diff --git a/cli/.envrc b/cli/.envrc
new file mode 100644
index 0000000..1d953f4
--- /dev/null
+++ b/cli/.envrc
@@ -0,0 +1 @@
+use nix
diff --git a/cli/shell.nix b/cli/shell.nix
new file mode 100644
index 0000000..34426f6
--- /dev/null
+++ b/cli/shell.nix
@@ -0,0 +1,10 @@
+let
+  nixpkgs = fetchTarball "https://github.com/NixOS/nixpkgs/tarball/nixos-23.11";
+  pkgs = import nixpkgs { config = {}; overlays = []; };
+in
+
+pkgs.mkShellNoCC {
+  packages = with pkgs; [
+   go
+  ];
+}
diff --git a/cloud-init.yaml b/cloud-init.yaml
index fc2fdd4..65c66d6 100644
--- a/cloud-init.yaml
+++ b/cloud-init.yaml
@@ -2,14 +2,34 @@
 apt_update: true
 apt_upgrade: true
 runcmd:
-  - >
+  - |
+    # install k3s, direnv, task
     curl -sfL https://get.k3s.io | sh -
-  - >
     curl -sfL https://direnv.net/install.sh | bash
+    snap install task --classic
+    echo "OPS_CLOUD_INIT_VER=1" >>/etc/environment
   - |
+    # set home and user
     USR="$(getent passwd 1000 | awk -F: '{print $1}')"
-    mkdir -p "/home/$USR/.kube"
-    cp /etc/rancher/k3s/k3s.yaml "/home/$USR/.kube/config"
-    chown -Rvf "$USR" "/home/$USR/.kube"
-    curl -L https://nixos.org/nix/install | sudo -u "$USR"  sh -s -- --daemon
+    HOME="/home/$USR"
+    # access k3s
+    mkdir -p "$HOME/.kube"
+    cp /etc/rancher/k3s/k3s.yaml "$HOME/.kube/config"
+    echo "export KUBECONFIG=/home/$USR/.kube/config" >>$HOME/.bashrc
+    # use direnv for autoinit 
+    echo 'eval "$(direnv hook bash)"' >>$HOME/.bashrc
+    # install nix
+    curl -L https://nixos.org/nix/install | sudo -u "$USR"  sh -s -- --no-daemon
+    # get openserverless sources
+    cd $HOME
+    git clone ssh://git@github.com/nuvolaris/openserverless --recurse-submodules
+    # add aliases
+    echo "source $HOME/openserverless/aliases" >>$HOME/.bashrc
+    # change owner to everything
+    chown -Rvf "$USR" "$HOME"
+    # allow direnv for submodules
+    sudo -u $USR direnv allow $HOME/openserverless/cli
+    sudo -u $USR direnv allow $HOME/openserverless/operator
+    sudo -u $USR direnv allow $HOME/openserverless/website
+     
  
\ No newline at end of file
diff --git a/openserverless-documentation b/openserverless-documentation
deleted file mode 160000
index e94376f..0000000
--- a/openserverless-documentation
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit e94376f1ae7fabf27d9f955f2db344750ccd48fe
diff --git a/openserverless.code-workspace b/openserverless.code-workspace
new file mode 100644
index 0000000..6a9a4f5
--- /dev/null
+++ b/openserverless.code-workspace
@@ -0,0 +1,23 @@
+{
+    "folders": [
+            {
+                "name": "operator",
+                "path": "operator"
+            },
+            {
+                "name": "cli",
+                "path": "cli"
+            },
+            {
+                "name": "website",
+                "path": "website"
+            }
+        ],
+    "settings": {
+            "workbench.colorCustomizations": {
+                    "activityBar.background": "#0F3506",
+                    "titleBar.activeBackground": "#154A09",
+                    "titleBar.activeForeground": "#F1FDEE"
+            }
+    }
+}
\ No newline at end of file
diff --git a/operator/.envrc b/operator/.envrc
new file mode 100644
index 0000000..1d953f4
--- /dev/null
+++ b/operator/.envrc
@@ -0,0 +1 @@
+use nix
diff --git a/operator/shell.nix b/operator/shell.nix
new file mode 100644
index 0000000..85c40b1
--- /dev/null
+++ b/operator/shell.nix
@@ -0,0 +1,10 @@
+let
+  nixpkgs = fetchTarball "https://github.com/NixOS/nixpkgs/tarball/nixos-23.11";
+  pkgs = import nixpkgs { config = {}; overlays = []; };
+in
+
+pkgs.mkShellNoCC {
+  packages = with pkgs; [
+   python3
+  ];
+}
diff --git a/sync-branch.sh b/sync-branch.sh
new file mode 100644
index 0000000..413f5ea
--- /dev/null
+++ b/sync-branch.sh
@@ -0,0 +1,26 @@
+#!/bin/bash
+me="$(realpath $0)"
+if test -z "$1"
+then
+    cd "$(dirname $0)"
+    git submodule --quiet foreach --recursive "$me \$toplevel/.gitmodules \$name" 
+    #>_submodules
+    #cat _submodules
+else 
+    #echo "*** $1 - $2 ***"
+    #pwd
+    BRANCH=$(git config -f "$1" "submodule.$2.branch")
+    if test -z "$BRANCH"
+    then echo "??? $(pwd) no branch: $2"
+    else 
+        CUR=$(git rev-parse --abbrev-ref HEAD)
+        if test "$CUR" = "HEAD"
+        then git checkout "origin/$BRANCH" -B "$BRANCH"
+        else 
+	     if test "$CUR" = "$BRANCH"
+	     then echo "ok: $2@$CUR "
+	     else echo "!!! $2: found: $CUR expected: $BRANCH"
+             fi 
+        fi
+    fi
+fi
\ No newline at end of file
diff --git a/update-tree.sh b/update-tree.sh
new file mode 100644
index 0000000..d6ab36b
--- /dev/null
+++ b/update-tree.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+git pull origin main --rebase
+git submodule update --recursive --remote
+bash sync-branch.sh
diff --git a/website b/website
new file mode 160000
index 0000000..fd07b29
--- /dev/null
+++ b/website
@@ -0,0 +1 @@
+Subproject commit fd07b29963c2bbf283118011a20ec8874a13aefd