From 1fa6f52077f395d4f152d2912890876e8d188ae0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20L=C3=BCscher?= Date: Mon, 1 May 2023 12:17:01 +0000 Subject: [PATCH] chore(devcontainer): add tools for ansible development --- .devcontainer/devcontainer.json | 33 +++++++++++++++++++++++++----- .devcontainer/install-dev-tools.sh | 16 +++++++++++++++ 2 files changed, 44 insertions(+), 5 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 6528f96..c52aba5 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -4,7 +4,6 @@ "name": "ublue-os/forge", // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile "image": "mcr.microsoft.com/devcontainers/base:alpine-3.17", - // Set `remoteUser` to `root` to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. "remoteUser": "vscode", // podman needs this @@ -15,14 +14,19 @@ // disable selinux isolation that breaks bind mounts "--security-opt=label=disable" ], - // Features to add to the dev container. More info: https://containers.dev/features. - // "features": {}, - + // Configure environment variables + "containerEnv": { + "POETRY_VIRTUALENVS_CREATE": "false", + "POETRY_VERSION": "1.3.1" + }, + "remoteEnv": { + // Add path for packages installed with poetry + "PATH": "${containerEnv:PATH}:/home/vscode/.local/bin:/home/vscode/.local/pipx/venvs/poetry/bin" + }, // Mounts from host system "mounts": [ "source=/run/user/${localEnv:UID:1000}/podman/podman.sock,target=/run/podman/podman.sock,type=bind" ], - // Install DevTools "postCreateCommand": "bash ./.devcontainer/install-dev-tools.sh", // Configure tool-specific properties. @@ -42,6 +46,22 @@ "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.formatOnSave": true, "editor.formatOnPaste": true, + "files.associations": { + "**/ansible/*.yml": "ansible", + "**/ansible/**/*.yml": "ansible" + }, + "[ansible]": { + "editor.defaultFormatter": "redhat.ansible", + "editor.formatOnPaste": true, + "editor.insertSpaces": true, + "editor.tabSize": 2 + }, + // "ansible.ansible.path": "/home/vscode/.local/bin/ansible", + // "ansible.python.interpreterPath": "/usr/local/bin/python3", + "ansible.ansible.useFullyQualifiedCollectionNames": true, + "ansible.ansibleLint.enabled": true, + // "ansible.ansibleLint.path": "/home/vscode/.local/bin/ansible-lint", + "ansible.ansibleLint.arguments": "-c ${containerWorkspaceFolder}/ansible/.ansible-lint", "cSpell.customDictionaries": { "project-words": { "name": "custom-dictionary", @@ -64,11 +84,14 @@ "esbenp.prettier-vscode", "GitHub.vscode-pull-request-github", "Gruntfuggly.todo-tree", + "jamesls.jmespath-vscode", "kokakiwi.vscode-just", "ms-azuretools.vscode-docker", "ms-kubernetes-tools.vscode-kubernetes-tools", "nico-castell.linux-desktop-file", + "redhat.ansible", "redhat.vscode-yaml", + "samuelcolvin.jinjahtml", "shakram02.bash-beautify", "streetsidesoftware.code-spell-checker" ] diff --git a/.devcontainer/install-dev-tools.sh b/.devcontainer/install-dev-tools.sh index 9860fc7..704bfd9 100644 --- a/.devcontainer/install-dev-tools.sh +++ b/.devcontainer/install-dev-tools.sh @@ -22,6 +22,10 @@ echo "" echo -e "${YELLOW}Installing additional tools${ENDCOLOR}" echo "" sudo apk add git-extras --repository=https://dl-cdn.alpinelinux.org/alpine/edge/testing +sudo apk add py3-pip +python3 -m pip install --user pipx +python3 -m pipx ensurepath +pipx install poetry ## Install podman remote echo "" @@ -41,6 +45,18 @@ echo -e "${YELLOW}Configuring git${ENDCOLOR}" echo "" git config --local commit.template .gitmessage +# Install python dependencies +echo "" +echo -e "${YELLOW}Installing python dependencies${ENDCOLOR}" +echo "" +poetry install -C /workspaces/forge/ansible + +# Install ansible dependencies +echo "" +echo -e "${YELLOW}Installing ansible dependencies${ENDCOLOR}" +echo "" +ansible-galaxy collection install -r /workspaces/forge/ansible/collections/requirements.yml + # Finish echo "" echo -e "${GREEN}Done. Happy coding!${ENDCOLOR}"