{"id":18445735,"url":"https://github.com/voronenko/lamp-kitchen","last_synced_at":"2025-08-25T02:03:47.415Z","repository":{"id":14943350,"uuid":"17667939","full_name":"Voronenko/lamp-kitchen","owner":"Voronenko","description":"kitchen based vagrant powered box template for lamp development  [Dev, DevOps, Vagrant, Test Kitchen]","archived":false,"fork":false,"pushed_at":"2014-03-13T10:04:10.000Z","size":152,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-15T01:15:42.015Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","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/Voronenko.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":"2014-03-12T13:32:31.000Z","updated_at":"2014-03-13T10:04:10.000Z","dependencies_parsed_at":"2022-09-24T01:01:08.878Z","dependency_job_id":null,"html_url":"https://github.com/Voronenko/lamp-kitchen","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/Voronenko%2Flamp-kitchen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Voronenko%2Flamp-kitchen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Voronenko%2Flamp-kitchen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Voronenko%2Flamp-kitchen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Voronenko","download_url":"https://codeload.github.com/Voronenko/lamp-kitchen/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248986315,"owners_count":21194025,"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":"2024-11-06T07:07:03.760Z","updated_at":"2025-04-15T01:15:59.277Z","avatar_url":"https://github.com/Voronenko.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"lamp-kitchen\n===============\n\n## Required soft on dev box\n\nNote: use parameters --no-ri --no-rdoc only if you are sure that you do not need any documentation locally - improves speed.\n\nWindows setup: I suggest using Ruby Installer approach to install Ruby (http://rubyinstaller.org/downloads/).\nImportant: make sure that ruby installation path does not contain any spaces or special symbols (like \"Program Files\", etc).\nFor example, mine path is  C:\\Utils\\Ruby193\\. \n\nIf you are using Berkshelf, you will need to install Development KIT additionally. It can be downloaded from the same downloads page as Ruby Installer.\nInstallation instructions: https://github.com/oneclick/rubyinstaller/wiki/Development-Kit\nIn brief: download, unpack, cd \u003cDEVKIT_INSTALL_DIR\u003e,  ruby dk.rb init,  ruby dk.rb install, done!\nValidate installation by running ruby -rubygems -e \"require 'json'; puts JSON.load('[42]').inspect\"\n\n\n1. Ruby 1.9.3 \u0026 DevKit\n2. Test kitchen  (gem install test-kitchen --no-ri --no-rdoc)\n3. Kitchen Vagrant (gem install kitchen-vagrant --no-ri --no-rdoc)\n4. Berkshelf itself (gem install berkshelf --no-ri --no-rdoc)\n\n\n##Cooking steps\nAssume you have some 3rd party project repository you want to work on. For some reasons it does not allow commiting development specific data into project. \nThis repoository provides approach to 'wrap' external repository into your own development environment.\n\nApproach assumes that bash shell is in path (for windows environment it is located in msysgit bin folder)\n\n1.  Define your project cooking recipes in test\\integration\\site-cookbooks\\current_project_setup\\ . This may include setting up specific databases, users, plugins, packages etc. Example provided\n2.  If your project has recipes from #1, uncomment following line in Berksfile #cookbook 'current_project_setup', path: './test/integration/site-cookbooks/current_project_setup'\n3.  in kitchen's run_list  add \"recipe[current_project_setup]\" to ensure that your project recipe is included in provision process\n3.  Define hints for development website in \\test\\integration\\data_bags\\sites\\ . This may include DNS entries. I propose using localhost catchers like *.lvh.me - saves some time.\n3.  Define your dev environment settings in \\test\\integration\\environments\\ .  I provide my default setup for vagrant as an example\n4.  Roles: \\test\\integration\\roles\\ : actually portions from original 'big' approach at https://github.com/Voronenko/chef-developer_bootstrap - instructions to install software bundles specific to your development stack. Note: make sure, that Berksfile and Cheffile in the project root match software packages required.\n5.  Register project you want to wrap into .projmodules file.  Syntax of the file is identical to .gitmodules format. Difference it - that wrapped project is not installed as a git submodule, but as fully independent project. Note - you have way to work with multiple projects/sites on the same vagrant box, if needed.\n6.  Initialize .projmodules  with running init.sh in the project root\n7.  I often use local folder to keep set of files I need to overwrite in original solution to make it run on a vagrant (usually pathes, DB credentials, etc)\n8.  Feel free to commit your IDE related configs to parent repository (for example, I commit core settings from JetBrains IDea dev environment. In this way I have the same settings regardless of PC I work on)\n\n## Usage steps:\nkitchen list   - show current status of instances\nkitchen setup  - build box for the first time\nkitchen converge - force running box provisioning (for example you changed project cookbook)\nkitchen login  - log to the instance (as vagrant ssh)\n\nQ: Where is my VagrantFile?\n\nA: .kitchen\\kitchen-vagrant\\{AutomaticBoxName}\\Vagrantfile \n\nQ: I still want to issue vagrant commands as previously?\n\nA: vgrant.cmd in the project root efficiently passes your commands to vagrant.\n\nQ: I still want my VagrantFile in project root, because I want to commit it into my source control\n\nA: getVagrantFileHere.cmd batch copies the file. Alternatively copy it manually, but make sure to fix shared folders path (pathes are set relatively to Vagrant File)\n   However this does not make sense, because you still have to amend this file with provision instructions. Perhaps this approach suits you better: [https://github.com/Voronenko/vagrant-wrap](https://github.com/Voronenko/vagrant-wrap) ?\n\n\n\n## \\test\\integration sub-folders description\n\n### site-cookbooks\nI use this directory to checkout cookbooks that are not available for the public, and are specifically related to project specific environment configuration\n\n### databags\nDirectory contains optional project specific file artifacts for cookbooks.\n\n### environments\nContains preferences to package versions, vendors and machine wide configuraiton for packages installed\n\n### nodes\nContains instructions to configure predefined set of the software on specific workstation basing on it's role (lamp box, java box, big data box, MEAN box, etc.\n\n### roles\nContains combination of recipes (roles) to configure workstation for predefined needs.\nBy default roles are:\n\n- lamp_complete - apache php mysql xdebug phpmyadmin webgring mailcatcher\n- sql - installs set of tools for efficient work with MySQL (Percona, MariaDB) box\n- vagrant - automatically installs sites basing on data bags configuration, configures error reporting to browser for php\n\n##What is in the repository demo box setup?\n\n###common_schema\nInstalls DBA framework Common_Schema 2.2  [http://code.openark.org/blog/mysql/common_schema-2-2-better-queryscript-isolation-tokudb-table_rotate-split-params](http://code.openark.org/blog/mysql/common_schema-2-2-better-queryscript-isolation-tokudb-table_rotate-split-params) , requires MySQL/MariaDB/Percona to be installed.\n\nCheck usage options: [http://www.percona.com/live/london-2013/sites/default/files/slides/common_schema-pllondon-2013_0.pdf](http://www.percona.com/live/london-2013/sites/default/files/slides/common_schema-pllondon-2013_0.pdf)\n\n### mailcatcher\nDebug tool to catch emails send from the box. Nicely mocks sendmail and SMTP servers.\n[http://mailcatcher.me/](http://mailcatcher.me/)\nWeb interface available on port **1080**\n\n\n### mariadb_client\nClient packages for mariaDB, note: requires appropriate environment settings in environment file:\n\u003cpre\u003e\n  \"mariadb\": {\n                   \"version\":\"5.5\"\n                },\n     \"mysql\" :  {\n                   \"use_upstart\": false,\n                   \"server_root_password\": \"devroot\",\n                   \"server_repl_password\": \"devrepl\",\n                   \"server_debian_password\": \"devdebian\",                   \n                   \"client\": {\n                                \"packages\":[\"mariadb-client\", \"libmariadbclient-dev\"]\n                             },\n                   \"server\": {\n                                \"packages\":[\"mariadb-server\"]\n                             }          \n                }\n\n\u003c/pre\u003e\n\n###mariadb_server\nMariaDB server (MySQL compatible) - see notes for **mariadb_client**\n\n\n###percona_toolkit\nPercona Toolkit for MySQL is a collection of advanced command-line tools used by Percona MySQL Support staff to perform a variety of MySQL server and system tasks that are too difficult or complex to perform manually, including:\n\n- Verify master and replica data consistency\n- Efficiently archive rows\n- Find duplicate indexes\n- Summarize MySQL servers\n- Analyze queries from logs and tcpdump\n- Collect vital system information when problems occur\n\nMore: [http://www.percona.com/doc/percona-toolkit/2.2/](http://www.percona.com/doc/percona-toolkit/2.2/)\n\n### php_webgrind\nWebgrind is a Xdebug profiling web frontend in PHP5. It implements a subset of the features of kcachegrind and installs in seconds and works on all platforms\n\n- Super simple, cross platform installation - obviously :)\n- Track time spent in functions by self cost or inclusive cost. Inclusive cost is time inside function + calls to other functions.\n- See if time is spent in internal or user functions.\n- See where any function was called from and which functions it calls.\n- Generate a call graph using gprof2dot.py\n\n[https://github.com/jokkedk/webgrind](https://github.com/jokkedk/webgrind)\n\n### php_xdebug\nDebug extension for PHP\n\n### phpmyadmin\n\nClassic web frontend for mysql, available at /phpmyadmin/ virtual folder\n\n## Enjoy!\n\n#Linked projects: #\n\nInterested in pure Chef template?\nSee [https://github.com/Voronenko/chef-developer_bootstrap](https://github.com/Voronenko/chef-developer_bootstrap)\n\nInterested in using developer box Chef recipes in your own cookbooks?\nSee [https://github.com/Voronenko/chef-developer_recipes](https://github.com/Voronenko/chef-developer_recipes)\n\nInterested in building your devbox on top of Vagrant + vagrant-berkshelf plugin?\nSee [https://github.com/Voronenko/vagrant-wrap](https://github.com/Voronenko/vagrant-wrap)\n\n\nNote: see following article about future of the vagrant-berkshelf plugin [https://sethvargo.com/the-future-of-vagrant-berkshelf/](https://sethvargo.com/the-future-of-vagrant-berkshelf/)\n\nInterested in building your devbox on top of Vagrant + test-kitchen?\nSee [https://github.com/Voronenko/lamp-kitchen](https://github.com/Voronenko/lamp-kitchen) ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvoronenko%2Flamp-kitchen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvoronenko%2Flamp-kitchen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvoronenko%2Flamp-kitchen/lists"}