{"id":20442237,"url":"https://github.com/zuehlke/linux-developer-vm","last_synced_at":"2025-04-12T23:33:11.566Z","repository":{"id":80523529,"uuid":"42207733","full_name":"Zuehlke/linux-developer-vm","owner":"Zuehlke","description":"Template project for a minimal Chef-managed Linux developer VM","archived":false,"fork":false,"pushed_at":"2019-08-16T22:08:51.000Z","size":485,"stargazers_count":6,"open_issues_count":0,"forks_count":4,"subscribers_count":82,"default_branch":"master","last_synced_at":"2025-03-26T17:42:21.541Z","etag":null,"topics":["chef","development-vm","linux","vagrant"],"latest_commit_sha":null,"homepage":"","language":"Shell","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/Zuehlke.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-09-09T22:15:32.000Z","updated_at":"2020-10-27T05:51:25.000Z","dependencies_parsed_at":null,"dependency_job_id":"a21823fb-fb94-4588-9bb6-54e374c6085c","html_url":"https://github.com/Zuehlke/linux-developer-vm","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Zuehlke%2Flinux-developer-vm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Zuehlke%2Flinux-developer-vm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Zuehlke%2Flinux-developer-vm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Zuehlke%2Flinux-developer-vm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Zuehlke","download_url":"https://codeload.github.com/Zuehlke/linux-developer-vm/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248647258,"owners_count":21139081,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["chef","development-vm","linux","vagrant"],"created_at":"2024-11-15T09:38:24.966Z","updated_at":"2025-04-12T23:33:11.560Z","avatar_url":"https://github.com/Zuehlke.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Linux Developer VM Example / Template\n\n[![Circle CI](https://circleci.com/gh/Zuehlke/linux-developer-vm/tree/master.svg?style=shield)](https://circleci.com/gh/Zuehlke/linux-developer-vm/tree/master)\n\nA minimal example / template project for a Chef-managed Linux Developer VM.\n\n![Linux Developer VM Screenshot](https://raw.github.com/Zuehlke/linux-developer-vm/master/linux_devbox.png)\n\nIt's meant to be copy/pasted and filled with life. The `cookbooks/vm` directory\ncontains the recipes for setting up the VM and the tests that come along with it.\nAll your specific customizations go in there!\n\nThis is just a bare skeleton template project. For more concrete / real life examples please refer to:\n\n * https://github.com/tknerr/linus-kitchen\n * https://github.com/Zuehlke/java-developer-vm\n\n\n## What's included?\n\n### Main tools\n\nThese are the main tools included in this developer VM (see CHANGELOG for the specific versions):\n\n * [ChefDK](https://downloads.chef.io/chef-dk/) - for managing / installing this developer VM\n * [VIM](http://www.vim.org/) - the most minimal development toolchain I could come up with ;-)\n\n### Tweaks and Settings\n\nOther tweaks and settings worth mentioning:\n\n * places a `README.md` file on the Desktop to guide first time users after they logged in to the VM\n * symlinks [`update-vm.sh`](scripts/update-vm.sh) to `/usr/local/bin/update-vm` so it's in the `$PATH` and can be used for updating the VM from the inside (see below)\n\n\n## Usage\n\n### Obtaining and Starting the VM Image\n\nThe latest version of this developer VM can be downloaded as a VM image from here:\n\n * https://github.com/Zuehlke/linux-developer-vm/releases\n\nAfter downloading the .ova file you can import it into VirtualBox via `File -\u003e Import Appliance...`.\nOnce imported, you can simply start the VM and log in:\n\n * username: \"vagrant\"\n * password: \"vagrant\"\n\nFrom then on just open a terminal and you will have all of the tools available (see \"What's included?\").\n\n### Updating the VM\n\nYou can run these commands from anywhere inside the developer VM:\n\n * `update-vm` - update the VM by applying the Chef recipes from the locally checked out repo at `~/vm-setup`\n * `update-vm --pull` - same as above, but update repo before by pulling the latest changes\n * `update-vm --verify-only` - don't update the VM, only run the Serverspec tests\n * `update-vm --provision-only` - don't run the Serverspec tests, only update the vm\n\n### Keyboard Layout and Locale Settings\n\nThe VM ships with a full `US` keyboard layout and `en_US.UTF-8` locale by default.\n\nTo change the keyboard layout to your preferred language use `System Settings... -\u003e Text Entry` in the VM.\n\nIf you have a totally different keymap (e.g. on a MacBook) you can always reconfigure it:\n```\nsudo dpkg-reconfigure keyboard-configuration\n```\n\nIf want to reconfigure the locale:\n```\nsudo dpkg-reconfigure locales\n```\n\n\n## Development\n\n### Prerequisites\n\nYou only need [VirtualBox](http://virtualbox.org/wiki/Downloads) and [Vagrant](http://www.vagrantup.com/)\ninstalled.\n\nAll other requirements, including with ChefDK will be installed *inside the Vagrant VM* during provisioning, i.e. you don't need them installed on your host machine.\n\n### Basic Development Workflow\n\nBring up the developer VM:\n```\n$ vagrant up\n```\n\nThis will take a while, as it will do quite a few things inside the VM:\n\n 1. Download and install [ChefDK](https://downloads.chef.io/chef-dk/)\n 1. Copy the current directory into the VM (will be placed in `~/vm-setup`)\n 1. Install cookbook dependencies via [Berkshelf](http://berkshelf.com/) to `~/vm-setup/cookbooks/vm/cookbooks`\n 1. Trigger a [Chef-Zero](https://www.chef.io/blog/2013/10/31/chef-client-z-from-zero-to-chef-in-8-5-seconds/) run to apply the `~/vm-setup/cookbooks/vm/recipes` to the VM (see \"What's included?\")\n 1. Verify the installation using a set of [Serverspec](http://serverspec.org/) tests\n\nWatch the vagrant output on the console for seeing progress. At the end you\nshould see all tests passing:\n\n```\n...\n==\u003e default: vm::base\n==\u003e default:   places a README on the Desktop\n==\u003e default:\n==\u003e default: vm::vim\n==\u003e default:   installs Vi IMproved\n==\u003e default:\n==\u003e default: update-vm.sh\n==\u003e default:   installs chefdk 1.3.32\n==\u003e default:   symlinks the update-vm script to /usr/local/bin/\n==\u003e default:\n==\u003e default: Finished in 0.09228 seconds (files took 0.59519 seconds to load)\n==\u003e default: 4 examples, 0 failures\n```\n\nIf these are passing as expected, you can continue developing on the Chef recipes within this repo.\nPlease don't forget to add a test for each new feature you add (see \"Contributing\")\n\n### Packaging\n\nWhenever you feel like distributing a fat VM image rather than a Vagrantfile,\nyou can package / export it as a VirtualBox image. This might be useful\nfor distributing the initial version of the developer VM to your dev team,\nor simply for preserving checkpoint releases as a binary images.\n\nLet's start from a clean state:\n```\n$ vagrant destroy -f\n$ vagrant up\n```\n\nThis will provision the VM as usual. Once the provisioning succeeded, we will\ndo a few cleanup steps before packaging the VM.\n\nFirst, unmount the /vagrant shared folder:\n```\n$ vagrant ssh -c \"sudo umount /vagrant -f\"\n```\n\nFinally, shutdown the VM, remove the sharedfolder, and export the VM as an .ova file:\n```\n$ vagrant halt\n$ VBoxManage sharedfolder remove \"Linux Developer VM\" --name \"vagrant\"\n$ VBoxManage modifyvm \"Linux Developer VM\" --name \"Linux Developer VM v0.1.0\"\n$ VBoxManage export \"Linux Developer VM v0.1.0\" --output \"linux-developer-vm-v0.1.0.ova\" --options manifest,nomacs\n```\n\nDon't forget to throw away the VM when you are done:\n```\n$ vagrant destroy -f\n```\n\n\n## Contributing\n\n 1. Fork the repository on Github\n 1. Create a named feature branch (like `feature/add-xyz`)\n 1. Implement your changes, add tests\n 1. Commit and push\n 1. Submit a Pull Request via Github\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzuehlke%2Flinux-developer-vm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzuehlke%2Flinux-developer-vm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzuehlke%2Flinux-developer-vm/lists"}