{"id":45402899,"url":"https://github.com/ottenwbe/developer-environment-setup","last_synced_at":"2026-02-21T20:20:01.279Z","repository":{"id":56547388,"uuid":"75555076","full_name":"ottenwbe/developer-environment-setup","owner":"ottenwbe","description":"Ansible playbook to setup Linux developer machines.","archived":false,"fork":false,"pushed_at":"2026-01-27T21:10:53.000Z","size":55,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-28T08:57:42.196Z","etag":null,"topics":["ansible","playbook"],"latest_commit_sha":null,"homepage":"","language":"Jinja","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ottenwbe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-12-04T18:14:24.000Z","updated_at":"2023-03-16T21:56:36.000Z","dependencies_parsed_at":"2022-08-15T20:40:45.514Z","dependency_job_id":null,"html_url":"https://github.com/ottenwbe/developer-environment-setup","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ottenwbe/developer-environment-setup","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ottenwbe%2Fdeveloper-environment-setup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ottenwbe%2Fdeveloper-environment-setup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ottenwbe%2Fdeveloper-environment-setup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ottenwbe%2Fdeveloper-environment-setup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ottenwbe","download_url":"https://codeload.github.com/ottenwbe/developer-environment-setup/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ottenwbe%2Fdeveloper-environment-setup/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29692205,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-21T18:18:25.093Z","status":"ssl_error","status_checked_at":"2026-02-21T18:18:22.435Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ansible","playbook"],"created_at":"2026-02-21T20:20:00.602Z","updated_at":"2026-02-21T20:20:01.265Z","avatar_url":"https://github.com/ottenwbe.png","language":"Jinja","funding_links":[],"categories":[],"sub_categories":[],"readme":"# developer-environment-setup\n\n[![Test Developer Environment Setup](https://github.com/ottenwbe/developer-environment-setup/actions/workflows/main.yml/badge.svg)](https://github.com/ottenwbe/developer-environment-setup/actions/workflows/main.yml)\n\nThis ansible playbook is used by me to automate the setup of my Linux developer machines. \nIf you frequently reinstall your system, you know why these scripts were created.\nTherefore, this repository will be updated whenever I setup a new machine (commits to master).\n\n## Supported Linux Distributions\n\nRight now the only tested Distributions are:\n* Fedora 43\n\n## Structure\n\n```\n.\n├── bootstrap_local.sh  // Script to bootstrap the ansible environment before executing the playbook\n├── site.yml            // Playbook that wraps all tasks, roles, ...\n├── ... \n├── roles/              // Roles to be executed by the playbook\n│   ├── common          // Installation of common tools, external repos (rpm-fusion...), etc. \n│   ├── user            // Creation of users\n│   ├── zsh             // Installation of zsh for each user\n│   ├── vscode          // Installation of Visual Studio Code\n│   ├── ansible         // Installation of Ansible and linting tools\n│   ├── cpp             // Everything needed for C(pp) development\n│   ├── go              // Everything needed for Golang development\n│   ├── java            // Everything needed for Java development\n│   ├── kubernetes      // Everything needed for Kubernetes development (minikube, helm, ...)\n│   ├── python          // Everything needed for Python development\n│   └── ruby            // Everything needed for Ruby development       \n│   ├── virtualization  // Virtualization tools (VirtualBox, Vagrant)\n│   └── intellij        // Installation of IntelliJ IDEA\n│   └── ai              // AI tools (Ollama, PyTorch, Jupyter)\n└── test/               // Test the playbook in docker images\n    └── docker/\n```\n\n## Usage \n\nFirst of all, clone this repository.\n\n```\ngit clone https://github.com/ottenwbe/developer-environment-setup.git\n```\n\nThe ```bootstrap_local.sh``` script installs ansible as a prerequisite for executing the playbook.\nOn a local Fedora installation where ansible is __not__ (yet) installed the playbook can be executed as follows. The playbook will install ansible and start sshd:\n\n```bash\nsh bootstrap_local.sh inventory.yml @vars.json\n```\n\nThis expects a simple config, vars.json, like this to setup your users and all configurations in their respective home directories:\n\n```json\n{\n  \"users\": [\n    {\n      \"username\": \"user1\",\n    },\n    {\n      \"username\": \"user2\",\n    }\n  ]    \n}\n```\n\nOn a local Linux installation where ansible is installed the playbook can be executed as follows. NOTE: in this example the [git config](https://git-scm.com/docs/git-config) is updated as well for the user, which is an optional step:\n\n```bash\nansible-playbook -i inventory.yml site.yml --connection=local --extra-vars '{\"users\": [{\"username\": \"your user\", \"git_name\": \"Your Name\", \"git_email\": \"email@example.com\"}]}' --ask-become-pass\n```\n\n## Tags \n\nThe playbook uses tags to allow running specific parts of the setup. \n\nAvailable tags: \n* system: Runs all system setup roles (user, zsh, vscode, ansible, common) \n* dev: Runs all development environment roles (go, java, ruby, cpp, python, kubernetes, virtualization) \n* user: User creation and configuration \n* zsh: ZSH shell setup \n* vscode: Visual Studio Code installation \n* ansible: Ansible installation \n* common: Common tools and repositories \n* go: Go development environment \n* java: Java development environment \n* ruby: Ruby development environment \n* cpp: C++ development environment \n* python: Python development environment \n* kubernetes: Kubernetes tools (Minikube, Helm, etc.) \n* virtualization: Virtualization tools (VirtualBox, Vagrant) \n* intellij: IntelliJ IDEA installation\n\nTo run only specific tags: \n```bash \nansible-playbook -i inventory.yml site.yml ... --tags \"tag1,tag2\" \n```\n\nOr using the bootstrap script (4th argument): \n\n```bash \nsh bootstrap_local.sh inventory.yml \u003cextra-vars\u003e Fedora \"tag1,tag2\" true \n```\n\n## Configuration \n\nYou can customize the installation by overriding default variables using --extra-vars. \n\nFor example, if you have the need to install IntelliJ IDEA Ultimate instead of the default Community edition: \n\n```bash \nansible-playbook ... --extra-vars '{\"intellij_edition\": \"ultimate\"}' \n``` \n\n## Testing \n\nThe playbook can be tested in a Docker container---more or less.\n\n### Docker\n\n__NOTE__: On an SELinux, i.e., Fedora, first execute the following command in the root directory of the project.\n\n```bash\nchcon -Rt svirt_sandbox_file_t \"${PWD}\"\n```\n\nOn a non SELinux you can simply build a docker image and execute the playbook in a container. Replace one of the 'testuser's' with a username that suits you and run the following commands:\n\n```bash\ndocker build --file=test/docker/Dockerfile.fedora --build-arg \"FEDORA_VERSION=43\" --tag=fedora43:ansible test/docker\ndocker run --name=test-fedora --rm --volume=\"${PWD}\":/home/ansible:ro fedora43:ansible ansible-playbook -i /home/ansible/test/docker/inventory.yml /home/ansible/site.yml --connection=local --become --extra-vars '{\"users\": [{\"username\": \"testuser1\"}, {\"username\": \"testuser2\"}]}' --skip-tags \"common\"\n```\n\nor simply use the test scripts\n\n```bash\nsh test/test.sh 43 all\n```\n\n__Note__: We skip everything related to systemd, since systemd is not monitoring our services in the container. \n\nAfter the test has finished you can stop the container and remove it:\n```bash\ndocker rm test-fedora\n```\n\n## Note\n\nI created this project for the purpose of educating myself and personal use. If you are interested in the outcome, feel free to contribute; this work is published under the MIT license.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fottenwbe%2Fdeveloper-environment-setup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fottenwbe%2Fdeveloper-environment-setup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fottenwbe%2Fdeveloper-environment-setup/lists"}