mirror of
https://github.com/kingomarnajjar/desktop-environment.git
synced 2026-07-25 22:27:20 +10:00
env
This commit is contained in:
parent
be180ac1da
commit
4ab82445e6
12 changed files with 116 additions and 38 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -1,2 +1,2 @@
|
|||
credentials.json
|
||||
google.json
|
||||
logs/
|
||||
|
|
|
|||
|
|
@ -4,11 +4,11 @@ REPO_ROOT=$(dirname $(readlink -f $0))/..
|
|||
export $($REPO_ROOT/docker/scripts/environment.sh)
|
||||
|
||||
# Extract credentials from environment
|
||||
if [ ! -z "$DESKTOP_ENVIRONMENT_CREDENTIALS" ]; then
|
||||
if [ ! -z "$DESKTOP_ENVIRONMENT_GOOGLE_CREDENTIALS" ]; then
|
||||
docker run \
|
||||
--env DESKTOP_ENVIRONMENT_CREDENTIALS \
|
||||
--env DESKTOP_ENVIRONMENT_GOOGLE_CREDENTIALS \
|
||||
--interactive \
|
||||
--rm \
|
||||
--volume DESKTOP_ENVIRONMENT_DOCKER_REPOSITORY:$DESKTOP_ENVIRONMENT_DOCKER_REPOSITORY \
|
||||
alpine:latest ash -c "echo '$DESKTOP_ENVIRONMENT_CREDENTIALS' > $DESKTOP_ENVIRONMENT_DOCKER_REPOSITORY/credentials/credentials.json"
|
||||
alpine:latest ash -c "echo '$DESKTOP_ENVIRONMENT_GOOGLE_CREDENTIALS' > $DESKTOP_ENVIRONMENT_DOCKER_REPOSITORY/credentials/google.json"
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -1,6 +1,23 @@
|
|||
FROM stemn/development-environment:latest
|
||||
USER root
|
||||
|
||||
# System environment configuration
|
||||
ENV S6_LOGGING 1
|
||||
|
||||
# Container user home directories
|
||||
ENV BASE_USER stemn
|
||||
ENV USER jackson
|
||||
ENV HOME /$USER/home
|
||||
|
||||
# User environment configuration
|
||||
ARG STEMN_GIT_EMAIL
|
||||
ARG STEMN_GIT_NAME
|
||||
ENV STEMN_GIT_EMAIL $STEMN_GIT_EMAIL
|
||||
ENV STEMN_GIT_NAME $STEMN_GIT_NAME
|
||||
|
||||
# Remove base user files
|
||||
RUN rm -rf /$BASE_USER
|
||||
|
||||
# Install user utilities
|
||||
RUN apt-get update -qq && \
|
||||
apt-get install -qq --fix-broken --fix-missing \
|
||||
|
|
@ -9,6 +26,7 @@ RUN apt-get update -qq && \
|
|||
arandr \
|
||||
feh \
|
||||
numlockx \
|
||||
ruby-dev \
|
||||
software-properties-common \
|
||||
vcsh \
|
||||
vlc \
|
||||
|
|
@ -69,30 +87,17 @@ RUN apt-get update -qq && apt-get install -qq \
|
|||
wget -O /etc/fonts/local.conf -nv https://raw.githubusercontent.com/jessfraz/dockerfiles/master/chrome/stable/local.conf && \
|
||||
groupadd --system chrome
|
||||
|
||||
# Install gem utilities
|
||||
RUN gem install \
|
||||
travis
|
||||
|
||||
# Install yarn utilities
|
||||
RUN yarn global add \
|
||||
http-server
|
||||
|
||||
# System environment configuration
|
||||
ENV S6_LOGGING 1
|
||||
|
||||
# Container user home directories
|
||||
ENV BASE_USER stemn
|
||||
ENV USER jackson
|
||||
ENV HOME /$USER/home
|
||||
|
||||
# Remove base user files
|
||||
RUN rm -rf /$BASE_USER
|
||||
|
||||
# Make the user's workspace directory
|
||||
# Make the new user's home directory
|
||||
RUN mkdir -p $HOME
|
||||
|
||||
# User environment configuration
|
||||
ENV STEMN_GIT_EMAIL "jackson@stemn.com"
|
||||
ENV STEMN_GIT_NAME "Jackson Delahunt"
|
||||
ENV TMUX $HOME/.tmux.sock
|
||||
RUN touch $TMUX
|
||||
|
||||
# Rename the first non-root group to jackson
|
||||
RUN groupmod \
|
||||
--new-name \
|
||||
|
|
|
|||
|
|
@ -6,5 +6,7 @@ export $($REPO_ROOT/docker/scripts/environment.sh)
|
|||
docker build \
|
||||
--build-arg DESKTOP_CONTAINER_BUILD_DATE=$(date +%s) \
|
||||
--build-arg DESKTOP_CONTAINER_GIT_SHA=$(git --git-dir $REPO_ROOT/.git rev-parse HEAD | cut -b 1-7) \
|
||||
--build-arg DESKTOP_ENVIRONMENT_GIT_EMAIL \
|
||||
--build-arg DESKTOP_ENVIRONMENT_GIT_NAME \
|
||||
--tag $DESKTOP_ENVIRONMENT_REGISTRY/$DESKTOP_ENVIRONMENT_CONTAINER:$DESKTOP_ENVIRONMENT_BRANCH \
|
||||
$REPO_ROOT/docker
|
||||
|
|
|
|||
|
|
@ -1,25 +1,29 @@
|
|||
REPO_ROOT=$(dirname $(readlink -f $0))/../..
|
||||
|
||||
# Desktop environment user configuration
|
||||
DESKTOP_ENVIRONMENT_CONTAINER=desktop-environment
|
||||
DESKTOP_ENVIRONMENT_DOMAIN_NAME=cloud.jacksondelahunt.com
|
||||
# Desktop environment repository information
|
||||
DESKTOP_ENVIRONMENT_REGISTRY=sabrehagen
|
||||
DESKTOP_ENVIRONMENT_USER=jackson
|
||||
DESKTOP_ENVIRONMENT_USER_HOME=/home/$DESKTOP_ENVIRONMENT_USER
|
||||
DESKTOP_ENVIRONMENT_USER_ID=1000
|
||||
DESKTOP_ENVIRONMENT_CONTAINER=desktop-environment
|
||||
echo DESKTOP_ENVIRONMENT_BRANCH=${TRAVIS_BRANCH-$(git --git-dir $REPO_ROOT/.git rev-parse --abbrev-ref HEAD)}
|
||||
echo DESKTOP_ENVIRONMENT_CONTAINER=$DESKTOP_ENVIRONMENT_CONTAINER
|
||||
echo DESKTOP_ENVIRONMENT_DOMAIN_NAME=$DESKTOP_ENVIRONMENT_DOMAIN_NAME
|
||||
echo DESKTOP_ENVIRONMENT_REGISTRY=$DESKTOP_ENVIRONMENT_REGISTRY
|
||||
|
||||
# Desktop environment user configuration
|
||||
DESKTOP_ENVIRONMENT_USER=jackson
|
||||
echo DESKTOP_ENVIRONMENT_GIT_EMAIL=jackson@stemn.com
|
||||
echo DESKTOP_ENVIRONMENT_GIT_NAME="Jackson Delahunt"
|
||||
echo DESKTOP_ENVIRONMENT_USER=$DESKTOP_ENVIRONMENT_USER
|
||||
echo DESKTOP_ENVIRONMENT_USER_HOME=$DESKTOP_ENVIRONMENT_USER_HOME
|
||||
echo DESKTOP_ENVIRONMENT_USER_ID=$DESKTOP_ENVIRONMENT_USER_ID
|
||||
echo DESKTOP_ENVIRONMENT_USER_ID=1000
|
||||
|
||||
# Desktop environment cloudflare configuration
|
||||
echo DESKTOP_ENVIRONMENT_CLOUDFLARE_DOMAIN=jacksondelahunt.com
|
||||
echo DESKTOP_ENVIRONMENT_CLOUDFLARE_EMAIL=jackson@jacksondelahunt.com
|
||||
|
||||
# Desktop environment docker configuration
|
||||
echo DESKTOP_ENVIRONMENT_DOCKER_NETWORK=$DESKTOP_ENVIRONMENT_REGISTRY-$DESKTOP_ENVIRONMENT_CONTAINER
|
||||
echo DESKTOP_ENVIRONMENT_DOCKER_REPOSITORY=/$DESKTOP_ENVIRONMENT_CONTAINER
|
||||
|
||||
# Desktop environment repository information
|
||||
echo DESKTOP_ENVIRONMENT_BRANCH=${TRAVIS_BRANCH-$(git --git-dir $REPO_ROOT/.git rev-parse --abbrev-ref HEAD)}
|
||||
DESKTOP_ENVIRONMENT_USER_HOME=/home/$DESKTOP_ENVIRONMENT_USER
|
||||
echo DESKTOP_ENVIRONMENT_USER_HOME=$DESKTOP_ENVIRONMENT_USER_HOME
|
||||
|
||||
# Desktop environment application cache volumes
|
||||
echo DESKTOP_ENVIRONMENT_CACHE_CERTIFICATES=$DESKTOP_ENVIRONMENT_USER_HOME/.pki
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ docker run \
|
|||
--label traefik.backend=$XPRA_SERVER_CONTAINER \
|
||||
--label traefik.enable=true \
|
||||
--label traefik.frontend.entryPoints=https \
|
||||
--label traefik.frontend.rule=Host:$DESKTOP_ENVIRONMENT_DOMAIN_NAME \
|
||||
--label traefik.frontend.rule=Host:$DESKTOP_ENVIRONMENT_CLOUDFLARE_DOMAIN \
|
||||
--label traefik.port=$XPRA_WEB_PORT \
|
||||
--name $XPRA_SERVER_CONTAINER \
|
||||
--network $DESKTOP_ENVIRONMENT_DOCKER_NETWORK \
|
||||
|
|
|
|||
20
packer/build.sh
Normal file
20
packer/build.sh
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
REPO_ROOT=$(dirname $(realpath $0))/..
|
||||
|
||||
# Export desktop environment shell configuration
|
||||
export $($REPO_ROOT/docker/scripts/environment.sh)
|
||||
|
||||
# Authenticate with cloud service provider
|
||||
$REPO_ROOT/credentials/authenticate.sh
|
||||
|
||||
docker run \
|
||||
--env DESKTOP_ENVIRONMENT_CONTAINER \
|
||||
--env DESKTOP_ENVIRONMENT_REGISTRY \
|
||||
--env GOOGLE_APPLICATION_CREDENTIALS=$DESKTOP_ENVIRONMENT_HOST_REPOSITORY/credentials/google.json \
|
||||
--interactive \
|
||||
--rm \
|
||||
--tty \
|
||||
--volume $DESKTOP_ENVIRONMENT_HOST_REPOSITORY:$DESKTOP_ENVIRONMENT_HOST_REPOSITORY \
|
||||
--workdir $DESKTOP_ENVIRONMENT_HOST_REPOSITORY \
|
||||
hashicorp/packer:light build \
|
||||
-force \
|
||||
desktop-environment.json
|
||||
|
|
@ -10,13 +10,13 @@ $REPO_ROOT/docker/scripts/clone.sh
|
|||
$REPO_ROOT/credentials/authenticate.sh
|
||||
|
||||
docker run \
|
||||
--env GOOGLE_APPLICATION_CREDENTIALS=$DESKTOP_ENVIRONMENT_DOCKER_REPOSITORY/credentials/credentials.json \
|
||||
--env DESKTOP_ENVIRONMENT_CONTAINER \
|
||||
--env DESKTOP_ENVIRONMENT_REGISTRY \
|
||||
--env GOOGLE_APPLICATION_CREDENTIALS=$DESKTOP_ENVIRONMENT_DOCKER_REPOSITORY/credentials/google.json \
|
||||
--interactive \
|
||||
--rm \
|
||||
--tty \
|
||||
--volume DESKTOP_ENVIRONMENT_DOCKER_REPOSITORY:$DESKTOP_ENVIRONMENT_DOCKER_REPOSITORY:ro \
|
||||
hashicorp/packer:light build \
|
||||
-force \
|
||||
-var DESKTOP_ENVIRONMENT_CONTAINER=$DESKTOP_ENVIRONMENT_CONTAINER \
|
||||
-var DESKTOP_ENVIRONMENT_REGISTRY=$DESKTOP_ENVIRONMENT_REGISTRY \
|
||||
$DESKTOP_ENVIRONMENT_DOCKER_REPOSITORY/packer/desktop-environment.json
|
||||
|
|
|
|||
|
|
@ -79,3 +79,20 @@ resource "google_compute_network" "desktop-environment" {
|
|||
resource "google_compute_address" "static" {
|
||||
name = "cloud-jacksondelahunt-com"
|
||||
}
|
||||
|
||||
provider "cloudflare" {
|
||||
email = "${var.DESKTOP_ENVIRONMENT_CLOUDFLARE_EMAIL}"
|
||||
token = "${var.DESKTOP_ENVIRONMENT_CLOUDFLARE_TOKEN}"
|
||||
}
|
||||
|
||||
variable "domain" {
|
||||
default = "${var.DESKTOP_ENVIRONMENT_CLOUDFLARE_DOMAIN}"
|
||||
}
|
||||
|
||||
resource "cloudflare_record" "cloud" {
|
||||
domain = "${var.DESKTOP_ENVIRONMENT_CLOUDFLARE_DOMAIN}"
|
||||
name = "cloud"
|
||||
value = "${google_compute_address.static.address}"
|
||||
type = "A"
|
||||
proxied = true
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,13 +12,15 @@ TERRAFORM_ARGS=$@
|
|||
# Execute the supplied terraform command
|
||||
docker run \
|
||||
--entrypoint ash \
|
||||
--env GOOGLE_APPLICATION_CREDENTIALS=$DESKTOP_ENVIRONMENT_DOCKER_REPOSITORY/credentials/credentials.json \
|
||||
--env GOOGLE_APPLICATION_CREDENTIALS=$DESKTOP_ENVIRONMENT_DOCKER_REPOSITORY/credentials/google.json \
|
||||
--env TF_CLI_ARGS_apply="-auto-approve -lock=false" \
|
||||
--env TF_CLI_ARGS_destroy="-auto-approve -lock=false" \
|
||||
--env TF_IN_AUTOMATION=true \
|
||||
--env TF_INPUT=0 \
|
||||
--env TF_VAR_DESKTOP_ENVIRONMENT_CONTAINER=$DESKTOP_ENVIRONMENT_CONTAINER \
|
||||
--env TF_VAR_DESKTOP_ENVIRONMENT_REGISTRY=$DESKTOP_ENVIRONMENT_REGISTRY \
|
||||
--env TF_VAR_owner_host=$HOSTNAME \
|
||||
--env TF_VAR_owner_name=$USER \
|
||||
--rm \
|
||||
--tty \
|
||||
--volume DESKTOP_ENVIRONMENT_DOCKER_REPOSITORY:$DESKTOP_ENVIRONMENT_DOCKER_REPOSITORY \
|
||||
|
|
|
|||
16
terraform/start.sh
Normal file
16
terraform/start.sh
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
REPO_ROOT=$(dirname $(realpath $0))/../..
|
||||
|
||||
# Export desktop environment shell configuration
|
||||
export $($REPO_ROOT/docker/scripts/environment.sh)
|
||||
|
||||
# Authenticate with cloud service provider
|
||||
$REPO_ROOT/credentials/authenticate.sh
|
||||
|
||||
docker run \
|
||||
--env GOOGLE_APPLICATION_CREDENTIALS=$DESKTOP_ENVIRONMENT_HOST_REPOSITORY/credentials/google.json \
|
||||
--interactive \
|
||||
--rm \
|
||||
--tty \
|
||||
--volume $DESKTOP_ENVIRONMENT_HOST_REPOSITORY:$DESKTOP_ENVIRONMENT_HOST_REPOSITORY \
|
||||
--workdir $DESKTOP_ENVIRONMENT_HOST_REPOSITORY \
|
||||
hashicorp/terraform:light apply
|
||||
|
|
@ -1,3 +1,15 @@
|
|||
variable "DESKTOP_ENVIRONMENT_CLOUDFLARE_DOMAIN" {
|
||||
description = "The DESKTOP_ENVIRONMENT_CLOUDFLARE_DOMAIN environment variable."
|
||||
}
|
||||
|
||||
variable "DESKTOP_ENVIRONMENT_CLOUDFLARE_EMAIL" {
|
||||
description = "The DESKTOP_ENVIRONMENT_CLOUDFLARE_EMAIL environment variable."
|
||||
}
|
||||
|
||||
variable "DESKTOP_ENVIRONMENT_CLOUDFLARE_TOKEN" {
|
||||
description = "The DESKTOP_ENVIRONMENT_CLOUDFLARE_TOKEN environment variable."
|
||||
}
|
||||
|
||||
variable "DESKTOP_ENVIRONMENT_CONTAINER" {
|
||||
description = "The DESKTOP_ENVIRONMENT_CONTAINER environment variable."
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue