Compare commits
	
		
			4 Commits
		
	
	
		
			pm-without
			...
			main
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 6322ebd30f | |||
| 7f83bc6c89 | |||
| 48af6dea2c | |||
| cad9406579 | 
| @ -9,4 +9,5 @@ CLEAN_CONTAINERS=false | ||||
| SYSTEM_PRUNE=false | ||||
| WEBAPP_IMAGE_PRUNE=true | ||||
| CHECK_INTERVAL=5 | ||||
| FQDN_POLICY="allow" | ||||
| FQDN_POLICY="allow" | ||||
| DEPLOYMENT_IP="k8s.cluster.ip.address" | ||||
| @ -44,5 +44,5 @@ COPY . /app/ | ||||
| WORKDIR /app/ | ||||
| RUN rm -rf node_modules && yarn && yarn clean && yarn build:release | ||||
| 
 | ||||
| COPY run.sh . | ||||
| CMD ["./run.sh"] | ||||
| COPY scripts . | ||||
| CMD ["./scripts/run.sh"] | ||||
|  | ||||
| @ -133,6 +133,9 @@ OPENPGP_PASSPHRASE="SECRET" | ||||
| OPENPGP_PRIVATE_KEY_FILE="/etc/config/webapp-deployer-api.my.domain.com.pgp.key" | ||||
| LACONIC_CONFIG="/etc/config/registry.yml" | ||||
| LRN=lrn://laconic/deployers/webapp-deployer-api.my.domain.com | ||||
| CHECK_INTERVAL=15 | ||||
| 
 | ||||
| AUCTION_CHECK_INTERVAL=10 | ||||
| HANDLE_AUCTION_REQUESTS=true | ||||
| AUCTION_BID_AMOUNT=50000 | ||||
| ``` | ||||
|  | ||||
| @ -8,6 +8,15 @@ services: | ||||
|     ports: | ||||
|       - 9555 | ||||
| 
 | ||||
|   cerc-webapp-auction-handler: | ||||
|     image: cerc/webapp-deployer-backend:local | ||||
|     restart: always | ||||
|     environment: | ||||
|       RUN_AUCTIONS_HANDLER: "true" | ||||
|     volumes: | ||||
|       - srv:/srv | ||||
|       - config:/etc/config:ro | ||||
| 
 | ||||
| volumes: | ||||
|   config: | ||||
|   srv: | ||||
|  | ||||
							
								
								
									
										47
									
								
								scripts/handle-auctions.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										47
									
								
								scripts/handle-auctions.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,47 @@ | ||||
| #!/bin/bash | ||||
| 
 | ||||
| if [ ! -f "/etc/config/laconic.yml" ]; then | ||||
|   echo "/etc/config/laconic.yml is required." | ||||
|   exit 2 | ||||
| fi | ||||
| 
 | ||||
| if [ "$HANDLE_AUCTION_REQUESTS" = "true" ]; then | ||||
|   if [ -z "$AUCTION_BID_AMOUNT" ]; then | ||||
|     echo "AUCTION_BID_AMOUNT is required when handling auction requsts." | ||||
|     exit 2 | ||||
|   fi | ||||
| else | ||||
|   echo "Not handling auction requests" | ||||
| 
 | ||||
|   # k8s integration only supports "always" restart policy, so wait indefinitely | ||||
|   # TODO: Exit container once restart policy is supported | ||||
|   tail -f /dev/null | ||||
| fi | ||||
| 
 | ||||
| STORAGE_ROOT="${STORAGE_ROOT:-/srv}" | ||||
| DEPLOYMENTS_DIR="${DEPLOYMENTS_DIR:-$STORAGE_ROOT/deployments}" | ||||
| REGISTRY_LOCK_FILE="${REGISTRY_LOCK_FILE:-/srv/registry_mutex_lock_file}" | ||||
| 
 | ||||
| if [[ ! -d "${DEPLOYMENTS_DIR}" ]]; then | ||||
|   mkdir -p "${DEPLOYMENTS_DIR}" | ||||
| fi | ||||
| 
 | ||||
| cd /app/ | ||||
| while true; do | ||||
|   echo "==============================================================" | ||||
| 
 | ||||
|   echo "############ DEPLOYMENT AUCTION #############" | ||||
|   laconic-so handle-deployment-auction \ | ||||
|     --laconic-config /etc/config/laconic.yml \ | ||||
|     --registry-lock-file "${REGISTRY_LOCK_FILE}" \ | ||||
|     --state-file "${DEPLOYMENTS_DIR}/autoauction.state" \ | ||||
|     --bid-amount ${AUCTION_BID_AMOUNT} | ||||
|   rc=$? | ||||
|   if [ $rc -eq 0 ]; then | ||||
|     echo "############ DEPLOYMENT AUCTION SUCCESS #############" | ||||
|   else | ||||
|     echo "############ DEPLOYMENT AUCTION FAILURE STATUS $rc #############" | ||||
|   fi | ||||
| 
 | ||||
|   sleep ${AUCTION_CHECK_INTERVAL:-10} | ||||
| done | ||||
| @ -1,5 +1,10 @@ | ||||
| #!/bin/bash | ||||
| 
 | ||||
| if [ "$RUN_AUCTIONS_HANDLER" = "true" ]; then | ||||
|   exec "./scripts/handle-auctions.sh" | ||||
|   exit | ||||
| fi | ||||
| 
 | ||||
| function is_privileged { | ||||
|   ip link add dummy0 type dummy >/dev/null | ||||
|   if [[ $? -eq 0 ]]; then | ||||
| @ -20,6 +25,11 @@ if [ -z "$DEPLOYMENT_RECORD_NAMESPACE" ]; then | ||||
|   exit 2 | ||||
| fi | ||||
| 
 | ||||
| if [ "$FQDN_POLICY" = "allow" ] && [ -z "$DEPLOYMENT_IP" ]; then | ||||
|   echo "DEPLOYMENT_IP is required with 'allow' FQDN_POLICY" | ||||
|   exit 2 | ||||
| fi | ||||
| 
 | ||||
| if [ -z "$IMAGE_REGISTRY" ]; then | ||||
|   echo "IMAGE_REGISTRY is required." | ||||
|   exit 2 | ||||
| @ -37,11 +47,6 @@ fi | ||||
| 
 | ||||
| AUCTION_OPTS="" | ||||
| if [ "$HANDLE_AUCTION_REQUESTS" = "true" ]; then | ||||
|   if [ -z "$AUCTION_BID_AMOUNT" ]; then | ||||
|     echo "AUCTION_BID_AMOUNT is required when handling auction requsts." | ||||
|     exit 2 | ||||
|   fi | ||||
| 
 | ||||
|   AUCTION_OPTS="--auction-requests" | ||||
| fi | ||||
| 
 | ||||
| @ -49,6 +54,7 @@ STORAGE_ROOT="${STORAGE_ROOT:-/srv}" | ||||
| DEPLOYMENTS_DIR="${DEPLOYMENTS_DIR:-$STORAGE_ROOT/deployments}" | ||||
| LOG_DIR="${LOG_DIR:-$STORAGE_ROOT/logs}" | ||||
| CONTAINERS_DIR="${CONTAINER_DIR:-$STORAGE_ROOT/containers}" | ||||
| REGISTRY_LOCK_FILE="${REGISTRY_LOCK_FILE:-/srv/registry_mutex_lock_file}" | ||||
| 
 | ||||
| if [[ ! -d "${DEPLOYMENTS_DIR}" ]]; then | ||||
|   mkdir -p "${DEPLOYMENTS_DIR}" | ||||
| @ -126,6 +132,7 @@ while true; do | ||||
|   echo "########### UNDEPLOY ############" | ||||
|   laconic-so undeploy-webapp-from-registry \ | ||||
|     --laconic-config /etc/config/laconic.yml \ | ||||
|     --registry-lock-file "${REGISTRY_LOCK_FILE}" \ | ||||
|     --deployment-parent-dir "${DEPLOYMENTS_DIR}" \ | ||||
|     --delete-names \ | ||||
|     --delete-volumes \ | ||||
| @ -133,7 +140,7 @@ while true; do | ||||
|     --include-tags "$INCLUDE_TAGS" \ | ||||
|     --exclude-tags "$EXCLUDE_TAGS" \ | ||||
|     --lrn "$LRN" \ | ||||
|     --min-required-payment ${MIN_REQUIRED_PAYMENT:-0} \ | ||||
|     --min-required-payment 0 \ | ||||
|     $EXTRA_UNDEPLOY_OPTS \ | ||||
|     $UPDATE_OPTS \ | ||||
|     --discover | ||||
| @ -148,6 +155,7 @@ while true; do | ||||
|   laconic-so deploy-webapp-from-registry \ | ||||
|     --kube-config /etc/config/kube.yml \ | ||||
|     --laconic-config /etc/config/laconic.yml \ | ||||
|     --registry-lock-file "${REGISTRY_LOCK_FILE}" \ | ||||
|     --image-registry ${IMAGE_REGISTRY} \ | ||||
|     --deployment-parent-dir "${DEPLOYMENTS_DIR}" \ | ||||
|     --dns-suffix ${DEPLOYMENT_DNS_SUFFIX} \ | ||||
| @ -157,11 +165,13 @@ while true; do | ||||
|     --include-tags "$INCLUDE_TAGS" \ | ||||
|     --exclude-tags "$EXCLUDE_TAGS" \ | ||||
|     --fqdn-policy "${FQDN_POLICY:-prohibit}" \ | ||||
|     --ip "${DEPLOYMENT_IP}" \ | ||||
|     --lrn "$LRN" \ | ||||
|     --min-required-payment ${MIN_REQUIRED_PAYMENT:-0} \ | ||||
|     --config-upload-dir "$UPLOAD_DIRECTORY" \ | ||||
|     --private-key-file "$OPENPGP_PRIVATE_KEY_FILE" \ | ||||
|     --private-key-passphrase "$OPENPGP_PASSPHRASE" \ | ||||
|     --recreate-on-deploy \ | ||||
|     $AUCTION_OPTS \ | ||||
|     $LOG_OPTS \ | ||||
|     $EXTRA_DEPLOY_OPTS \ | ||||
| @ -174,20 +184,6 @@ while true; do | ||||
|     echo "############ DEPLOY FAILURE STATUS $rc #############" | ||||
|   fi | ||||
| 
 | ||||
|   if [ "$HANDLE_AUCTION_REQUESTS" = "true" ]; then | ||||
|     echo "############ DEPLOYMENT AUCTION #############" | ||||
|     laconic-so handle-deployment-auction \ | ||||
|       --laconic-config /etc/config/laconic.yml \ | ||||
|       --state-file "${DEPLOYMENTS_DIR}/autoauction.state" \ | ||||
|       --bid-amount ${AUCTION_BID_AMOUNT} | ||||
|     rc=$? | ||||
|     if [ $rc -eq 0 ]; then | ||||
|       echo "############ DEPLOYMENT AUCTION SUCCESS #############" | ||||
|     else | ||||
|       echo "############ DEPLOYMENT AUCTION FAILURE STATUS $rc #############" | ||||
|     fi | ||||
|   fi | ||||
| 
 | ||||
|   # Cleanup any build leftovers | ||||
|   if [[ "${SYSTEM_PRUNE:-false}" == "true" ]]; then | ||||
|     docker system prune --all --force | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user