From fd5ce83586e8fae758687fca6d4b062605914105 Mon Sep 17 00:00:00 2001 From: Amir Omidi Date: Tue, 14 Dec 2021 16:58:26 -0500 Subject: [PATCH 01/10] Add a devcontainer --- .devcontainer/Dockerfile | 16 ++++++++++++++++ .devcontainer/devcontainer.json | 24 ++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 .devcontainer/Dockerfile create mode 100644 .devcontainer/devcontainer.json diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 0000000..fe0a42e --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,16 @@ +ARG VARIANT=1-bullseye +FROM mcr.microsoft.com/vscode/devcontainers/go:0-${VARIANT} + +ARG NODE_VERSION="none" +RUN if [ "${NODE_VERSION}" != "none" ]; then su vscode -c "umask 0002 && . /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1"; fi + +RUN apt-get update && apt-get upgrade -y && apt-get install -y software-properties-common +RUN apt-get install -y byobu tmux nano vim + +RUN curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add - +RUN apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main" + +RUN apt-get update && apt-get install -y consul nomad terraform + + +ENTRYPOINT ["sleep", "infinity"] diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..c3ec55f --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,24 @@ +{ + "name": "Hashicorp Lessons", + "build":{ + "dockerfile": "Dockerfile", + "context": "." + }, + "workspaceFolder": "/workspace", + // Add the IDs of extensions you want installed when the container is created. + "extensions": [ + "hashicorp.terraform", + ], + "settings": { + "go.toolsManagement.checkForUpdates": "local", + "go.useLanguageServer": true, + "go.gopath": "/go", + "go.goroot": "/usr/local/go", + }, + "forwardPorts": [ + 4646, + 8500, + ], + // Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. + "remoteUser": "vscode" +} From f284bd8858349b4af76481fbb7750381b4c72f89 Mon Sep 17 00:00:00 2001 From: Amir Omidi Date: Tue, 14 Dec 2021 17:01:53 -0500 Subject: [PATCH 02/10] Fix workspaceFolder --- .devcontainer/devcontainer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index c3ec55f..d20344e 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -4,7 +4,7 @@ "dockerfile": "Dockerfile", "context": "." }, - "workspaceFolder": "/workspace", + "workspaceFolder": "/workspaces", // Add the IDs of extensions you want installed when the container is created. "extensions": [ "hashicorp.terraform", From 2d0cfb2f745a0af31038109cd00ad632e425e50c Mon Sep 17 00:00:00 2001 From: Amir Omidi Date: Tue, 14 Dec 2021 17:16:19 -0500 Subject: [PATCH 03/10] Add socat --- .devcontainer/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index fe0a42e..47eef1f 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -5,7 +5,7 @@ ARG NODE_VERSION="none" RUN if [ "${NODE_VERSION}" != "none" ]; then su vscode -c "umask 0002 && . /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1"; fi RUN apt-get update && apt-get upgrade -y && apt-get install -y software-properties-common -RUN apt-get install -y byobu tmux nano vim +RUN apt-get install -y byobu tmux nano vim socat RUN curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add - RUN apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main" From 3dc363eb0b4980ec6c0b861433daf5098eefe842 Mon Sep 17 00:00:00 2001 From: Amir Omidi Date: Tue, 14 Dec 2021 22:46:10 +0000 Subject: [PATCH 04/10] Add capabilities --- .devcontainer/devcontainer.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index d20344e..969ecb8 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -2,8 +2,9 @@ "name": "Hashicorp Lessons", "build":{ "dockerfile": "Dockerfile", - "context": "." + "context": ".", }, + "runArgs": [ "--cap-add=SYS_PTRACE", "--cap-add=SYS_ADMIN", "--cap-add=NET_ADMIN", "--security-opt", "seccomp=unconfined" ], "workspaceFolder": "/workspaces", // Add the IDs of extensions you want installed when the container is created. "extensions": [ From 89afea12146309153bf6244498300a2d2d196b2a Mon Sep 17 00:00:00 2001 From: Amir Omidi Date: Tue, 14 Dec 2021 22:51:38 +0000 Subject: [PATCH 05/10] Make privileged --- .devcontainer/devcontainer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 969ecb8..8d1e355 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -4,7 +4,7 @@ "dockerfile": "Dockerfile", "context": ".", }, - "runArgs": [ "--cap-add=SYS_PTRACE", "--cap-add=SYS_ADMIN", "--cap-add=NET_ADMIN", "--security-opt", "seccomp=unconfined" ], + "runArgs": [ "--privileged",], "workspaceFolder": "/workspaces", // Add the IDs of extensions you want installed when the container is created. "extensions": [ From 1a465ac790ff3e879fecf8d6f201179c98c2147d Mon Sep 17 00:00:00 2001 From: Amir Omidi Date: Tue, 14 Dec 2021 18:18:22 -0500 Subject: [PATCH 06/10] Fix workspace directory --- .devcontainer/devcontainer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 8d1e355..c6d5703 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -5,7 +5,7 @@ "context": ".", }, "runArgs": [ "--privileged",], - "workspaceFolder": "/workspaces", + "workspaceFolder": "/workspaces/hashicorp-lessons", // Add the IDs of extensions you want installed when the container is created. "extensions": [ "hashicorp.terraform", From 680ea98d034b40552034861ab777bcb9cde24f1e Mon Sep 17 00:00:00 2001 From: Amir Omidi Date: Wed, 15 Dec 2021 00:16:47 +0000 Subject: [PATCH 07/10] We don't need raw_exec for these examples, and they have a conflict with cgroups if you're running a new version of debian --- 1_HELLO_WORLD/job.hcl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/1_HELLO_WORLD/job.hcl b/1_HELLO_WORLD/job.hcl index 3d30b71..2472b6b 100644 --- a/1_HELLO_WORLD/job.hcl +++ b/1_HELLO_WORLD/job.hcl @@ -34,7 +34,7 @@ job "hello-world" { timeout = "2s" } } - driver = "raw_exec" + driver = "exec" config { command = "${NOMAD_ALLOC_DIR}/hello-world.sh" @@ -51,4 +51,4 @@ job "hello-world" { } } } -} \ No newline at end of file +} From bcc3c11dc534fa248f8374459c82e635f75d83c6 Mon Sep 17 00:00:00 2001 From: Amir Omidi Date: Wed, 15 Dec 2021 08:53:21 +0000 Subject: [PATCH 08/10] Test --- .devcontainer/devcontainer.json | 2 +- 1_HELLO_WORLD/job.hcl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index c6d5703..329eb5b 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -4,7 +4,7 @@ "dockerfile": "Dockerfile", "context": ".", }, - "runArgs": [ "--privileged",], + "runArgs": [ "--cap-add=SYS_PTRACE", "--security-opt", "seccomp=unconfined", "--privileged", "--init" ], "workspaceFolder": "/workspaces/hashicorp-lessons", // Add the IDs of extensions you want installed when the container is created. "extensions": [ diff --git a/1_HELLO_WORLD/job.hcl b/1_HELLO_WORLD/job.hcl index 2472b6b..b6760d0 100644 --- a/1_HELLO_WORLD/job.hcl +++ b/1_HELLO_WORLD/job.hcl @@ -34,7 +34,7 @@ job "hello-world" { timeout = "2s" } } - driver = "exec" + driver = "raw_exec" config { command = "${NOMAD_ALLOC_DIR}/hello-world.sh" From be59dec4a8ae6fd1963cb981040356f1028a5d59 Mon Sep 17 00:00:00 2001 From: Amir Omidi Date: Wed, 15 Dec 2021 09:22:26 +0000 Subject: [PATCH 09/10] Try this? --- .devcontainer/devcontainer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 329eb5b..692b5ea 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -4,7 +4,7 @@ "dockerfile": "Dockerfile", "context": ".", }, - "runArgs": [ "--cap-add=SYS_PTRACE", "--security-opt", "seccomp=unconfined", "--privileged", "--init" ], + "runArgs": [ "--cap-add=SYS_PTRACE", "--cap-add=SYS_ADMIN", "--security-opt", "seccomp=unconfined", "--privileged", "--init" ], "workspaceFolder": "/workspaces/hashicorp-lessons", // Add the IDs of extensions you want installed when the container is created. "extensions": [ From f8954dd6555178866492b2960ed8c4899e82e3e6 Mon Sep 17 00:00:00 2001 From: Amir Omidi Date: Wed, 15 Dec 2021 10:30:06 +0000 Subject: [PATCH 10/10] Add consul.hcl --- .devcontainer/consul.hcl | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .devcontainer/consul.hcl diff --git a/.devcontainer/consul.hcl b/.devcontainer/consul.hcl new file mode 100644 index 0000000..6352a01 --- /dev/null +++ b/.devcontainer/consul.hcl @@ -0,0 +1,5 @@ +client { + options = { + "driver.raw_exec.no_cgroups" = "1" + } +}