diff --git a/scripts/install.sh b/scripts/install.sh index ac75f31..b6bd76e 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -3,13 +3,13 @@ set -e # ControlTheory Agent Installation Script # Version -VERSION="v1.3.0" +VERSION="v1.4.0" # Supports both Docker and Kubernetes (Helm) installations # # Usage: -# ./install.sh -i --ds-token --cluster-token --config-endpoint --data-endpoint --cluster-name -e -# ./install.sh -i -t ds --ds-token --config-endpoint --data-endpoint --cluster-name -e -# ./install.sh -i -p docker --docker-token --config-endpoint --data-endpoint --cluster-name -e +# ./install.sh -i --ds-token --cluster-token --org-api-endpoint --cluster-name -e +# ./install.sh -i -t ds --ds-token --org-api-endpoint --cluster-name -e +# ./install.sh -i -p docker --docker-token --org-api-endpoint --cluster-name -e # ./install.sh -o uninstall # ./install.sh -o uninstall -p docker # ./install.sh -o status @@ -19,11 +19,11 @@ VERSION="v1.3.0" DS_ADMISSION_TOKEN="" CLUSTER_ADMISSION_TOKEN="" DOCKER_ADMISSION_TOKEN="" -CONFIG_ENDPOINT="" -DATA_ENDPOINT="" ORG_API_ENDPOINT="" -DOCKER_IMAGE="controltheory/supervisor" -DOCKER_IMAGE_TAG="v1.3.16.1" +DATA_ENDPOINT="" +DATA_TLS="" +DOCKER_IMAGE="controltheory/aigent" +DOCKER_IMAGE_TAG="v1.3.24" # Defaults OPERATION="install" @@ -35,6 +35,7 @@ NAMESPACE="${NAMESPACE:-controltheory}" ORG_ID="" CLUSTER_NAME="" DEPLOYMENT_ENV="" +SOURCE_ID="" HELM_VERSION="" HELM_DEVEL="false" @@ -56,11 +57,10 @@ General options: Options: -i, --org-id Organization identifier (required for install) - --config-endpoint Config endpoint URL (required for install) - --data-endpoint Data endpoint address (required for install) - --org-api-endpoint Org API endpoint URL (optional) + --org-api-endpoint Org API endpoint URL (required for install) --cluster-name Cluster/host name (required for k8s, optional for docker - defaults to 'docker') -e, --env Deployment environment (required for install) + --source-id Source ID to bind the agent to (required for install) Options for docker platform: --docker-token Docker admission token (required for install) @@ -74,11 +74,12 @@ Options for k8s platform: --kubeconfig Path to kubeconfig file (default: ~/.kube/config) -n, --namespace Kubernetes namespace (default: controltheory) --helm-version Helm chart version (default: latest stable) + --data-endpoint Data endpoint for local dev (e.g., butler.org.local:7761) Examples: - $0 -i okz30akqj --ds-token --cluster-token --config-endpoint --data-endpoint --cluster-name mycluster -e prod - $0 -i okz30akqj -t ds --ds-token --config-endpoint --data-endpoint --cluster-name mycluster -e dev - $0 -i okz30akqj -p docker --docker-token --config-endpoint --data-endpoint --cluster-name myhost -e prod + $0 -i okz30akqj --ds-token --cluster-token --org-api-endpoint --cluster-name mycluster -e prod + $0 -i okz30akqj -t ds --ds-token --org-api-endpoint --cluster-name mycluster -e dev + $0 -i okz30akqj -p docker --docker-token --org-api-endpoint --cluster-name myhost -e prod $0 -o uninstall $0 -o uninstall -p docker $0 -o status @@ -120,14 +121,6 @@ while [ $# -gt 0 ]; do CLUSTER_ADMISSION_TOKEN="$2" shift 2 ;; - --config-endpoint) - CONFIG_ENDPOINT="$2" - shift 2 - ;; - --data-endpoint) - DATA_ENDPOINT="$2" - shift 2 - ;; --org-api-endpoint) ORG_API_ENDPOINT="$2" shift 2 @@ -144,6 +137,18 @@ while [ $# -gt 0 ]; do CLUSTER_NAME="$2" shift 2 ;; + --source-id) + SOURCE_ID="$2" + shift 2 + ;; + --data-endpoint) + DATA_ENDPOINT="$2" + shift 2 + ;; + --data-tls) + DATA_TLS="$2" + shift 2 + ;; --kubeconfig) KUBECONFIG_FILE="$2" shift 2 @@ -200,12 +205,8 @@ validate_config() { echo "Error: -i/--org-id is required for install" usage fi - if [ -z "$CONFIG_ENDPOINT" ]; then - echo "Error: --config-endpoint is required for install" - usage - fi - if [ -z "$DATA_ENDPOINT" ]; then - echo "Error: --data-endpoint is required for install" + if [ -z "$ORG_API_ENDPOINT" ]; then + echo "Error: --org-api-endpoint is required for install" usage fi # cluster_name is required for k8s, optional for docker @@ -280,24 +281,24 @@ docker_install() { -v /var/run/docker.sock:/var/run/docker.sock \ -v /var/lib/docker/containers:/var/lib/docker/containers:ro \ -v /var/log:/var/log \ - -e CONTROLPLANE_ENDPOINT=$CONFIG_ENDPOINT \ -e ADMISSION_TOKEN=$DOCKER_ADMISSION_TOKEN \ - -e BUTLER_ENDPOINT=$DATA_ENDPOINT \ + -e CT_ORG_API_ENDPOINT=$ORG_API_ENDPOINT \ + -e CT_ORG_DNS_ID=$ORG_ID \ -e DEPLOYMENT_ENV=$DEPLOYMENT_ENV \ -e K8S_NODE_NAME=$HOST_NAME \ -e HOST_NAME=$HOST_NAME" - # Add org API settings if provided - if [ -n "$ORG_API_ENDPOINT" ]; then - DOCKER_CMD="$DOCKER_CMD -e CT_ORG_API_ENDPOINT=$ORG_API_ENDPOINT" - fi - # Default cluster name to "docker" for docker platform if [ -z "$CLUSTER_NAME" ]; then CLUSTER_NAME="docker" fi DOCKER_CMD="$DOCKER_CMD -e CLUSTER_NAME=$CLUSTER_NAME" + # Pass source ID when provided (source-backed install) + if [ -n "$SOURCE_ID" ]; then + DOCKER_CMD="$DOCKER_CMD -e SOURCE_ID=$SOURCE_ID" + fi + DOCKER_CMD="$DOCKER_CMD \ -p 4317:1757 \ -p 4318:1758 \ @@ -378,15 +379,22 @@ k8s_install_ds() { local HELM_ARGS=( --namespace="$NAMESPACE" --set daemonset.controlplane.admission_token="$DS_ADMISSION_TOKEN" - --set daemonset.controlplane.endpoint="$CONFIG_ENDPOINT" - --set daemonset.butler_endpoint="$DATA_ENDPOINT" + --set daemonset.org_api_endpoint="$ORG_API_ENDPOINT" --set daemonset.cluster_name="$CLUSTER_NAME" --set daemonset.deployment_env="$DEPLOYMENT_ENV" + --set daemonset.org_dns_id="$ORG_ID" ) - # Add org API settings if provided - if [ -n "$ORG_API_ENDPOINT" ]; then - HELM_ARGS+=(--set daemonset.org_api_endpoint="$ORG_API_ENDPOINT") + if [ -n "$DATA_ENDPOINT" ]; then + HELM_ARGS+=(--set "daemonset.data_endpoint=$DATA_ENDPOINT") + fi + if [ -n "$DATA_TLS" ]; then + HELM_ARGS+=(--set "daemonset.data_tls=$DATA_TLS") + fi + + # Pass source ID when provided (source-backed install) + if [ -n "$SOURCE_ID" ]; then + HELM_ARGS+=(--set daemonset.source_id="$SOURCE_ID") fi if [ "$HOST_PORT" = "true" ]; then @@ -410,15 +418,22 @@ k8s_install_cluster() { local HELM_ARGS=( --namespace="$NAMESPACE" --set deployment.controlplane.admission_token="$CLUSTER_ADMISSION_TOKEN" - --set deployment.controlplane.endpoint="$CONFIG_ENDPOINT" - --set deployment.butler_endpoint="$DATA_ENDPOINT" + --set deployment.org_api_endpoint="$ORG_API_ENDPOINT" --set deployment.cluster_name="$CLUSTER_NAME" --set deployment.deployment_env="$DEPLOYMENT_ENV" + --set deployment.org_dns_id="$ORG_ID" ) - # Add org API settings if provided - if [ -n "$ORG_API_ENDPOINT" ]; then - HELM_ARGS+=(--set deployment.org_api_endpoint="$ORG_API_ENDPOINT") + if [ -n "$DATA_ENDPOINT" ]; then + HELM_ARGS+=(--set "deployment.data_endpoint=$DATA_ENDPOINT") + fi + if [ -n "$DATA_TLS" ]; then + HELM_ARGS+=(--set "deployment.data_tls=$DATA_TLS") + fi + + # Pass source ID when provided (source-backed install) + if [ -n "$SOURCE_ID" ]; then + HELM_ARGS+=(--set deployment.source_id="$SOURCE_ID") fi if [ -n "$HELM_VERSION" ]; then