diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index d11a70e3b1d..3053bc7b6e6 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -5,8 +5,8 @@ COPY --from=docker:dind /usr/local/bin/docker /usr/local/bin/ RUN wget -q -O - https://packages.cloudfoundry.org/debian/cli.cloudfoundry.org.key | sudo apt-key add - \ && echo "deb https://packages.cloudfoundry.org/debian stable main" | sudo tee /etc/apt/sources.list.d/cloudfoundry-cli.list \ && apt-get update && export DEBIAN_FRONTEND=noninteractive \ - && apt-get install postgresql-client postgresql-client-common mariadb-client cf7-cli -y \ - && apt-get install -o Dpkg::Options::="--force-overwrite" cf8-cli -y \ + && apt-get install postgresql-client postgresql-client-common mariadb-client -y \ +# && apt-get install -o Dpkg::Options::="--force-overwrite" cf8-cli -y \ && gem install cf-uaac \ && wget $(curl -s https://api.github.com/repos/cloudfoundry/credhub-cli/releases/latest | \ jq -r '.assets[] | select(.name|match("credhub-linux.*")) | .browser_download_url') -O credhub.tar.gz \ diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml index 965c12ecb32..4c1f38ececb 100644 --- a/.devcontainer/docker-compose.yml +++ b/.devcontainer/docker-compose.yml @@ -1,9 +1,10 @@ -version: '3' - +version: "3.8" +name: "cloud_controller-dev" services: + # Dev Container codespace: - container_name: codespace + container_name: devcontainer build: context: ../ dockerfile: .devcontainer/Dockerfile @@ -13,55 +14,96 @@ services: - ..:/workspace:cached - /var/run/docker.sock:/var/run/docker.sock networks: - - codespace + - cloud_controller-dev-network cap_add: - SYS_PTRACE security_opt: - seccomp:unconfined + # Postgres postgres: container_name: postgres image: postgres:13 environment: POSTGRES_PASSWORD: supersecret + ports: + - "5432:5432" networks: - - codespace + - cloud_controller-dev-network + healthcheck: + test: ["CMD-SHELL", "pg_isready"] + interval: 10s + timeout: 5s + retries: 5 restart: unless-stopped - # Postgres + + # Mariadb mariadb: container_name: mariadb image: mariadb:10.3 environment: MARIADB_ROOT_PASSWORD: supersecret + ports: + - "3306:3306" + healthcheck: + test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"] + interval: 10s + timeout: 20s + retries: 3 networks: - - codespace + - cloud_controller-dev-network restart: unless-stopped + # UAA uaa: container_name: uaa build: context: library/uaa dockerfile: Dockerfile + ports: + - "8080:8080" + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8080/info"] + interval: 30s + timeout: 20s + retries: 3 networks: - - codespace + - cloud_controller-dev-network restart: unless-stopped + # Minio minio: container_name: minio image: minio/minio:latest - command: minio server --address :9001 /data + command: minio server --address ":9001" "/data" + ports: + - "9001:9001" + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:9001/minio/health/live"] + interval: 30s + timeout: 20s + retries: 3 networks: - - codespace + - cloud_controller-dev-network restart: unless-stopped + # CATS Configurable Service Broker catsbroker: container_name: catsbroker build: context: library/catsbroker dockerfile: Dockerfile + ports: + - "9292:9292" + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:9292/v2/catalog"] + interval: 30s + timeout: 20s + retries: 3 networks: - - codespace + - cloud_controller-dev-network restart: unless-stopped + # Nginx nginx: container_name: nginx @@ -70,10 +112,19 @@ services: dockerfile: Dockerfile args: ENABLED_MODULES: nginx_upload_module + ports: + - "80:80" + - "443:443" + healthcheck: + test: ["CMD-SHELL", "wget -O /dev/null http://localhost || exit 1"] + interval: 5s + timeout: 10s + retries: 3 networks: - - codespace + - cloud_controller-dev-network volumes: - ./library/nginx/conf:/usr/local/nginx/conf:ro - - ../tmp:/tmp:cached + - ../tmp:/tmp + networks: - codespace: \ No newline at end of file + cloud_controller-dev-network: \ No newline at end of file diff --git a/.devcontainer/library/idea/.idea/.gitignore b/.devcontainer/library/idea/.idea/.gitignore deleted file mode 100644 index 13566b81b01..00000000000 --- a/.devcontainer/library/idea/.idea/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Editor-based HTTP Client requests -/httpRequests/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml diff --git a/.devcontainer/library/idea/.idea/libraries/app_packager_zips.xml b/.devcontainer/library/idea/.idea/libraries/app_packager_zips.xml deleted file mode 100644 index 8670e122ad3..00000000000 --- a/.devcontainer/library/idea/.idea/libraries/app_packager_zips.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.devcontainer/library/idea/.idea/libraries/fixtures.xml b/.devcontainer/library/idea/.idea/libraries/fixtures.xml deleted file mode 100644 index 40dfe3482bc..00000000000 --- a/.devcontainer/library/idea/.idea/libraries/fixtures.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.devcontainer/library/idea/.idea/misc.xml b/.devcontainer/library/idea/.idea/misc.xml deleted file mode 100644 index bbd1dd68f56..00000000000 --- a/.devcontainer/library/idea/.idea/misc.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/.devcontainer/library/idea/.idea/modules.xml b/.devcontainer/library/idea/.idea/modules.xml deleted file mode 100644 index d4a84da4a81..00000000000 --- a/.devcontainer/library/idea/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.devcontainer/library/idea/.idea/vcs.xml b/.devcontainer/library/idea/.idea/vcs.xml deleted file mode 100644 index 35eb1ddfbbc..00000000000 --- a/.devcontainer/library/idea/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.devcontainer/library/idea/cloud_controller_ng.iml b/.devcontainer/library/idea/cloud_controller_ng.iml deleted file mode 100644 index dd01ba668a2..00000000000 --- a/.devcontainer/library/idea/cloud_controller_ng.iml +++ /dev/null @@ -1,455 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.devcontainer/library/nginx/Dockerfile b/.devcontainer/library/nginx/Dockerfile index 27fa2cfd6ca..a4bcb8be4bd 100644 --- a/.devcontainer/library/nginx/Dockerfile +++ b/.devcontainer/library/nginx/Dockerfile @@ -1,7 +1,7 @@ FROM alpine RUN apk --no-cache add build-base pcre-dev openssl-dev gzip curl jq zlib-dev \ - && NGINX_VERSION=$(curl -s https://hub.docker.com/v2/repositories/library/nginx/tags | jq -r ".results[] | select(.images | any(.digest==\"$(curl -s https://hub.docker.com/v2/repositories/library/nginx/tags | jq -r '.results[] | select(.name=="stable").images[] | select(.architecture=="amd64").digest')\")) | .name " | grep "[0-9]*\.[0-9]*\.[0-9]") \ + && NGINX_VERSION=$(curl -s https://nginx.org/en/download.html | grep -o -E -m 1 "nginx-[0-9]+\.[0-9]+\.[0-9]+" | cut -d'-' -f2 | head -n 1) \ && UPLOAD_VERSION=$(curl -s https://api.github.com/repos/fdintino/nginx-upload-module/tags | jq -r '.[0].name') \ && wget -P /tmp https://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz && tar -zxvf /tmp/nginx-${NGINX_VERSION}.tar.gz -C /tmp \ && wget -P /tmp https://github.com/fdintino/nginx-upload-module/archive/${UPLOAD_VERSION}.tar.gz && tar -zxvf /tmp/${UPLOAD_VERSION}.tar.gz -C /tmp \ diff --git a/.devcontainer/library/nginx/conf/nginx.conf b/.devcontainer/library/nginx/conf/nginx.conf index e97fc90d687..727a6e9cc92 100644 --- a/.devcontainer/library/nginx/conf/nginx.conf +++ b/.devcontainer/library/nginx/conf/nginx.conf @@ -39,7 +39,7 @@ http { ## upstream cloud_controller { - server unix:/tmp/cloud_controller.sock; + server host.docker.internal:3000; } include nginx_external_endpoints.conf; diff --git a/.devcontainer/library/onCreateCommand.sh b/.devcontainer/library/onCreateCommand.sh index ab7dc2641ad..8790fffc6a6 100755 --- a/.devcontainer/library/onCreateCommand.sh +++ b/.devcontainer/library/onCreateCommand.sh @@ -1,113 +1,11 @@ -#/bin/dash -set -eux +#/bin/bash +set -eu trap "pkill -P $$" EXIT # Setup IDEs -cp -a -f .devcontainer/library/vscode/.vscode/ . -cp -a -f .devcontainer/library/idea/.idea/ . -cp -a -f .devcontainer/library/idea/cloud_controller_ng.iml . +./setupIDEs.sh -# Install packages -bundle install & +# Setup DBs and CC Config File +./setupEnvironment.sh -# CC config -cp -a config/cloud_controller.yml tmp/cloud_controller.yml - -yq -i e '.login.url="http://uaa:8080"' tmp/cloud_controller.yml -yq -i e '.login.enabled=true' tmp/cloud_controller.yml - -yq -i e '.nginx.use_nginx=true' tmp/cloud_controller.yml -yq -i e '.nginx.instance_socket="/workspaces/cloud_controller_ng/tmp/cloud_controller.sock"' tmp/cloud_controller.yml - -yq -i e '.logging.file="/workspaces/cloud_controller_ng/tmp/cloud_controller.log"' tmp/cloud_controller.yml -yq -i e '.telemetry_log_path="/workspaces/cloud_controller_ng/tmp/cloud_controller_telemetry.log"' tmp/cloud_controller.yml -yq -i e '.directories.tmpdir="/workspaces/cloud_controller_ng/tmp"' tmp/cloud_controller.yml -yq -i e '.directories.diagnostics="/workspaces/cloud_controller_ng/tmp"' tmp/cloud_controller.yml -yq -i e '.security_event_logging.enabled=true' tmp/cloud_controller.yml -yq -i e '.security_event_logging.file="/workspaces/cloud_controller_ng/tmp/cef.log"' tmp/cloud_controller.yml - -yq -i e '.uaa.url="http://uaa:8080"' tmp/cloud_controller.yml -yq -i e '.uaa.internal_url="http://uaa:8080"' tmp/cloud_controller.yml -yq -i e '.uaa.resource_id="cloud_controller"' tmp/cloud_controller.yml -yq -i e 'del(.uaa.symmetric_secret)' tmp/cloud_controller.yml - -yq -i e '.resource_pool.fog_connection.provider="AWS"' tmp/cloud_controller.yml -yq -i e '.resource_pool.fog_connection.endpoint="http://minio:9001"' tmp/cloud_controller.yml -yq -i e '.resource_pool.fog_connection.aws_access_key_id="minioadmin"' tmp/cloud_controller.yml -yq -i e '.resource_pool.fog_connection.aws_secret_access_key="minioadmin"' tmp/cloud_controller.yml -yq -i e '.resource_pool.fog_connection.aws_signature_version=2' tmp/cloud_controller.yml -yq -i e '.resource_pool.fog_connection.path_style=true' tmp/cloud_controller.yml - -yq -i e '.packages.fog_connection.provider="AWS"' tmp/cloud_controller.yml -yq -i e '.packages.fog_connection.endpoint="http://minio:9001"' tmp/cloud_controller.yml -yq -i e '.packages.fog_connection.aws_access_key_id="minioadmin"' tmp/cloud_controller.yml -yq -i e '.packages.fog_connection.aws_secret_access_key="minioadmin"' tmp/cloud_controller.yml -yq -i e '.packages.fog_connection.aws_signature_version=2' tmp/cloud_controller.yml -yq -i e '.packages.fog_connection.path_style=true' tmp/cloud_controller.yml - -yq -i e '.droplets.fog_connection.provider="AWS"' tmp/cloud_controller.yml -yq -i e '.droplets.fog_connection.endpoint="http://minio:9001"' tmp/cloud_controller.yml -yq -i e '.droplets.fog_connection.aws_access_key_id="minioadmin"' tmp/cloud_controller.yml -yq -i e '.droplets.fog_connection.aws_secret_access_key="minioadmin"' tmp/cloud_controller.yml -yq -i e '.droplets.fog_connection.aws_signature_version=2' tmp/cloud_controller.yml -yq -i e '.droplets.fog_connection.path_style=true' tmp/cloud_controller.yml - -yq -i e '.buildpacks.fog_connection.provider="AWS"' tmp/cloud_controller.yml -yq -i e '.buildpacks.fog_connection.endpoint="http://minio:9001"' tmp/cloud_controller.yml -yq -i e '.buildpacks.fog_connection.aws_access_key_id="minioadmin"' tmp/cloud_controller.yml -yq -i e '.buildpacks.fog_connection.aws_secret_access_key="minioadmin"' tmp/cloud_controller.yml -yq -i e '.buildpacks.fog_connection.aws_signature_version=2' tmp/cloud_controller.yml -yq -i e '.buildpacks.fog_connection.path_style=true' tmp/cloud_controller.yml - -yq -i e '.cloud_controller_username_lookup_client_name="login"' tmp/cloud_controller.yml -yq -i e '.cloud_controller_username_lookup_client_secret="loginsecret"' tmp/cloud_controller.yml - -wait - -# Database setup -POSTGRES_CONNECTION_STRING="postgres://postgres:supersecret@postgres:5432/ccdb" -MYSQL_CONNECTION_STRING="mysql2://root:supersecret@mariadb:3306/ccdb" - -setupPostgres () { - export DB="postgres" - export DB_CONNECTION_STRING="${POSTGRES_CONNECTION_STRING}" - bundle exec rake db:recreate - bundle exec rake db:migrate - bundle exec rake db:seed -} - - -setupMariadb () { - export DB="mysql" - export DB_CONNECTION_STRING="${MYSQL_CONNECTION_STRING}" - bundle exec rake db:recreate - bundle exec rake db:migrate - bundle exec rake db:seed -} - -setupPostgres & -setupMariadb & - -setupUAA () { - timeout 300 bash -c 'while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' http://uaa:8080/info)" != "200" ]]; do sleep 5; done' || false - CF_UAA_ADMIN_CLIENT_SECRET="adminsecret" - NEW_ADMIN_USERNAME="ccadmin" - NEW_ADMIN_PASSWORD="secret" - uaac target http://uaa:8080 --skip-ssl-validation - uaac token client get admin -s ${CF_UAA_ADMIN_CLIENT_SECRET} - uaac user add ${NEW_ADMIN_USERNAME} -p ${NEW_ADMIN_PASSWORD} --emails fake@example.com - uaac member add cloud_controller.admin ${NEW_ADMIN_USERNAME} - uaac member add uaa.admin ${NEW_ADMIN_USERNAME} - uaac member add scim.read ${NEW_ADMIN_USERNAME} - uaac member add scim.write ${NEW_ADMIN_USERNAME} - - # Dasboard User - uaac user add cc-service-dashboards -p some-sekret --emails fake2@example.com - uaac member add cloud_controller_service_permissions.read cc-service-dashboards - uaac member add openid cc-service-dashboards -} - -setupUAA & - -wait trap "" EXIT \ No newline at end of file diff --git a/.devcontainer/library/setupDevelopmentEnvironment.sh b/.devcontainer/library/setupDevelopmentEnvironment.sh new file mode 100755 index 00000000000..8ceb29e4fcb --- /dev/null +++ b/.devcontainer/library/setupDevelopmentEnvironment.sh @@ -0,0 +1,155 @@ +#/bin/bash +set -eu +trap "pkill -P $$" EXIT + +# Database setup +POSTGRES_CONNECTION_STRING="postgres://postgres:supersecret@localhost:5432/ccdb" +MYSQL_CONNECTION_STRING="mysql2://root:supersecret@127.0.0.1:3306/ccdb" + +setupPostgres () { + export DB="postgres" + export DB_CONNECTION_STRING="${POSTGRES_CONNECTION_STRING}" + bundle exec rake db:recreate + bundle exec rake db:migrate + bundle exec rake db:seed +} + + +setupMariadb () { + export DB="mysql" + export DB_CONNECTION_STRING="${MYSQL_CONNECTION_STRING}" + bundle exec rake db:recreate + bundle exec rake db:migrate + bundle exec rake db:seed +} + +setupUAA () { + timeout 300 bash -c 'while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' http://localhost:8080/info)" != "200" ]]; do sleep 5; done' || false + CF_UAA_ADMIN_CLIENT_SECRET="adminsecret" + NEW_ADMIN_USERNAME="ccadmin" + NEW_ADMIN_PASSWORD="secret" + uaac target http://localhost:8080 --skip-ssl-validation + uaac token client get admin -s ${CF_UAA_ADMIN_CLIENT_SECRET} + uaac user add ${NEW_ADMIN_USERNAME} -p ${NEW_ADMIN_PASSWORD} --emails fake@example.com + uaac member add cloud_controller.admin ${NEW_ADMIN_USERNAME} + uaac member add uaa.admin ${NEW_ADMIN_USERNAME} + uaac member add scim.read ${NEW_ADMIN_USERNAME} + uaac member add scim.write ${NEW_ADMIN_USERNAME} + + # Dasboard User + uaac user add cc-service-dashboards -p some-sekret --emails fake2@example.com + uaac member add cloud_controller_service_permissions.read cc-service-dashboards + uaac member add openid cc-service-dashboards +} + +# CC config +cp -a config/cloud_controller.yml tmp/cloud_controller.yml + +#yq -i e '.login.url="http://uaa:8080"' tmp/cloud_controller.yml +#yq -i e '.login.enabled=true' tmp/cloud_controller.yml +# +#yq -i e '.nginx.use_nginx=true' tmp/cloud_controller.yml +#yq -i e '.nginx.instance_socket=""' tmp/cloud_controller.yml +# +#yq -i e '.logging.file="tmp/cloud_controller.log"' tmp/cloud_controller.yml +#yq -i e '.telemetry_log_path="tmp/cloud_controller_telemetry.log"' tmp/cloud_controller.yml +#yq -i e '.directories.tmpdir="tmp"' tmp/cloud_controller.yml +#yq -i e '.directories.diagnostics="tmp"' tmp/cloud_controller.yml +#yq -i e '.security_event_logging.enabled=true' tmp/cloud_controller.yml +#yq -i e '.security_event_logging.file="tmp/cef.log"' tmp/cloud_controller.yml +# +#yq -i e '.uaa.url="http://uaa:8080"' tmp/cloud_controller.yml +#yq -i e '.uaa.internal_url="http://uaa:8080"' tmp/cloud_controller.yml +#yq -i e '.uaa.resource_id="cloud_controller"' tmp/cloud_controller.yml +#yq -i e 'del(.uaa.symmetric_secret)' tmp/cloud_controller.yml +# +#yq -i e '.resource_pool.fog_connection.provider="AWS"' tmp/cloud_controller.yml +#yq -i e '.resource_pool.fog_connection.endpoint="http://minio:9001"' tmp/cloud_controller.yml +#yq -i e '.resource_pool.fog_connection.aws_access_key_id="minioadmin"' tmp/cloud_controller.yml +#yq -i e '.resource_pool.fog_connection.aws_secret_access_key="minioadmin"' tmp/cloud_controller.yml +#yq -i e '.resource_pool.fog_connection.aws_signature_version=2' tmp/cloud_controller.yml +#yq -i e '.resource_pool.fog_connection.path_style=true' tmp/cloud_controller.yml +# +#yq -i e '.packages.fog_connection.provider="AWS"' tmp/cloud_controller.yml +#yq -i e '.packages.fog_connection.endpoint="http://minio:9001"' tmp/cloud_controller.yml +#yq -i e '.packages.fog_connection.aws_access_key_id="minioadmin"' tmp/cloud_controller.yml +#yq -i e '.packages.fog_connection.aws_secret_access_key="minioadmin"' tmp/cloud_controller.yml +#yq -i e '.packages.fog_connection.aws_signature_version=2' tmp/cloud_controller.yml +#yq -i e '.packages.fog_connection.path_style=true' tmp/cloud_controller.yml +# +#yq -i e '.droplets.fog_connection.provider="AWS"' tmp/cloud_controller.yml +#yq -i e '.droplets.fog_connection.endpoint="http://minio:9001"' tmp/cloud_controller.yml +#yq -i e '.droplets.fog_connection.aws_access_key_id="minioadmin"' tmp/cloud_controller.yml +#yq -i e '.droplets.fog_connection.aws_secret_access_key="minioadmin"' tmp/cloud_controller.yml +#yq -i e '.droplets.fog_connection.aws_signature_version=2' tmp/cloud_controller.yml +#yq -i e '.droplets.fog_connection.path_style=true' tmp/cloud_controller.yml +# +#yq -i e '.buildpacks.fog_connection.provider="AWS"' tmp/cloud_controller.yml +#yq -i e '.buildpacks.fog_connection.endpoint="http://minio:9001"' tmp/cloud_controller.yml +#yq -i e '.buildpacks.fog_connection.aws_access_key_id="minioadmin"' tmp/cloud_controller.yml +#yq -i e '.buildpacks.fog_connection.aws_secret_access_key="minioadmin"' tmp/cloud_controller.yml +#yq -i e '.buildpacks.fog_connection.aws_signature_version=2' tmp/cloud_controller.yml +#yq -i e '.buildpacks.fog_connection.path_style=true' tmp/cloud_controller.yml +# +#yq -i e '.cloud_controller_username_lookup_client_name="login"' tmp/cloud_controller.yml +#yq -i e '.cloud_controller_username_lookup_client_secret="loginsecret"' tmp/cloud_controller.yml + + +yq -i e '.login.url="http://localhost:8080"' tmp/cloud_controller.yml +yq -i e '.login.enabled=true' tmp/cloud_controller.yml + +yq -i e '.nginx.use_nginx=true' tmp/cloud_controller.yml +yq -i e '.nginx.instance_socket=""' tmp/cloud_controller.yml + +yq -i e '.logging.file="tmp/cloud_controller.log"' tmp/cloud_controller.yml +yq -i e '.telemetry_log_path="tmp/cloud_controller_telemetry.log"' tmp/cloud_controller.yml +yq -i e '.directories.tmpdir="tmp"' tmp/cloud_controller.yml +yq -i e '.directories.diagnostics="tmp"' tmp/cloud_controller.yml +yq -i e '.security_event_logging.enabled=true' tmp/cloud_controller.yml +yq -i e '.security_event_logging.file="tmp/cef.log"' tmp/cloud_controller.yml + +yq -i e '.uaa.url="http://localhost:8080"' tmp/cloud_controller.yml +yq -i e '.uaa.internal_url="http://localhost:8080"' tmp/cloud_controller.yml +yq -i e '.uaa.resource_id="cloud_controller"' tmp/cloud_controller.yml +yq -i e 'del(.uaa.symmetric_secret)' tmp/cloud_controller.yml + +yq -i e '.resource_pool.fog_connection.provider="AWS"' tmp/cloud_controller.yml +yq -i e '.resource_pool.fog_connection.endpoint="http://localhost:9001"' tmp/cloud_controller.yml +yq -i e '.resource_pool.fog_connection.aws_access_key_id="minioadmin"' tmp/cloud_controller.yml +yq -i e '.resource_pool.fog_connection.aws_secret_access_key="minioadmin"' tmp/cloud_controller.yml +yq -i e '.resource_pool.fog_connection.aws_signature_version=2' tmp/cloud_controller.yml +yq -i e '.resource_pool.fog_connection.path_style=true' tmp/cloud_controller.yml + +yq -i e '.packages.fog_connection.provider="AWS"' tmp/cloud_controller.yml +yq -i e '.packages.fog_connection.endpoint="http://localhost:9001"' tmp/cloud_controller.yml +yq -i e '.packages.fog_connection.aws_access_key_id="minioadmin"' tmp/cloud_controller.yml +yq -i e '.packages.fog_connection.aws_secret_access_key="minioadmin"' tmp/cloud_controller.yml +yq -i e '.packages.fog_connection.aws_signature_version=2' tmp/cloud_controller.yml +yq -i e '.packages.fog_connection.path_style=true' tmp/cloud_controller.yml + +yq -i e '.droplets.fog_connection.provider="AWS"' tmp/cloud_controller.yml +yq -i e '.droplets.fog_connection.endpoint="http://localhost:9001"' tmp/cloud_controller.yml +yq -i e '.droplets.fog_connection.aws_access_key_id="minioadmin"' tmp/cloud_controller.yml +yq -i e '.droplets.fog_connection.aws_secret_access_key="minioadmin"' tmp/cloud_controller.yml +yq -i e '.droplets.fog_connection.aws_signature_version=2' tmp/cloud_controller.yml +yq -i e '.droplets.fog_connection.path_style=true' tmp/cloud_controller.yml + +yq -i e '.buildpacks.fog_connection.provider="AWS"' tmp/cloud_controller.yml +yq -i e '.buildpacks.fog_connection.endpoint="http://localhost:9001"' tmp/cloud_controller.yml +yq -i e '.buildpacks.fog_connection.aws_access_key_id="minioadmin"' tmp/cloud_controller.yml +yq -i e '.buildpacks.fog_connection.aws_secret_access_key="minioadmin"' tmp/cloud_controller.yml +yq -i e '.buildpacks.fog_connection.aws_signature_version=2' tmp/cloud_controller.yml +yq -i e '.buildpacks.fog_connection.path_style=true' tmp/cloud_controller.yml + +yq -i e '.cloud_controller_username_lookup_client_name="login"' tmp/cloud_controller.yml +yq -i e '.cloud_controller_username_lookup_client_secret="loginsecret"' tmp/cloud_controller.yml + +setupPostgres +setupMariadb +setupUAA + +# Install packages +bundle install + + +trap "" EXIT \ No newline at end of file diff --git a/.devcontainer/library/setupIDEs.sh b/.devcontainer/library/setupIDEs.sh new file mode 100755 index 00000000000..c45164ecc33 --- /dev/null +++ b/.devcontainer/library/setupIDEs.sh @@ -0,0 +1,9 @@ +#/bin/bash +set -eu +trap "pkill -P $$" EXIT + +# Setup IDEs +cp -a -f .devcontainer/library/vscode/.vscode . +cp -a -f .devcontainer/library/idea/.idea . + +trap "" EXIT \ No newline at end of file diff --git a/devenv.sh b/devenv.sh new file mode 100755 index 00000000000..72a2834515c --- /dev/null +++ b/devenv.sh @@ -0,0 +1,105 @@ +#/bin/bash +set -eu +trap "pkill -P $$" EXIT + +# Prerequisits +# PSQL +# MYSQL +# RUBY(RBENV) +# RUBY BUNDLER +# UAAC (gem install cf-uaac) +# Docker +# Docker-Compose + +# Help text +help_command() { + echo "Usage: $0 COMMAND" + echo "" + echo "Commands:" + echo " create - Setting up the development environment(containers)" + echo " start - Starting the development environment(containers), a existing fully set up set of containers must exist." + echo " stop - Stopping but not removing the development environment(containers)" + echo " destroy - Stopping and removing the development environment(containers)" + echo " runconfigs - Copies matching run configurations for intellij and vscode into the respective folders" + echo " help - Print this help text" +} + + +# Start Docker Containers +create_command(){ + pushd .devcontainer + docker-compose -p "" up -d + popd + + ./.devcontainer/library/setupDevelopmentEnvironment.sh +} + +# Start Docker Containers +start_command(){ + pushd .devcontainer + docker-compose -p "" start + popd +} + +# Stop Docker Containers +stop_command(){ + pushd .devcontainer + docker-compose -p "" stop + popd +} + +# Stop Docker Containers +destroy_command(){ + pushd .devcontainer + docker-compose -p "" down + popd +} + +# Call Setup IDEs Script +runconfigs_command(){ + ./.devcontainer/library/setupIDEs.sh +} + +# Error handler +handle_error() { + echo "Error: Invalid command" + help_command + exit 1 +} + +# Handle no command specified +if [ $# -eq 0 ]; then + handle_error +fi + +# Parse commands +case "$1" in + create) + echo "Setting up the development environment(containers)" + create_command + ;; + start) + echo "Starting the development environment(containers), a existing fully set up set of containers must exist." + start_command + ;; + stop) + echo "Stopping but not removing the development environment(containers)" + stop_command + ;; + destroy) + echo "Stopping and removing the development environment(containers)" + destroy_command + ;; + runconfigs) + echo "Copying matching run configurations for intellij and vscode into the respective folders" + runconfigs_command + ;; + help) + help_command + ;; + *) + handle_error + ;; +esac + +trap "" EXIT \ No newline at end of file