{"id":26893558,"url":"https://github.com/dazz/puppet-boxes","last_synced_at":"2025-03-31T23:58:21.684Z","repository":{"id":3420626,"uuid":"4471796","full_name":"dazz/puppet-boxes","owner":"dazz","description":"Puppet and Vagrant Boxes building a development, testing and staging flow","archived":false,"fork":false,"pushed_at":"2012-06-08T14:49:09.000Z","size":187,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-24T16:01:47.535Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dazz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-05-28T15:23:52.000Z","updated_at":"2021-04-21T11:41:19.000Z","dependencies_parsed_at":"2022-09-21T13:13:02.369Z","dependency_job_id":null,"html_url":"https://github.com/dazz/puppet-boxes","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/dazz%2Fpuppet-boxes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dazz%2Fpuppet-boxes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dazz%2Fpuppet-boxes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dazz%2Fpuppet-boxes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dazz","download_url":"https://codeload.github.com/dazz/puppet-boxes/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246558113,"owners_count":20796696,"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":[],"created_at":"2025-03-31T23:58:21.178Z","updated_at":"2025-03-31T23:58:21.676Z","avatar_url":"https://github.com/dazz.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# puppet-boxes\n\n\nPuppet and Vagrant Boxes building a development, testing and staging flow.\n\nThe application development workflow will be supported by a setup of virtual machine \"boxes\". Each box will have its purpose and its predecessor in order to develop easily and fast for and in the web-stack (means web-applications, web- and mvc-frameworks, interfaces).\n\n### In this document:\n\n* [Getting started](#getting-started)\n   * [Installation](#installation-pre-requisites)\n   * [Setup the BASE BOX](#setup-the-base-box)\n   * [Setup the SETUP BOX](#setup-the-setup-box)\n* [About: The box model](#about-the-box-model)\n   * [BASE BOX](#base-box)\n   * [SETUP BOX](#setup-box)\n   * [PRODUCTION BOX](#production-box)\n   * [STAGE BOX](#stage-box)\n   * [DEVELOPMENT BOX](#development-box)\n   * [TEST BOX](#test-box)\n* [Hints and tips](#hints-and-tips)\n* [Future plans](#future-plans)\n* [License](#license)\n\n## Getting started\n\nTo work with this setup you do the following:\n\n**To clarify**: I will not explain vagrant much or puppet or git or do know how host operating systems work. I will however try to explain how this virtualization box model works.\n\n## Installation Pre-requisites\n\n1. Install [vagrant](vagrantup.com)\n1. Install [Virtualbox](https://www.virtualbox.org)\n1. Clone $this project and edit to your likes:\n1. Load all submodules from .gitmodules and get the [submodules][4] code from github\n\nLinux / Mac:\n\n        sudo apt-get install virtualbox\n        sudo apt-get install vagrant\n        git clone git://github.com/dazz/puppet-boxes.git\n        git submodule init\n        git submodule update\n\n### Versioning (Optional)\n\n* Install [git-flow (git branching model)](http://nvie.com/posts/a-successful-git-branching-model/)\n* [Initialize with git-flow](http://yakiloo.com/getting-started-git-flow/)\n* Create a new feature/\u003cbranch_name\u003e to start customizing the project to your likes to make a pull request later.\n\n### Adding new puppet modules to the project\n\n        git submodule add \u003crepo\u003e modules/\u003cmodulename\u003e\n\nTo see all modules:\n\n        git submodule status\n\n## Setup the boxes with build_boxes.sh\n\nGo with terminal into `\u003cproject_dir\u003e` and run\n\n        ./build_boxes boxes build\n\nThats it.\n\n## Setup the boxes manually (with the first box as example)\n\n### first start of vm with vagrant\n\nGo with terminal into `\u003cproject_dir\u003e/boxes/basebox` and run all the commands in this directory.\n\n        vagrant up\n\nVagrant will run with the Vagrantfile, download the box from the specified box_url and add it to vagrants boxes (see all with `vagrant box list`). Run the provisioner Puppet startting with the manifest.pp in the same directory (this is how we do it for every box).\n\nVagrant will start a virtual machine in Virtualbox with\n\n* IP: 192.168.23.42\n* User: vagrant, password: vagrant\n\nYou can have a look with `vagrant ssh`(Linux and Mac) but don't touch anything yet, we are not finished :)\n\n### Packing the first box\n\n**Linux:** There is a bug that the VM 'remembers' the previously set mac-address of VM. So when you reuse or copy it, it still knows it's copied. See fix [here](https://github.com/dazz/puppet-boxes#networking).\n\nWhen the vagrant comes back with finished setting up the BASE BOX you stop the vm with\n\n        vagrant halt\n\nRun following to package the vm as box. Vagrant will package the vm as a box and put it into the directory that xou are in.\n\n        vagrant package basebox --output basebox.box\n\n**Tip:** (add `*.box` to your .gitignore)\n\n### Adding first box as a base box\n\n        vagrant box add basebox basebox.box\n\nWe add it to the other vagrant boxes so we can reference it as base in another Vagrantfile. If you have a look in `~/.vagrant.d/boxes/` there should now be the basebox folder with your previous packed box.\n\n# About: The box model\n\n## BASE BOX\n\nThe base box will download the first base box from puppetlabs or your chosen url. Everything that needs to be prepared before all the software will be setup will happen in this step.\n\nYou can set your own url here with `basebox.vm.box_url`, but make sure that you do not maintain this box to stay clear of your project scope. it ends here.\n\n## SETUP BOX\n\nThe setup box will take the BASE BOX, install all needed packages and setup users and directories.\n\nIn this case:\n\n* Apache2.2\n* PHP 5.3 / 5.4\n* MySQL (datastorage will go to its own vm, in v2)\n\n## PRODUCTION BOX\n\nThe production box takes the SETUP BOX and installs the application and sets all the configuration to run it in production environment.\n\n* Set users and rights for files and directories\n* Create database user\n* Deploy application (from git repo)\n\n## STAGE BOX\n\nThe staging box takes the PRODUCTION BOX and sets up a configuration for. If you have a symfony project this would represent your stage environment where you have everything setup like in your production environment, but with profiling and other tools to see what will be deployed.\n\n* translations\n* profiling\n* stuff that management or production wants to do or to see before going life\n\n## DEVELOPMENT BOX\n\nThe development box takes the stagebox and sets up the system for development. There will be a lot of tools needed.\n\n* installing stuff: aptitude (I install stuff and put it then into this project after coding)\n* text editing: vim\n* debugging: xdebug\n* shell: zShell, setup .bash_aliases\n* git\n   * git user setup (ssh agent forward)\n   * git-core\n   * [git flow](https://github.com/nvie/gitflow)\n   * gitk\n\n\n## TEST BOX\n\nThe test box is for running all the tests. The test box takes the PRODUCTION BOX. We need all the software for running tests and reporting\n\n* user acceptance tests\n* unit tests\n* functional tests\n\n\n# Future plans\n\nNow we have the setupbox as base box for every iteration we want to do next:\n\n* PRODUCTION BOX\n* STAGE BOX and finally the\n* DEVELOPER BOX\n\nIn the first two stages we won't do anything by hand, but let machines to the work. How many iterations you will need to have a production close environment to develop in depends on your usecase or the company you work for.\n\n# Hints and tips\n\n## Networking\n\n### [udev][5]\nThere is a problem with machines of the Debian osfamily with writing the mac-address.\nFixed this with the basebox with deleting the generated and its generator file.\n\n\n# License\n\n   Copyright 2012 Anne-Julia Scheuermann\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n\n[1]: http://askubuntu.com/questions/9375/new-mac-address-now-i-have-no-network-access\n[2]: http://www.artwork.com/support/linux/eth0_configuration.htm\n[3]: http://kb.vmware.com/selfservice/microsites/search.do?language=en_US\u0026cmd=displayKC\u0026externalId=1032790\n[4]: http://chrisjean.com/2009/04/20/git-submodules-adding-using-removing-and-updating/\n[5]: http://www.ducea.com/2008/09/01/remove-debian-udev-persistent-net-rules/","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdazz%2Fpuppet-boxes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdazz%2Fpuppet-boxes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdazz%2Fpuppet-boxes/lists"}