├── .gitattributes ├── .gitignore ├── src ├── components │ ├── git │ │ ├── .gitconfig │ │ ├── cookbooks │ │ │ └── gusztavvargadr_workstations_git │ │ │ │ ├── recipes │ │ │ │ ├── tools.rb │ │ │ │ ├── requirements.rb │ │ │ │ ├── default.rb │ │ │ │ └── profiles.rb │ │ │ │ ├── test │ │ │ │ └── integration │ │ │ │ │ └── default │ │ │ │ │ └── profiles_workspaces_github.rb │ │ │ │ ├── Berksfile │ │ │ │ ├── resources │ │ │ │ ├── profiles.rb │ │ │ │ ├── profiles_workspaces.rb │ │ │ │ ├── repository.rb │ │ │ │ └── workspace.rb │ │ │ │ ├── metadata.rb │ │ │ │ ├── .kitchen.yml │ │ │ │ └── chefignore │ │ └── vagrant.yml │ ├── aws │ │ ├── cookbooks │ │ │ └── gusztavvargadr_workstations_aws │ │ │ │ ├── recipes │ │ │ │ ├── tools.rb │ │ │ │ ├── requirements.rb │ │ │ │ ├── default.rb │ │ │ │ └── profiles.rb │ │ │ │ ├── templates │ │ │ │ ├── credentials.erb │ │ │ │ └── config.erb │ │ │ │ ├── Berksfile │ │ │ │ ├── resources │ │ │ │ ├── profiles.rb │ │ │ │ └── profiles_workspaces.rb │ │ │ │ ├── metadata.rb │ │ │ │ ├── test │ │ │ │ └── integration │ │ │ │ │ └── default │ │ │ │ │ └── profiles_workspaces_default.rb │ │ │ │ ├── .kitchen.yml │ │ │ │ └── chefignore │ │ └── vagrant.yml │ ├── os │ │ ├── cookbooks │ │ │ └── gusztavvargadr_workstations_os │ │ │ │ ├── recipes │ │ │ │ ├── profiles.rb │ │ │ │ ├── tools.rb │ │ │ │ ├── default.rb │ │ │ │ └── requirements.rb │ │ │ │ ├── test │ │ │ │ └── integration │ │ │ │ │ └── default │ │ │ │ │ ├── requirements_locales_user.rb │ │ │ │ │ ├── requirements_locales_system.rb │ │ │ │ │ ├── requirements_locales_ui.rb │ │ │ │ │ └── requirements_datetime_timezone.rb │ │ │ │ ├── Berksfile │ │ │ │ ├── resources │ │ │ │ ├── requirements_datetime.rb │ │ │ │ ├── timezone.rb │ │ │ │ ├── user_locale.rb │ │ │ │ ├── system_locale.rb │ │ │ │ ├── ui_locale.rb │ │ │ │ ├── requirements_locales.rb │ │ │ │ └── requirements.rb │ │ │ │ ├── metadata.rb │ │ │ │ ├── .kitchen.yml │ │ │ │ └── chefignore │ │ └── vagrant.yml │ ├── svn │ │ ├── cookbooks │ │ │ └── gusztavvargadr_workstations_svn │ │ │ │ ├── recipes │ │ │ │ ├── tools.rb │ │ │ │ ├── requirements.rb │ │ │ │ ├── default.rb │ │ │ │ └── profiles.rb │ │ │ │ ├── test │ │ │ │ └── integration │ │ │ │ │ └── default │ │ │ │ │ └── profiles_workspaces_apache.rb │ │ │ │ ├── Berksfile │ │ │ │ ├── resources │ │ │ │ ├── profiles.rb │ │ │ │ ├── profiles_workspaces.rb │ │ │ │ ├── repository.rb │ │ │ │ └── workspace.rb │ │ │ │ ├── metadata.rb │ │ │ │ ├── .kitchen.yml │ │ │ │ └── chefignore │ │ └── vagrant.yml │ ├── core │ │ ├── cookbooks │ │ │ └── gusztavvargadr_workstations_core │ │ │ │ ├── recipes │ │ │ │ ├── profiles.rb │ │ │ │ ├── default.rb │ │ │ │ ├── tools.rb │ │ │ │ └── requirements.rb │ │ │ │ ├── test │ │ │ │ └── integration │ │ │ │ │ └── default │ │ │ │ │ ├── tools_files_hosts.rb │ │ │ │ │ └── requirements_features_telnet.rb │ │ │ │ ├── Berksfile │ │ │ │ ├── metadata.rb │ │ │ │ ├── resources │ │ │ │ ├── environment_variable.rb │ │ │ │ ├── requirements_environment.rb │ │ │ │ ├── tools_files.rb │ │ │ │ ├── requirements.rb │ │ │ │ ├── requirements_features.rb │ │ │ │ ├── tools.rb │ │ │ │ ├── tools_chocolatey.rb │ │ │ │ └── tools_windows.rb │ │ │ │ ├── chefignore │ │ │ │ └── .kitchen.yml │ │ └── vagrant.yml │ ├── nuget │ │ ├── cookbooks │ │ │ └── gusztavvargadr_workstations_nuget │ │ │ │ ├── recipes │ │ │ │ ├── tools.rb │ │ │ │ ├── requirements.rb │ │ │ │ ├── default.rb │ │ │ │ └── profiles.rb │ │ │ │ ├── Berksfile │ │ │ │ ├── resources │ │ │ │ ├── profiles.rb │ │ │ │ ├── profiles_workspaces.rb │ │ │ │ ├── source.rb │ │ │ │ └── workspace.rb │ │ │ │ ├── metadata.rb │ │ │ │ ├── test │ │ │ │ └── integration │ │ │ │ │ └── default │ │ │ │ │ └── profiles_workspaces_dotnet.rb │ │ │ │ ├── .kitchen.yml │ │ │ │ └── chefignore │ │ ├── NuGet.Config │ │ └── vagrant.yml │ ├── vagrant │ │ ├── cookbooks │ │ │ └── gusztavvargadr_workstations_vagrant │ │ │ │ ├── recipes │ │ │ │ ├── tools.rb │ │ │ │ ├── requirements.rb │ │ │ │ ├── default.rb │ │ │ │ └── profiles.rb │ │ │ │ ├── test │ │ │ │ └── integration │ │ │ │ │ └── default │ │ │ │ │ ├── profiles_boxes_ubuntu.rb │ │ │ │ │ └── profiles_plugins_reload.rb │ │ │ │ ├── Berksfile │ │ │ │ ├── resources │ │ │ │ ├── plugin.rb │ │ │ │ ├── profiles_boxes.rb │ │ │ │ ├── profiles_plugins.rb │ │ │ │ ├── profiles.rb │ │ │ │ └── box.rb │ │ │ │ ├── metadata.rb │ │ │ │ ├── .kitchen.yml │ │ │ │ └── chefignore │ │ └── vagrant.yml │ ├── sql │ │ └── vagrant.yml │ ├── dockerc │ │ ├── cookbooks │ │ │ └── gusztavvargadr_workstations_dockerc │ │ │ │ ├── recipes │ │ │ │ ├── tools.rb │ │ │ │ ├── requirements.rb │ │ │ │ ├── default.rb │ │ │ │ └── profiles.rb │ │ │ │ ├── Berksfile │ │ │ │ ├── resources │ │ │ │ ├── profiles.rb │ │ │ │ ├── profiles_images.rb │ │ │ │ └── image.rb │ │ │ │ ├── metadata.rb │ │ │ │ ├── .kitchen.yml │ │ │ │ └── chefignore │ │ └── vagrant.yml │ ├── dockere │ │ ├── cookbooks │ │ │ └── gusztavvargadr_workstations_dockere │ │ │ │ ├── recipes │ │ │ │ ├── default.rb │ │ │ │ ├── profiles.rb │ │ │ │ ├── requirements.rb │ │ │ │ └── tools.rb │ │ │ │ ├── Berksfile │ │ │ │ ├── resources │ │ │ │ ├── profiles.rb │ │ │ │ ├── profiles_images.rb │ │ │ │ └── image.rb │ │ │ │ ├── metadata.rb │ │ │ │ ├── .kitchen.yml │ │ │ │ └── chefignore │ │ └── vagrant.yml │ └── vs │ │ └── vagrant.yml ├── stacks │ ├── dotnet │ │ └── vagrant.yml │ ├── dotnetfx │ │ └── vagrant.yml │ ├── dotnetcore │ │ └── vagrant.yml │ ├── sql │ │ └── vagrant.yml │ └── infrastructure │ │ └── vagrant.yml ├── boxes │ └── dummy.json ├── people │ └── me │ │ ├── Vagrantfile │ │ ├── Berksfile │ │ └── vagrant.yml ├── Berksfile.core.rb ├── Vagrantfile.kitchen.rb ├── projects │ ├── github │ │ └── vagrant.yml │ ├── aspnet │ │ └── vagrant.yml │ ├── apache │ │ └── vagrant.yml │ └── identityserver │ │ └── vagrant.yml └── Vagrantfile.core.rb └── README.md /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .vagrant 2 | Berksfile.lock 3 | .kitchen 4 | -------------------------------------------------------------------------------- /src/components/git/.gitconfig: -------------------------------------------------------------------------------- 1 | [core] 2 | autocrlf = true 3 | -------------------------------------------------------------------------------- /src/components/aws/cookbooks/gusztavvargadr_workstations_aws/recipes/tools.rb: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/git/cookbooks/gusztavvargadr_workstations_git/recipes/tools.rb: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/os/cookbooks/gusztavvargadr_workstations_os/recipes/profiles.rb: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/os/cookbooks/gusztavvargadr_workstations_os/recipes/tools.rb: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/svn/cookbooks/gusztavvargadr_workstations_svn/recipes/tools.rb: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/core/cookbooks/gusztavvargadr_workstations_core/recipes/profiles.rb: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/nuget/cookbooks/gusztavvargadr_workstations_nuget/recipes/tools.rb: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/aws/cookbooks/gusztavvargadr_workstations_aws/recipes/requirements.rb: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/git/cookbooks/gusztavvargadr_workstations_git/recipes/requirements.rb: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/nuget/cookbooks/gusztavvargadr_workstations_nuget/recipes/requirements.rb: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/svn/cookbooks/gusztavvargadr_workstations_svn/recipes/requirements.rb: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/vagrant/cookbooks/gusztavvargadr_workstations_vagrant/recipes/tools.rb: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/vagrant/cookbooks/gusztavvargadr_workstations_vagrant/recipes/requirements.rb: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/sql/vagrant.yml: -------------------------------------------------------------------------------- 1 | core: 2 | includes: 3 | - components/core/core 4 | 5 | v17d: 6 | includes: 7 | - components/sql/core 8 | box: sql-server:2017-developer 9 | -------------------------------------------------------------------------------- /src/components/dockerc/cookbooks/gusztavvargadr_workstations_dockerc/recipes/tools.rb: -------------------------------------------------------------------------------- 1 | powershell_script 'Set service \'WinRM\' to \'Autostart\'' do 2 | code 'sc.exe config winrm start= auto' 3 | action :run 4 | end 5 | -------------------------------------------------------------------------------- /src/components/core/cookbooks/gusztavvargadr_workstations_core/test/integration/default/tools_files_hosts.rb: -------------------------------------------------------------------------------- 1 | file_path = '/Users/vagrant/AppData/Local/Temp/hosts' 2 | 3 | describe file(file_path) do 4 | it { should exist } 5 | end 6 | -------------------------------------------------------------------------------- /src/components/dockerc/cookbooks/gusztavvargadr_workstations_dockerc/recipes/requirements.rb: -------------------------------------------------------------------------------- 1 | powershell_script 'Set service \'WinRM\' to \'Autostart (Delayed)\'' do 2 | code 'sc.exe config winrm start= delayed-auto' 3 | action :run 4 | end 5 | -------------------------------------------------------------------------------- /src/stacks/dotnet/vagrant.yml: -------------------------------------------------------------------------------- 1 | core: 2 | includes: 3 | - components/vs/v19c 4 | - components/nuget/core 5 | 6 | library: 7 | includes: 8 | - stacks/dotnet/core 9 | 10 | web: 11 | includes: 12 | - stacks/dotnet/core 13 | -------------------------------------------------------------------------------- /src/components/core/cookbooks/gusztavvargadr_workstations_core/test/integration/default/requirements_features_telnet.rb: -------------------------------------------------------------------------------- 1 | executable_path = "#{ENV['windir']}/System32/telnet.exe" 2 | 3 | describe file(executable_path) do 4 | it { should exist } 5 | end 6 | -------------------------------------------------------------------------------- /src/components/os/cookbooks/gusztavvargadr_workstations_os/recipes/default.rb: -------------------------------------------------------------------------------- 1 | include_recipe 'gusztavvargadr_workstations_os::requirements' 2 | include_recipe 'gusztavvargadr_workstations_os::tools' 3 | include_recipe 'gusztavvargadr_workstations_os::profiles' 4 | -------------------------------------------------------------------------------- /src/components/aws/cookbooks/gusztavvargadr_workstations_aws/recipes/default.rb: -------------------------------------------------------------------------------- 1 | include_recipe 'gusztavvargadr_workstations_aws::requirements' 2 | include_recipe 'gusztavvargadr_workstations_aws::tools' 3 | include_recipe 'gusztavvargadr_workstations_aws::profiles' 4 | -------------------------------------------------------------------------------- /src/components/git/cookbooks/gusztavvargadr_workstations_git/recipes/default.rb: -------------------------------------------------------------------------------- 1 | include_recipe 'gusztavvargadr_workstations_git::requirements' 2 | include_recipe 'gusztavvargadr_workstations_git::tools' 3 | include_recipe 'gusztavvargadr_workstations_git::profiles' 4 | -------------------------------------------------------------------------------- /src/components/svn/cookbooks/gusztavvargadr_workstations_svn/recipes/default.rb: -------------------------------------------------------------------------------- 1 | include_recipe 'gusztavvargadr_workstations_svn::requirements' 2 | include_recipe 'gusztavvargadr_workstations_svn::tools' 3 | include_recipe 'gusztavvargadr_workstations_svn::profiles' 4 | -------------------------------------------------------------------------------- /src/components/core/cookbooks/gusztavvargadr_workstations_core/recipes/default.rb: -------------------------------------------------------------------------------- 1 | include_recipe 'gusztavvargadr_workstations_core::requirements' 2 | include_recipe 'gusztavvargadr_workstations_core::tools' 3 | include_recipe 'gusztavvargadr_workstations_core::profiles' 4 | -------------------------------------------------------------------------------- /src/components/core/cookbooks/gusztavvargadr_workstations_core/recipes/tools.rb: -------------------------------------------------------------------------------- 1 | options = node['gusztavvargadr_workstations_core'] 2 | return if options.nil? 3 | 4 | gusztavvargadr_workstations_core_tools '' do 5 | tools_options options['tools'] 6 | action :install 7 | end 8 | -------------------------------------------------------------------------------- /src/components/git/cookbooks/gusztavvargadr_workstations_git/test/integration/default/profiles_workspaces_github.rb: -------------------------------------------------------------------------------- 1 | repository_git_directory = '/Users/vagrant/Repos/github/gitignore/.git' 2 | 3 | describe directory(repository_git_directory) do 4 | it { should exist } 5 | end 6 | -------------------------------------------------------------------------------- /src/components/nuget/cookbooks/gusztavvargadr_workstations_nuget/recipes/default.rb: -------------------------------------------------------------------------------- 1 | include_recipe 'gusztavvargadr_workstations_nuget::requirements' 2 | include_recipe 'gusztavvargadr_workstations_nuget::tools' 3 | include_recipe 'gusztavvargadr_workstations_nuget::profiles' 4 | -------------------------------------------------------------------------------- /src/components/os/cookbooks/gusztavvargadr_workstations_os/test/integration/default/requirements_locales_user.rb: -------------------------------------------------------------------------------- 1 | query_script_code = '(Get-Culture).Name' 2 | value = 'en-GB' 3 | 4 | describe powershell(query_script_code) do 5 | its('stdout') { should include value } 6 | end 7 | -------------------------------------------------------------------------------- /src/components/vagrant/cookbooks/gusztavvargadr_workstations_vagrant/test/integration/default/profiles_boxes_ubuntu.rb: -------------------------------------------------------------------------------- 1 | query_script = 'vagrant box list' 2 | value = 'ubuntu/trusty32' 3 | 4 | describe powershell(query_script) do 5 | its('stdout') { should include value } 6 | end 7 | -------------------------------------------------------------------------------- /src/stacks/dotnetfx/vagrant.yml: -------------------------------------------------------------------------------- 1 | core: 2 | includes: 3 | - stacks/dotnet/core 4 | 5 | library: 6 | includes: 7 | - stacks/dotnetfx/core 8 | - stacks/dotnet/library 9 | 10 | web: 11 | includes: 12 | - stacks/dotnetfx/core 13 | - stacks/dotnet/web 14 | -------------------------------------------------------------------------------- /src/components/aws/cookbooks/gusztavvargadr_workstations_aws/recipes/profiles.rb: -------------------------------------------------------------------------------- 1 | options = node['gusztavvargadr_workstations_aws'] 2 | return if options.nil? 3 | 4 | gusztavvargadr_workstations_aws_profiles '' do 5 | profiles_options options['profiles'] 6 | action :create 7 | end 8 | -------------------------------------------------------------------------------- /src/components/dockerc/cookbooks/gusztavvargadr_workstations_dockerc/recipes/default.rb: -------------------------------------------------------------------------------- 1 | include_recipe 'gusztavvargadr_workstations_dockerc::requirements' 2 | include_recipe 'gusztavvargadr_workstations_dockerc::tools' 3 | include_recipe 'gusztavvargadr_workstations_dockerc::profiles' 4 | -------------------------------------------------------------------------------- /src/components/dockere/cookbooks/gusztavvargadr_workstations_dockere/recipes/default.rb: -------------------------------------------------------------------------------- 1 | include_recipe 'gusztavvargadr_workstations_dockere::requirements' 2 | include_recipe 'gusztavvargadr_workstations_dockere::tools' 3 | include_recipe 'gusztavvargadr_workstations_dockere::profiles' 4 | -------------------------------------------------------------------------------- /src/components/git/cookbooks/gusztavvargadr_workstations_git/recipes/profiles.rb: -------------------------------------------------------------------------------- 1 | options = node['gusztavvargadr_workstations_git'] 2 | return if options.nil? 3 | 4 | gusztavvargadr_workstations_git_profiles '' do 5 | profiles_options options['profiles'] 6 | action :create 7 | end 8 | -------------------------------------------------------------------------------- /src/components/os/cookbooks/gusztavvargadr_workstations_os/test/integration/default/requirements_locales_system.rb: -------------------------------------------------------------------------------- 1 | query_script_code = '(Get-WinSystemLocale).Name' 2 | value = 'en-GB' 3 | 4 | describe powershell(query_script_code) do 5 | its('stdout') { should include value } 6 | end 7 | -------------------------------------------------------------------------------- /src/components/svn/cookbooks/gusztavvargadr_workstations_svn/recipes/profiles.rb: -------------------------------------------------------------------------------- 1 | options = node['gusztavvargadr_workstations_svn'] 2 | return if options.nil? 3 | 4 | gusztavvargadr_workstations_svn_profiles '' do 5 | profiles_options options['profiles'] 6 | action :create 7 | end 8 | -------------------------------------------------------------------------------- /src/components/vagrant/cookbooks/gusztavvargadr_workstations_vagrant/recipes/default.rb: -------------------------------------------------------------------------------- 1 | include_recipe 'gusztavvargadr_workstations_vagrant::requirements' 2 | include_recipe 'gusztavvargadr_workstations_vagrant::tools' 3 | include_recipe 'gusztavvargadr_workstations_vagrant::profiles' 4 | -------------------------------------------------------------------------------- /src/components/vagrant/cookbooks/gusztavvargadr_workstations_vagrant/test/integration/default/profiles_plugins_reload.rb: -------------------------------------------------------------------------------- 1 | query_script = 'vagrant plugin list' 2 | value = 'vagrant-reload' 3 | 4 | describe powershell(query_script) do 5 | its('stdout') { should include value } 6 | end 7 | -------------------------------------------------------------------------------- /src/stacks/dotnetcore/vagrant.yml: -------------------------------------------------------------------------------- 1 | core: 2 | includes: 3 | - stacks/dotnet/core 4 | 5 | library: 6 | includes: 7 | - stacks/dotnetcore/core 8 | - stacks/dotnet/library 9 | 10 | web: 11 | includes: 12 | - stacks/dotnetcore/core 13 | - stacks/dotnet/web 14 | -------------------------------------------------------------------------------- /src/components/nuget/cookbooks/gusztavvargadr_workstations_nuget/recipes/profiles.rb: -------------------------------------------------------------------------------- 1 | options = node['gusztavvargadr_workstations_nuget'] 2 | return if options.nil? 3 | 4 | gusztavvargadr_workstations_nuget_profiles '' do 5 | profiles_options options['profiles'] 6 | action :create 7 | end 8 | -------------------------------------------------------------------------------- /src/components/svn/cookbooks/gusztavvargadr_workstations_svn/test/integration/default/profiles_workspaces_apache.rb: -------------------------------------------------------------------------------- 1 | repository_svn_directory = '/Users/vagrant/Repos/apache/asf/logging/log4net/trunk/.svn' 2 | 3 | describe directory(repository_svn_directory) do 4 | it { should exist } 5 | end 6 | -------------------------------------------------------------------------------- /src/components/svn/vagrant.yml: -------------------------------------------------------------------------------- 1 | core: 2 | includes: 3 | - components/core/core 4 | chef: 5 | cookbooks: 6 | - gusztavvargadr_workstations_svn 7 | json: 8 | gusztavvargadr_workstations_core: 9 | tools: 10 | chocolatey: 11 | svn: 12 | -------------------------------------------------------------------------------- /src/components/aws/vagrant.yml: -------------------------------------------------------------------------------- 1 | core: 2 | includes: 3 | - components/core/core 4 | chef: 5 | cookbooks: 6 | - gusztavvargadr_workstations_aws 7 | json: 8 | gusztavvargadr_workstations_core: 9 | tools: 10 | chocolatey: 11 | awscli: 12 | -------------------------------------------------------------------------------- /src/components/os/cookbooks/gusztavvargadr_workstations_os/recipes/requirements.rb: -------------------------------------------------------------------------------- 1 | options = node['gusztavvargadr_workstations_os'] 2 | return if options.nil? 3 | 4 | gusztavvargadr_workstations_os_requirements '' do 5 | requirements_options options['requirements'] 6 | action :ensure 7 | end 8 | -------------------------------------------------------------------------------- /src/components/os/cookbooks/gusztavvargadr_workstations_os/test/integration/default/requirements_locales_ui.rb: -------------------------------------------------------------------------------- 1 | query_script_code = '(Get-WinUserLanguageList)[0].LanguageTag' 2 | value = 'en-GB' 3 | 4 | describe powershell(query_script_code) do 5 | its('stdout') { should include value } 6 | end 7 | -------------------------------------------------------------------------------- /src/components/vs/vagrant.yml: -------------------------------------------------------------------------------- 1 | core: 2 | includes: 3 | - components/core/core 4 | 5 | v17c: 6 | includes: 7 | - components/vs/core 8 | box: visual-studio:2017-community 9 | 10 | v19c: 11 | includes: 12 | - components/vs/core 13 | box: visual-studio:2019-community 14 | -------------------------------------------------------------------------------- /src/components/dockerc/cookbooks/gusztavvargadr_workstations_dockerc/recipes/profiles.rb: -------------------------------------------------------------------------------- 1 | options = node['gusztavvargadr_workstations_dockerc'] 2 | return if options.nil? 3 | 4 | gusztavvargadr_workstations_dockerc_profiles '' do 5 | profiles_options options['profiles'] 6 | action :create 7 | end 8 | -------------------------------------------------------------------------------- /src/components/dockere/cookbooks/gusztavvargadr_workstations_dockere/recipes/profiles.rb: -------------------------------------------------------------------------------- 1 | options = node['gusztavvargadr_workstations_dockere'] 2 | return if options.nil? 3 | 4 | gusztavvargadr_workstations_dockere_profiles '' do 5 | profiles_options options['profiles'] 6 | action :create 7 | end 8 | -------------------------------------------------------------------------------- /src/components/vagrant/cookbooks/gusztavvargadr_workstations_vagrant/recipes/profiles.rb: -------------------------------------------------------------------------------- 1 | options = node['gusztavvargadr_workstations_vagrant'] 2 | return if options.nil? 3 | 4 | gusztavvargadr_workstations_vagrant_profiles '' do 5 | profiles_options options['profiles'] 6 | action :create 7 | end 8 | -------------------------------------------------------------------------------- /src/components/core/cookbooks/gusztavvargadr_workstations_core/recipes/requirements.rb: -------------------------------------------------------------------------------- 1 | options = node['gusztavvargadr_workstations_core'] 2 | return if options.nil? 3 | 4 | gusztavvargadr_workstations_core_requirements '' do 5 | requirements_options options['requirements'] 6 | action :ensure 7 | end 8 | -------------------------------------------------------------------------------- /src/components/aws/cookbooks/gusztavvargadr_workstations_aws/templates/credentials.erb: -------------------------------------------------------------------------------- 1 | <% @profiles.each do |profile_name, profile_options| %> 2 | [<%= profile_name %>] 3 | aws_access_key_id = <%= profile_options['access_key_id'] %> 4 | aws_secret_access_key = <%= profile_options['secret_access_key'] %> 5 | <% end %> 6 | -------------------------------------------------------------------------------- /src/components/core/cookbooks/gusztavvargadr_workstations_core/Berksfile: -------------------------------------------------------------------------------- 1 | directory = File.dirname(__FILE__) 2 | require "#{directory}/../../../../Berksfile.core" 3 | 4 | source 'https://supermarket.chef.io' 5 | 6 | gusztavvargadr_workstations_cookbook 'components', 'core' 7 | 8 | gusztavvargadr_cookbook 'windows' 9 | -------------------------------------------------------------------------------- /src/components/core/vagrant.yml: -------------------------------------------------------------------------------- 1 | core: 2 | includes: [] 3 | default: false 4 | provider: 5 | memory: 4096 6 | cpus: 2 7 | linked_clone: <%= !ENV['VAGRANT_LINKED_CLONE'].to_s.empty? %> 8 | chef: 9 | install: false 10 | cookbooks: 11 | - gusztavvargadr_workstations_core 12 | json: {} 13 | -------------------------------------------------------------------------------- /src/components/os/cookbooks/gusztavvargadr_workstations_os/test/integration/default/requirements_datetime_timezone.rb: -------------------------------------------------------------------------------- 1 | query_script_code = '([System.TimeZone]::CurrentTimeZone).StandardName' 2 | value = 'GMT Standard Time' 3 | 4 | describe powershell(query_script_code) do 5 | its('stdout') { should include value } 6 | end 7 | -------------------------------------------------------------------------------- /src/components/dockere/vagrant.yml: -------------------------------------------------------------------------------- 1 | core: 2 | includes: 3 | - components/core/core 4 | # chef: 5 | # cookbooks: 6 | # - gusztavvargadr_workstations_dockere 7 | # json: 8 | # gusztavvargadr_workstations_core: 9 | # requirements: 10 | # features: 11 | # Containers: 12 | -------------------------------------------------------------------------------- /src/components/nuget/NuGet.Config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/components/aws/cookbooks/gusztavvargadr_workstations_aws/templates/config.erb: -------------------------------------------------------------------------------- 1 | <% @profiles.each do |profile_name, profile_options| %> 2 | [profile <%= profile_name %>] 3 | <% profile_options.each do |profile_option_name, profile_option_value| %> 4 | <%= profile_option_name %> = <%= profile_option_value %> 5 | <% end %> 6 | <% end %> 7 | -------------------------------------------------------------------------------- /src/boxes/dummy.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "dummy", 3 | "versions": [ 4 | { 5 | "version": "0.1.0", 6 | "status": "active", 7 | "providers": [ 8 | { 9 | "name": "aws", 10 | "url": "https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box" 11 | } 12 | ] 13 | } 14 | ] 15 | } -------------------------------------------------------------------------------- /src/people/me/Vagrantfile: -------------------------------------------------------------------------------- 1 | directory = File.dirname(__FILE__) 2 | require "#{directory}/../../Vagrantfile.core" 3 | 4 | Vagrant.configure('2') do |config| 5 | gusztavvargadr_workstations_vm config, directory, 'work' 6 | gusztavvargadr_workstations_vm config, directory, 'playground' 7 | gusztavvargadr_workstations_vm config, directory, 'private' 8 | end 9 | -------------------------------------------------------------------------------- /src/components/os/cookbooks/gusztavvargadr_workstations_os/Berksfile: -------------------------------------------------------------------------------- 1 | directory = File.dirname(__FILE__) 2 | require "#{directory}/../../../../Berksfile.core" 3 | 4 | source 'https://supermarket.chef.io' 5 | 6 | gusztavvargadr_workstations_cookbook 'components', 'core' 7 | gusztavvargadr_workstations_cookbook 'components', 'os' 8 | 9 | gusztavvargadr_cookbook 'windows' 10 | -------------------------------------------------------------------------------- /src/components/svn/cookbooks/gusztavvargadr_workstations_svn/Berksfile: -------------------------------------------------------------------------------- 1 | directory = File.dirname(__FILE__) 2 | require "#{directory}/../../../Berksfile.core" 3 | 4 | source 'https://supermarket.chef.io' 5 | 6 | gusztavvargadr_workstations_cookbook 'components', 'core' 7 | gusztavvargadr_workstations_cookbook 'components', 'svn' 8 | 9 | gusztavvargadr_cookbook 'windows' 10 | -------------------------------------------------------------------------------- /src/components/vagrant/vagrant.yml: -------------------------------------------------------------------------------- 1 | core: 2 | includes: 3 | - components/core/core 4 | chef: 5 | cookbooks: 6 | - gusztavvargadr_workstations_vagrant 7 | json: 8 | gusztavvargadr_workstations_core: 9 | tools: 10 | chocolatey: 11 | vagrant: 12 | install: 13 | ignore-package-exit-codes: 14 | -------------------------------------------------------------------------------- /src/components/aws/cookbooks/gusztavvargadr_workstations_aws/Berksfile: -------------------------------------------------------------------------------- 1 | directory = File.dirname(__FILE__) 2 | require "#{directory}/../../../../Berksfile.core" 3 | 4 | source 'https://supermarket.chef.io' 5 | 6 | gusztavvargadr_workstations_cookbook 'components', 'core' 7 | gusztavvargadr_workstations_cookbook 'components', 'aws' 8 | 9 | gusztavvargadr_cookbook 'windows' 10 | -------------------------------------------------------------------------------- /src/components/git/cookbooks/gusztavvargadr_workstations_git/Berksfile: -------------------------------------------------------------------------------- 1 | directory = File.dirname(__FILE__) 2 | require "#{directory}/../../../../Berksfile.core" 3 | 4 | source 'https://supermarket.chef.io' 5 | 6 | gusztavvargadr_workstations_cookbook 'components', 'core' 7 | gusztavvargadr_workstations_cookbook 'components', 'git' 8 | 9 | gusztavvargadr_cookbook 'windows' 10 | -------------------------------------------------------------------------------- /src/components/dockere/cookbooks/gusztavvargadr_workstations_dockere/recipes/requirements.rb: -------------------------------------------------------------------------------- 1 | powershell_script 'Install \'docker\' module' do 2 | code <<-EOH 3 | Install-Module -Name DockerMsftProvider -Repository PSGallery -Force 4 | EOH 5 | action :run 6 | guard_interpreter :powershell_script 7 | not_if '(Get-Module -Name DockerMsftProvider -ListAvailable) -ne $null' 8 | end 9 | -------------------------------------------------------------------------------- /src/components/dockere/cookbooks/gusztavvargadr_workstations_dockere/recipes/tools.rb: -------------------------------------------------------------------------------- 1 | powershell_script 'Install \'docker\' package' do 2 | code <<-EOH 3 | Install-Package -Name docker -ProviderName DockerMsftProvider -Force 4 | EOH 5 | action :run 6 | guard_interpreter :powershell_script 7 | not_if '(Get-Package -Name docker -ProviderName DockerMsftProvider) -ne $null' 8 | end 9 | -------------------------------------------------------------------------------- /src/components/nuget/cookbooks/gusztavvargadr_workstations_nuget/Berksfile: -------------------------------------------------------------------------------- 1 | directory = File.dirname(__FILE__) 2 | require "#{directory}/../../../../Berksfile.core" 3 | 4 | source 'https://supermarket.chef.io' 5 | 6 | gusztavvargadr_workstations_cookbook 'components', 'core' 7 | gusztavvargadr_workstations_cookbook 'components', 'nuget' 8 | 9 | gusztavvargadr_cookbook 'windows' 10 | -------------------------------------------------------------------------------- /src/components/core/cookbooks/gusztavvargadr_workstations_core/metadata.rb: -------------------------------------------------------------------------------- 1 | name 'gusztavvargadr_workstations_core' 2 | maintainer 'Gusztav Varga' 3 | maintainer_email 'me@gusztavvargadr.me' 4 | license 'MIT' 5 | description 'Installs/Configures Core workstations' 6 | long_description 'Installs/Configures Core workstations' 7 | version '0.0.0' 8 | 9 | depends 'gusztavvargadr_windows' 10 | -------------------------------------------------------------------------------- /src/components/dockerc/cookbooks/gusztavvargadr_workstations_dockerc/Berksfile: -------------------------------------------------------------------------------- 1 | directory = File.dirname(__FILE__) 2 | require "#{directory}/../../../../Berksfile.core" 3 | 4 | source 'https://supermarket.chef.io' 5 | 6 | gusztavvargadr_workstations_cookbook 'components', 'core' 7 | gusztavvargadr_workstations_cookbook 'components', 'dockerc' 8 | 9 | gusztavvargadr_cookbook 'windows' 10 | -------------------------------------------------------------------------------- /src/components/dockere/cookbooks/gusztavvargadr_workstations_dockere/Berksfile: -------------------------------------------------------------------------------- 1 | directory = File.dirname(__FILE__) 2 | require "#{directory}/../../../../Berksfile.core" 3 | 4 | source 'https://supermarket.chef.io' 5 | 6 | gusztavvargadr_workstations_cookbook 'components', 'core' 7 | gusztavvargadr_workstations_cookbook 'components', 'dockere' 8 | 9 | gusztavvargadr_cookbook 'windows' 10 | -------------------------------------------------------------------------------- /src/components/vagrant/cookbooks/gusztavvargadr_workstations_vagrant/Berksfile: -------------------------------------------------------------------------------- 1 | directory = File.dirname(__FILE__) 2 | require "#{directory}/../../../../Berksfile.core" 3 | 4 | source 'https://supermarket.chef.io' 5 | 6 | gusztavvargadr_workstations_cookbook 'components', 'core' 7 | gusztavvargadr_workstations_cookbook 'components', 'vagrant' 8 | 9 | gusztavvargadr_cookbook 'windows' 10 | -------------------------------------------------------------------------------- /src/Berksfile.core.rb: -------------------------------------------------------------------------------- 1 | def gusztavvargadr_workstations_cookbook(type, name) 2 | cookbook "gusztavvargadr_workstations_#{name}", path: "#{File.dirname(__FILE__)}/#{type}/#{name}/cookbooks/gusztavvargadr_workstations_#{name}" 3 | end 4 | 5 | def gusztavvargadr_cookbook(name) 6 | cookbook "gusztavvargadr_#{name}", github: 'gusztavvargadr/chef', rel: "cookbooks/gusztavvargadr_#{name}", branch: '0.2.2' 7 | end 8 | -------------------------------------------------------------------------------- /src/components/os/cookbooks/gusztavvargadr_workstations_os/resources/requirements_datetime.rb: -------------------------------------------------------------------------------- 1 | property :requirements_datetime_options, Hash 2 | 3 | default_action :update 4 | 5 | action :update do 6 | return if new_resource.requirements_datetime_options.nil? 7 | 8 | gusztavvargadr_workstations_os_timezone new_resource.requirements_datetime_options['timezone'] do 9 | action :update 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /src/components/aws/cookbooks/gusztavvargadr_workstations_aws/resources/profiles.rb: -------------------------------------------------------------------------------- 1 | property :profiles_options, Hash 2 | 3 | default_action :create 4 | 5 | action :create do 6 | return if new_resource.profiles_options.nil? 7 | 8 | gusztavvargadr_workstations_aws_profiles_workspaces '' do 9 | profiles_workspaces_options new_resource.profiles_options['workspaces'] 10 | action :create 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /src/components/dockerc/cookbooks/gusztavvargadr_workstations_dockerc/resources/profiles.rb: -------------------------------------------------------------------------------- 1 | property :profiles_options, Hash 2 | 3 | default_action :create 4 | 5 | action :create do 6 | return if new_resource.profiles_options.nil? 7 | 8 | gusztavvargadr_workstations_dockerc_profiles_images '' do 9 | profiles_images_options new_resource.profiles_options['images'] 10 | action :pull 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /src/components/dockere/cookbooks/gusztavvargadr_workstations_dockere/resources/profiles.rb: -------------------------------------------------------------------------------- 1 | property :profiles_options, Hash 2 | 3 | default_action :create 4 | 5 | action :create do 6 | return if new_resource.profiles_options.nil? 7 | 8 | gusztavvargadr_workstations_dockere_profiles_images '' do 9 | profiles_images_options new_resource.profiles_options['images'] 10 | action :pull 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /src/components/git/cookbooks/gusztavvargadr_workstations_git/resources/profiles.rb: -------------------------------------------------------------------------------- 1 | property :profiles_options, Hash 2 | 3 | default_action :create 4 | 5 | action :create do 6 | return if new_resource.profiles_options.nil? 7 | 8 | gusztavvargadr_workstations_git_profiles_workspaces '' do 9 | profiles_workspaces_options new_resource.profiles_options['workspaces'] 10 | action :create 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /src/components/svn/cookbooks/gusztavvargadr_workstations_svn/resources/profiles.rb: -------------------------------------------------------------------------------- 1 | property :profiles_options, Hash 2 | 3 | default_action :create 4 | 5 | action :create do 6 | return if new_resource.profiles_options.nil? 7 | 8 | gusztavvargadr_workstations_svn_profiles_workspaces '' do 9 | profiles_workspaces_options new_resource.profiles_options['workspaces'] 10 | action :create 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /src/components/nuget/cookbooks/gusztavvargadr_workstations_nuget/resources/profiles.rb: -------------------------------------------------------------------------------- 1 | property :profiles_options, Hash 2 | 3 | default_action :create 4 | 5 | action :create do 6 | return if new_resource.profiles_options.nil? 7 | 8 | gusztavvargadr_workstations_nuget_profiles_workspaces '' do 9 | profiles_workspaces_options new_resource.profiles_options['workspaces'] 10 | action :create 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /src/components/os/cookbooks/gusztavvargadr_workstations_os/metadata.rb: -------------------------------------------------------------------------------- 1 | name 'gusztavvargadr_workstations_os' 2 | maintainer 'Gusztav Varga' 3 | maintainer_email 'me@gusztavvargadr.me' 4 | license 'MIT' 5 | description 'Installs/Configures OS workstations' 6 | long_description 'Installs/Configures OS workstations' 7 | version '0.0.0' 8 | 9 | depends 'gusztavvargadr_workstations_core' 10 | 11 | depends 'gusztavvargadr_windows' 12 | -------------------------------------------------------------------------------- /src/components/aws/cookbooks/gusztavvargadr_workstations_aws/metadata.rb: -------------------------------------------------------------------------------- 1 | name 'gusztavvargadr_workstations_aws' 2 | maintainer 'Gusztav Varga' 3 | maintainer_email 'me@gusztavvargadr.me' 4 | license 'MIT' 5 | description 'Installs/Configures AWS workstations' 6 | long_description 'Installs/Configures AWS workstations' 7 | version '0.0.0' 8 | 9 | depends 'gusztavvargadr_workstations_core' 10 | 11 | depends 'gusztavvargadr_windows' 12 | -------------------------------------------------------------------------------- /src/components/git/cookbooks/gusztavvargadr_workstations_git/metadata.rb: -------------------------------------------------------------------------------- 1 | name 'gusztavvargadr_workstations_git' 2 | maintainer 'Gusztav Varga' 3 | maintainer_email 'me@gusztavvargadr.me' 4 | license 'MIT' 5 | description 'Installs/Configures Git workstations' 6 | long_description 'Installs/Configures Git workstations' 7 | version '0.0.0' 8 | 9 | depends 'gusztavvargadr_workstations_core' 10 | 11 | depends 'gusztavvargadr_windows' 12 | -------------------------------------------------------------------------------- /src/components/svn/cookbooks/gusztavvargadr_workstations_svn/metadata.rb: -------------------------------------------------------------------------------- 1 | name 'gusztavvargadr_workstations_svn' 2 | maintainer 'Gusztav Varga' 3 | maintainer_email 'me@gusztavvargadr.me' 4 | license 'MIT' 5 | description 'Installs/Configures SVN workstations' 6 | long_description 'Installs/Configures SVN workstations' 7 | version '0.0.0' 8 | 9 | depends 'gusztavvargadr_workstations_core' 10 | 11 | depends 'gusztavvargadr_windows' 12 | -------------------------------------------------------------------------------- /src/components/vagrant/cookbooks/gusztavvargadr_workstations_vagrant/resources/plugin.rb: -------------------------------------------------------------------------------- 1 | property :plugin_name, String, name_property: true 2 | property :plugin_options, Hash 3 | 4 | default_action :install 5 | 6 | action :install do 7 | powershell_script "Install plugin '#{new_resource.plugin_name}'" do 8 | code <<-EOH 9 | vagrant plugin install #{new_resource.plugin_name} 10 | EOH 11 | action :run 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /src/components/nuget/cookbooks/gusztavvargadr_workstations_nuget/metadata.rb: -------------------------------------------------------------------------------- 1 | name 'gusztavvargadr_workstations_nuget' 2 | maintainer 'Gusztav Varga' 3 | maintainer_email 'me@gusztavvargadr.me' 4 | license 'MIT' 5 | description 'Installs/Configures NuGet workstations' 6 | long_description 'Installs/Configures NuGet workstations' 7 | version '0.0.0' 8 | 9 | depends 'gusztavvargadr_workstations_core' 10 | 11 | depends 'gusztavvargadr_windows' 12 | -------------------------------------------------------------------------------- /src/components/nuget/cookbooks/gusztavvargadr_workstations_nuget/test/integration/default/profiles_workspaces_dotnet.rb: -------------------------------------------------------------------------------- 1 | source_query_script_code = 'NuGet sources List' 2 | source_name = 'aspnetcore-dev' 3 | source_address = 'https://dotnet.myget.org/F/aspnetcore-dev/api/v3/index.json' 4 | 5 | describe powershell(source_query_script_code) do 6 | its('stdout') { should include source_name } 7 | its('stdout') { should include source_address } 8 | end 9 | -------------------------------------------------------------------------------- /src/components/nuget/vagrant.yml: -------------------------------------------------------------------------------- 1 | core: 2 | includes: 3 | - components/core/core 4 | chef: 5 | cookbooks: 6 | - gusztavvargadr_workstations_nuget 7 | json: 8 | gusztavvargadr_workstations_core: 9 | tools: 10 | chocolatey: 11 | nuget.commandline: 12 | files: 13 | file:///vagrant-workstations/src/components/nuget/NuGet.Config: /Users/vagrant/AppData/Roaming/NuGet/NuGet.Config 14 | -------------------------------------------------------------------------------- /src/components/vagrant/cookbooks/gusztavvargadr_workstations_vagrant/metadata.rb: -------------------------------------------------------------------------------- 1 | name 'gusztavvargadr_workstations_vagrant' 2 | maintainer 'Gusztav Varga' 3 | maintainer_email 'me@gusztavvargadr.me' 4 | license 'MIT' 5 | description 'Installs/Configures Vagrant workstations' 6 | long_description 'Installs/Configures Vagrant workstations' 7 | version '0.0.0' 8 | 9 | depends 'gusztavvargadr_workstations_core' 10 | 11 | depends 'gusztavvargadr_windows' 12 | -------------------------------------------------------------------------------- /src/components/os/cookbooks/gusztavvargadr_workstations_os/resources/timezone.rb: -------------------------------------------------------------------------------- 1 | property :timezone_name, String, name_property: true 2 | 3 | default_action :update 4 | 5 | action :update do 6 | return if new_resource.timezone_name.to_s.empty? 7 | 8 | powershell_script "Update time zone to #{new_resource.timezone_name}" do 9 | code <<-EOH 10 | Set-TimeZone -Id "#{new_resource.timezone_name}" 11 | EOH 12 | action :run 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /src/components/dockerc/cookbooks/gusztavvargadr_workstations_dockerc/metadata.rb: -------------------------------------------------------------------------------- 1 | name 'gusztavvargadr_workstations_dockerc' 2 | maintainer 'Gusztav Varga' 3 | maintainer_email 'me@gusztavvargadr.me' 4 | license 'MIT' 5 | description 'Installs/Configures Docker Community workstations' 6 | long_description 'Installs/Configures Docker Community workstations' 7 | version '0.0.0' 8 | 9 | depends 'gusztavvargadr_workstations_core' 10 | 11 | depends 'gusztavvargadr_windows' 12 | -------------------------------------------------------------------------------- /src/components/os/cookbooks/gusztavvargadr_workstations_os/resources/user_locale.rb: -------------------------------------------------------------------------------- 1 | property :locale_name, String, name_property: true 2 | 3 | default_action :update 4 | 5 | action :update do 6 | return if new_resource.locale_name.to_s.empty? 7 | 8 | powershell_script "Update user locale to #{new_resource.locale_name}" do 9 | code <<-EOH 10 | Set-Culture -CultureInfo "#{new_resource.locale_name}" 11 | EOH 12 | action :run 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /src/components/dockere/cookbooks/gusztavvargadr_workstations_dockere/metadata.rb: -------------------------------------------------------------------------------- 1 | name 'gusztavvargadr_workstations_dockere' 2 | maintainer 'Gusztav Varga' 3 | maintainer_email 'me@gusztavvargadr.me' 4 | license 'MIT' 5 | description 'Installs/Configures Docker Enterprise workstations' 6 | long_description 'Installs/Configures Docker Enterprise workstations' 7 | version '0.0.0' 8 | 9 | depends 'gusztavvargadr_workstations_core' 10 | 11 | depends 'gusztavvargadr_windows' 12 | -------------------------------------------------------------------------------- /src/components/vagrant/cookbooks/gusztavvargadr_workstations_vagrant/resources/profiles_boxes.rb: -------------------------------------------------------------------------------- 1 | property :profiles_boxes_options, Hash 2 | 3 | default_action :add 4 | 5 | action :add do 6 | return if new_resource.profiles_boxes_options.nil? 7 | 8 | new_resource.profiles_boxes_options.each do |box_name, box_options| 9 | gusztavvargadr_workstations_vagrant_box box_name do 10 | box_options box_options 11 | action :add 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /src/components/aws/cookbooks/gusztavvargadr_workstations_aws/test/integration/default/profiles_workspaces_default.rb: -------------------------------------------------------------------------------- 1 | query_script = 'aws configure list' 2 | access_key_id_value = '*y_id' 3 | secret_access_key_value = '*_key' 4 | region_value = 'us-east-1' 5 | 6 | describe powershell(query_script) do 7 | its('stdout') { should include access_key_id_value } 8 | its('stdout') { should include secret_access_key_value } 9 | its('stdout') { should include region_value } 10 | end 11 | -------------------------------------------------------------------------------- /src/components/os/cookbooks/gusztavvargadr_workstations_os/resources/system_locale.rb: -------------------------------------------------------------------------------- 1 | property :locale_name, String, name_property: true 2 | 3 | default_action :update 4 | 5 | action :update do 6 | return if new_resource.locale_name.to_s.empty? 7 | 8 | powershell_script "Update system locale to #{new_resource.locale_name}" do 9 | code <<-EOH 10 | Set-WinSystemLocale -SystemLocale "#{new_resource.locale_name}" 11 | EOH 12 | action :run 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /src/Vagrantfile.kitchen.rb: -------------------------------------------------------------------------------- 1 | Vagrant.configure('2') do |config| 2 | config.vm.provider 'hyperv' do |h, override| 3 | h.memory = 4096 4 | h.cpus = 2 5 | h.enable_virtualization_extensions = true 6 | h.differencing_disk = true 7 | override.vm.network 'private_network', bridge: ENV['VAGRANT_NETWORK_BRIDGE'] 8 | end 9 | 10 | config.vm.provider 'virtualbox' do |vb| 11 | vb.memory = 4096 12 | vb.cpus = 2 13 | vb.linked_clone = true 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /src/components/dockerc/cookbooks/gusztavvargadr_workstations_dockerc/resources/profiles_images.rb: -------------------------------------------------------------------------------- 1 | property :profiles_images_options, Hash 2 | 3 | default_action :pull 4 | 5 | action :pull do 6 | return if new_resource.profiles_images_options.nil? 7 | 8 | new_resource.profiles_images_options.each do |image_name, image_options| 9 | gusztavvargadr_workstations_dockerc_image image_name do 10 | image_options image_options 11 | action :pull 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /src/components/dockere/cookbooks/gusztavvargadr_workstations_dockere/resources/profiles_images.rb: -------------------------------------------------------------------------------- 1 | property :profiles_images_options, Hash 2 | 3 | default_action :pull 4 | 5 | action :pull do 6 | return if new_resource.profiles_images_options.nil? 7 | 8 | new_resource.profiles_images_options.each do |image_name, image_options| 9 | gusztavvargadr_workstations_dockere_image image_name do 10 | image_options image_options 11 | action :pull 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /src/components/vagrant/cookbooks/gusztavvargadr_workstations_vagrant/resources/profiles_plugins.rb: -------------------------------------------------------------------------------- 1 | property :profiles_plugins_options, Hash 2 | 3 | default_action :install 4 | 5 | action :install do 6 | return if new_resource.profiles_plugins_options.nil? 7 | 8 | new_resource.profiles_plugins_options.each do |plugin_name, plugin_options| 9 | gusztavvargadr_workstations_vagrant_plugin plugin_name do 10 | plugin_options plugin_options 11 | action :install 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /src/components/git/cookbooks/gusztavvargadr_workstations_git/resources/profiles_workspaces.rb: -------------------------------------------------------------------------------- 1 | property :profiles_workspaces_options, Hash 2 | 3 | default_action :create 4 | 5 | action :create do 6 | return if new_resource.profiles_workspaces_options.nil? 7 | 8 | new_resource.profiles_workspaces_options.each do |workspace_name, workspace_options| 9 | gusztavvargadr_workstations_git_workspace workspace_name do 10 | workspace_options workspace_options 11 | action :create 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /src/components/git/vagrant.yml: -------------------------------------------------------------------------------- 1 | core: 2 | includes: 3 | - components/core/core 4 | chef: 5 | cookbooks: 6 | - gusztavvargadr_workstations_git 7 | json: 8 | gusztavvargadr_workstations_core: 9 | tools: 10 | chocolatey: 11 | git: 12 | install: 13 | package-parameters: "'/GitAndUnixToolsOnPath /NoShellIntegration'" 14 | files: 15 | file:///vagrant-workstations/src/components/git/.gitconfig: /Users/vagrant/.gitconfig 16 | -------------------------------------------------------------------------------- /src/components/svn/cookbooks/gusztavvargadr_workstations_svn/resources/profiles_workspaces.rb: -------------------------------------------------------------------------------- 1 | property :profiles_workspaces_options, Hash 2 | 3 | default_action :create 4 | 5 | action :create do 6 | return if new_resource.profiles_workspaces_options.nil? 7 | 8 | new_resource.profiles_workspaces_options.each do |workspace_name, workspace_options| 9 | gusztavvargadr_workstations_svn_workspace workspace_name do 10 | workspace_options workspace_options 11 | action :create 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /src/components/nuget/cookbooks/gusztavvargadr_workstations_nuget/resources/profiles_workspaces.rb: -------------------------------------------------------------------------------- 1 | property :profiles_workspaces_options, Hash 2 | 3 | default_action :create 4 | 5 | action :create do 6 | return if new_resource.profiles_workspaces_options.nil? 7 | 8 | new_resource.profiles_workspaces_options.each do |workspace_name, workspace_options| 9 | gusztavvargadr_workstations_nuget_workspace workspace_name do 10 | workspace_options workspace_options 11 | action :create 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /src/components/os/cookbooks/gusztavvargadr_workstations_os/resources/ui_locale.rb: -------------------------------------------------------------------------------- 1 | property :locale_name, String, name_property: true 2 | 3 | default_action :update 4 | 5 | action :update do 6 | return if new_resource.locale_name.to_s.empty? 7 | 8 | powershell_script "Update UI locale to #{new_resource.locale_name}" do 9 | code <<-EOH 10 | $languageList = New-WinUserLanguageList "#{new_resource.locale_name}" 11 | Set-WinUserLanguageList $languageList -Force 12 | Set-WinUILanguageOverride 13 | EOH 14 | action :run 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /src/components/core/cookbooks/gusztavvargadr_workstations_core/resources/environment_variable.rb: -------------------------------------------------------------------------------- 1 | property :environment_variable_name, String, name_property: true 2 | property :environment_variable_value, String 3 | 4 | default_action :update 5 | 6 | action :update do 7 | powershell_script "Update environment variable '#{new_resource.environment_variable_name}'" do 8 | code <<-EOH 9 | [Environment]::SetEnvironmentVariable("#{new_resource.environment_variable_name}", "#{new_resource.environment_variable_value}", "User") 10 | EOH 11 | action :run 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /src/components/vagrant/cookbooks/gusztavvargadr_workstations_vagrant/resources/profiles.rb: -------------------------------------------------------------------------------- 1 | property :profiles_options, Hash 2 | 3 | default_action :create 4 | 5 | action :create do 6 | return if new_resource.profiles_options.nil? 7 | 8 | gusztavvargadr_workstations_vagrant_profiles_plugins '' do 9 | profiles_plugins_options new_resource.profiles_options['plugins'] 10 | action :install 11 | end 12 | 13 | gusztavvargadr_workstations_vagrant_profiles_boxes '' do 14 | profiles_boxes_options new_resource.profiles_options['boxes'] 15 | action :add 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /src/components/core/cookbooks/gusztavvargadr_workstations_core/resources/requirements_environment.rb: -------------------------------------------------------------------------------- 1 | property :requirements_environment_options, Hash 2 | 3 | default_action :update 4 | 5 | action :update do 6 | return if new_resource.requirements_environment_options.nil? 7 | 8 | new_resource.requirements_environment_options.each do |environment_variable_name, environment_variable_value| 9 | gusztavvargadr_workstations_core_environment_variable environment_variable_name do 10 | environment_variable_value environment_variable_value 11 | action :update 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /src/components/core/cookbooks/gusztavvargadr_workstations_core/resources/tools_files.rb: -------------------------------------------------------------------------------- 1 | property :tools_files_options, Hash 2 | 3 | default_action :create 4 | 5 | action :create do 6 | return if new_resource.tools_files_options.nil? 7 | 8 | new_resource.tools_files_options.each do |source_file, target_file| 9 | target_directory = ::File.dirname(target_file) 10 | 11 | directory target_directory do 12 | recursive true 13 | action :create 14 | end 15 | 16 | remote_file target_file do 17 | source source_file 18 | action :create 19 | end 20 | end 21 | end 22 | -------------------------------------------------------------------------------- /src/projects/github/vagrant.yml: -------------------------------------------------------------------------------- 1 | core: 2 | includes: 3 | - components/git/core 4 | chef: 5 | json: 6 | gusztavvargadr_workstations_git: 7 | profiles: 8 | workspaces: 9 | github: 10 | address: https://github.com/github 11 | directory: /Users/vagrant/Repos/github 12 | 13 | git: 14 | includes: 15 | - projects/github/core 16 | chef: 17 | json: 18 | gusztavvargadr_workstations_git: 19 | profiles: 20 | workspaces: 21 | github: 22 | repositories: 23 | gitignore: 24 | -------------------------------------------------------------------------------- /src/components/os/vagrant.yml: -------------------------------------------------------------------------------- 1 | core: 2 | includes: 3 | - components/core/core 4 | chef: 5 | cookbooks: 6 | - gusztavvargadr_workstations_os 7 | json: 8 | gusztavvargadr_workstations_os: 9 | requirements: 10 | locales: 11 | system: en-US 12 | ui: en-US 13 | user: en-US 14 | datetime: 15 | timezone: UTC 16 | 17 | windows-10: 18 | includes: 19 | - components/os/core 20 | box: windows-10:1903-enterprise 21 | 22 | windows-server: 23 | includes: 24 | - components/os/core 25 | box: windows-server:1809-standard 26 | -------------------------------------------------------------------------------- /src/people/me/Berksfile: -------------------------------------------------------------------------------- 1 | directory = File.dirname(__FILE__) 2 | require "#{directory}/../../Berksfile.core" 3 | 4 | source 'https://supermarket.chef.io' 5 | 6 | gusztavvargadr_workstations_cookbook 'components', 'core' 7 | gusztavvargadr_workstations_cookbook 'components', 'os' 8 | gusztavvargadr_workstations_cookbook 'components', 'nuget' 9 | gusztavvargadr_workstations_cookbook 'components', 'vagrant' 10 | gusztavvargadr_workstations_cookbook 'components', 'aws' 11 | gusztavvargadr_workstations_cookbook 'components', 'git' 12 | gusztavvargadr_workstations_cookbook 'components', 'svn' 13 | 14 | gusztavvargadr_cookbook 'windows' 15 | -------------------------------------------------------------------------------- /src/components/core/cookbooks/gusztavvargadr_workstations_core/resources/requirements.rb: -------------------------------------------------------------------------------- 1 | property :requirements_options, Hash 2 | 3 | default_action :ensure 4 | 5 | action :ensure do 6 | return if new_resource.requirements_options.nil? 7 | 8 | gusztavvargadr_workstations_core_requirements_environment '' do 9 | requirements_environment_options new_resource.requirements_options['environment'] 10 | action :update 11 | end 12 | 13 | gusztavvargadr_workstations_core_requirements_features '' do 14 | requirements_features_options new_resource.requirements_options['features'] 15 | action :enable 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /src/components/core/cookbooks/gusztavvargadr_workstations_core/resources/requirements_features.rb: -------------------------------------------------------------------------------- 1 | property :requirements_features_options, Hash 2 | 3 | default_action :enable 4 | 5 | action :enable do 6 | return if new_resource.requirements_features_options.nil? 7 | 8 | new_resource.requirements_features_options.each do |feature_name, feature_options| 9 | powershell_script "Enable Windows Feature '#{feature_name}'" do 10 | code <<-EOH 11 | DISM.exe /Online /Enable-Feature /FeatureName:#{feature_name} /All /NoRestart 12 | EOH 13 | returns [0, 3010] 14 | action :run 15 | end 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /src/projects/aspnet/vagrant.yml: -------------------------------------------------------------------------------- 1 | core: 2 | includes: 3 | - components/git/core 4 | chef: 5 | json: 6 | gusztavvargadr_workstations_git: 7 | profiles: 8 | workspaces: 9 | aspnet: 10 | address: https://github.com/aspnet 11 | directory: /Users/vagrant/Repos/aspnet 12 | 13 | logging: 14 | includes: 15 | - projects/aspnet/core 16 | - stacks/dotnetcore/library 17 | chef: 18 | json: 19 | gusztavvargadr_workstations_git: 20 | profiles: 21 | workspaces: 22 | aspnet: 23 | repositories: 24 | Logging: 25 | directory: logging 26 | -------------------------------------------------------------------------------- /src/components/os/cookbooks/gusztavvargadr_workstations_os/resources/requirements_locales.rb: -------------------------------------------------------------------------------- 1 | property :requirements_locales_options, Hash 2 | 3 | default_action :update 4 | 5 | action :update do 6 | return if new_resource.requirements_locales_options.nil? 7 | 8 | gusztavvargadr_workstations_os_system_locale new_resource.requirements_locales_options['system'] do 9 | action :update 10 | end 11 | 12 | gusztavvargadr_workstations_os_ui_locale new_resource.requirements_locales_options['ui'] do 13 | action :update 14 | end 15 | 16 | gusztavvargadr_workstations_os_user_locale new_resource.requirements_locales_options['user'] do 17 | action :update 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /src/projects/apache/vagrant.yml: -------------------------------------------------------------------------------- 1 | core: 2 | includes: 3 | - components/svn/core 4 | chef: 5 | json: 6 | gusztavvargadr_workstations_svn: 7 | profiles: 8 | workspaces: 9 | apache: 10 | address: http://svn.apache.org/repos 11 | directory: /Users/vagrant/Repos/apache 12 | 13 | log4net: 14 | includes: 15 | - projects/apache/core 16 | - stacks/dotnetfx/library 17 | chef: 18 | json: 19 | gusztavvargadr_workstations_svn: 20 | profiles: 21 | workspaces: 22 | apache: 23 | repositories: 24 | asf/logging/log4net/trunk: 25 | directory: log4net 26 | -------------------------------------------------------------------------------- /src/components/core/cookbooks/gusztavvargadr_workstations_core/resources/tools.rb: -------------------------------------------------------------------------------- 1 | property :tools_options, Hash 2 | 3 | default_action :install 4 | 5 | action :install do 6 | return if new_resource.tools_options.nil? 7 | 8 | gusztavvargadr_workstations_core_tools_chocolatey '' do 9 | tools_chocolatey_options new_resource.tools_options['chocolatey'] 10 | action :install 11 | end 12 | 13 | gusztavvargadr_workstations_core_tools_windows '' do 14 | tools_windows_options new_resource.tools_options['windows'] 15 | action :install 16 | end 17 | 18 | gusztavvargadr_workstations_core_tools_files '' do 19 | tools_files_options new_resource.tools_options['files'] 20 | action :create 21 | end 22 | end 23 | -------------------------------------------------------------------------------- /src/stacks/sql/vagrant.yml: -------------------------------------------------------------------------------- 1 | core: 2 | includes: 3 | - components/sql/core 4 | 5 | management: 6 | includes: 7 | - stacks/sql/core 8 | chef: 9 | json: 10 | gusztavvargadr_workstations_core: 11 | tools: 12 | windows: 13 | SQL Server Management Studio 17: 14 | source: https://download.microsoft.com/download/5/0/B/50B02ECB-CB5C-4C23-A1D3-DAB4467604DA/SSMS-Setup-ENU.exe 15 | install: 16 | - /install 17 | - /quiet 18 | - /norestart 19 | directory: /Program Files (x86)/Microsoft SQL Server/140/Tools/Binn/ManagementStudio 20 | 21 | engine: 22 | includes: 23 | - stacks/sql/core 24 | - components/sql/v17d 25 | -------------------------------------------------------------------------------- /src/components/os/cookbooks/gusztavvargadr_workstations_os/resources/requirements.rb: -------------------------------------------------------------------------------- 1 | property :requirements_options, Hash 2 | 3 | default_action :ensure 4 | 5 | action :ensure do 6 | return if new_resource.requirements_options.nil? 7 | 8 | gusztavvargadr_workstations_core_requirements '' do 9 | requirements_options new_resource.requirements_options 10 | action :ensure 11 | end 12 | 13 | gusztavvargadr_workstations_os_requirements_locales '' do 14 | requirements_locales_options new_resource.requirements_options['locales'] 15 | action :update 16 | end 17 | 18 | gusztavvargadr_workstations_os_requirements_datetime '' do 19 | requirements_datetime_options new_resource.requirements_options['datetime'] 20 | action :update 21 | end 22 | end 23 | -------------------------------------------------------------------------------- /src/people/me/vagrant.yml: -------------------------------------------------------------------------------- 1 | work: 2 | includes: 3 | - components/os/windows-server 4 | - projects/github/git 5 | - projects/aspnet/logging 6 | - projects/identityserver/v4 7 | - projects/apache/log4net 8 | - projects/identityserver/v3 9 | default: true 10 | 11 | playground: 12 | includes: 13 | - components/os/windows-server 14 | - components/git/core 15 | - components/svn/core 16 | - stacks/dotnetcore/library 17 | - stacks/dotnetcore/web 18 | - stacks/dotnetfx/library 19 | - stacks/dotnetfx/web 20 | - stacks/infrastructure/aws 21 | chef: 22 | json: 23 | gusztavvargadr_workstations_vagrant: 24 | profiles: 25 | boxes: 26 | ubuntu/trusty32: 27 | 28 | private: 29 | includes: 30 | - components/os/windows-10 31 | -------------------------------------------------------------------------------- /src/components/os/cookbooks/gusztavvargadr_workstations_os/.kitchen.yml: -------------------------------------------------------------------------------- 1 | --- 2 | driver: 3 | name: vagrant 4 | vagrantfiles: 5 | - ../../../../Vagrantfile.kitchen 6 | 7 | provisioner: 8 | name: chef_solo 9 | 10 | verifier: 11 | name: inspec 12 | 13 | platforms: 14 | - name: w 15 | transport: 16 | name: winrm 17 | driver: 18 | box: gusztavvargadr/w16s 19 | 20 | suites: 21 | - name: default 22 | run_list: 23 | - recipe[gusztavvargadr_workstations_core::default] 24 | - recipe[gusztavvargadr_workstations_os::default] 25 | attributes: 26 | gusztavvargadr_workstations_os: 27 | requirements: 28 | locales: 29 | system: en-GB 30 | ui: en-GB 31 | user: en-GB 32 | datetime: 33 | timezone: GMT Standard Time 34 | -------------------------------------------------------------------------------- /src/components/dockere/cookbooks/gusztavvargadr_workstations_dockere/.kitchen.yml: -------------------------------------------------------------------------------- 1 | driver: 2 | name: vagrant 3 | vagrantfiles: 4 | - ../../../../Vagrantfile.kitchen 5 | 6 | provisioner: 7 | name: chef_solo 8 | 9 | verifier: 10 | name: inspec 11 | 12 | platforms: 13 | - name: w 14 | transport: 15 | name: winrm 16 | driver: 17 | box: gusztavvargadr/w16s 18 | 19 | suites: 20 | - name: default 21 | run_list: 22 | - recipe[gusztavvargadr_workstations_core::default] 23 | - recipe[gusztavvargadr_workstations_dockere::default] 24 | attributes: 25 | gusztavvargadr_workstations_core: 26 | requirements: 27 | features: 28 | Containers: 29 | gusztavvargadr_workstations_dockere: 30 | profiles: 31 | images: 32 | hello-world:nanoserver: 33 | -------------------------------------------------------------------------------- /src/components/dockerc/vagrant.yml: -------------------------------------------------------------------------------- 1 | core: 2 | includes: 3 | - components/core/core 4 | # chef: 5 | # cookbooks: 6 | # - gusztavvargadr_workstations_dockerc 7 | # json: 8 | # gusztavvargadr_workstations_core: 9 | # requirements: 10 | # features: 11 | # Microsoft-Hyper-V: 12 | # Microsoft-Hyper-V-Management-Clients: 13 | # Microsoft-Hyper-V-Management-PowerShell: 14 | # RSAT-Hyper-V-Tools-Feature: 15 | # Containers: 16 | # tools: 17 | # windows: 18 | # Docker for Windows (Edge): 19 | # source: https://download.docker.com/win/edge/Docker%20for%20Windows%20Installer.exe 20 | # install: 21 | # - install 22 | # - --quiet 23 | # directory: /Program Files/Docker 24 | -------------------------------------------------------------------------------- /src/stacks/infrastructure/vagrant.yml: -------------------------------------------------------------------------------- 1 | core: 2 | includes: 3 | - components/vagrant/core 4 | chef: 5 | json: 6 | gusztavvargadr_workstations_core: 7 | tools: 8 | chocolatey: 9 | chefdk: 10 | gusztavvargadr_workstations_vagrant: 11 | profiles: 12 | plugins: 13 | vagrant-reload: 14 | vagrant-berkshelf: 15 | 16 | aws: 17 | includes: 18 | - stacks/infrastructure/core 19 | - components/aws/core 20 | chef: 21 | json: 22 | gusztavvargadr_workstations_core: 23 | tools: 24 | chocolatey: 25 | terraform: 26 | packer: 27 | gusztavvargadr_workstations_vagrant: 28 | profiles: 29 | plugins: 30 | # vagrant-aws: 31 | boxes: 32 | dummy: 33 | address: file:///vagrant-workstations/src/boxes/dummy.json 34 | -------------------------------------------------------------------------------- /src/components/vagrant/cookbooks/gusztavvargadr_workstations_vagrant/resources/box.rb: -------------------------------------------------------------------------------- 1 | property :box_name, String, name_property: true 2 | property :box_options, Hash 3 | 4 | default_action :add 5 | 6 | action :add do 7 | box_address = !new_resource.box_options.nil? ? new_resource.box_options['address'] : nil 8 | 9 | powershell_script_code = 'vagrant box add' 10 | if box_address.nil? 11 | powershell_script_code = "#{powershell_script_code} #{new_resource.box_name}" 12 | else 13 | powershell_script_code = "#{powershell_script_code} #{box_address} --name #{new_resource.box_name}" 14 | end 15 | powershell_script_guard = "((vagrant box list) | Out-String).Contains(\"#{new_resource.box_name}\")" 16 | powershell_script "Add box '#{new_resource.box_name}'" do 17 | code powershell_script_code 18 | action :run 19 | guard_interpreter :powershell_script 20 | not_if powershell_script_guard 21 | end 22 | end 23 | -------------------------------------------------------------------------------- /src/components/aws/cookbooks/gusztavvargadr_workstations_aws/.kitchen.yml: -------------------------------------------------------------------------------- 1 | --- 2 | driver: 3 | name: vagrant 4 | vagrantfiles: 5 | - ../../../../Vagrantfile.kitchen 6 | 7 | provisioner: 8 | name: chef_solo 9 | 10 | verifier: 11 | name: inspec 12 | 13 | platforms: 14 | - name: w 15 | transport: 16 | name: winrm 17 | driver: 18 | box: gusztavvargadr/w16s 19 | 20 | suites: 21 | - name: default 22 | run_list: 23 | - recipe[gusztavvargadr_workstations_core::default] 24 | - recipe[gusztavvargadr_workstations_aws::default] 25 | attributes: 26 | gusztavvargadr_workstations_core: 27 | tools: 28 | chocolatey: 29 | awscli: 30 | gusztavvargadr_workstations_aws: 31 | profiles: 32 | workspaces: 33 | default: 34 | access_key_id: access_key_id 35 | secret_access_key: secret_access_key 36 | region: us-east-1 37 | -------------------------------------------------------------------------------- /src/components/vagrant/cookbooks/gusztavvargadr_workstations_vagrant/.kitchen.yml: -------------------------------------------------------------------------------- 1 | --- 2 | driver: 3 | name: vagrant 4 | vagrantfiles: 5 | - ../../../../Vagrantfile.kitchen 6 | 7 | provisioner: 8 | name: chef_solo 9 | 10 | verifier: 11 | name: inspec 12 | 13 | platforms: 14 | - name: w 15 | transport: 16 | name: winrm 17 | driver: 18 | box: gusztavvargadr/w16s 19 | 20 | suites: 21 | - name: default 22 | run_list: 23 | - recipe[gusztavvargadr_workstations_core::default] 24 | - recipe[gusztavvargadr_workstations_vagrant::default] 25 | attributes: 26 | gusztavvargadr_workstations_core: 27 | tools: 28 | chocolatey: 29 | vagrant: 30 | install: 31 | ignorepackagecodes: 32 | gusztavvargadr_workstations_vagrant: 33 | profiles: 34 | plugins: 35 | vagrant-reload: 36 | boxes: 37 | ubuntu/trusty32: 38 | -------------------------------------------------------------------------------- /src/components/svn/cookbooks/gusztavvargadr_workstations_svn/.kitchen.yml: -------------------------------------------------------------------------------- 1 | --- 2 | driver: 3 | name: vagrant 4 | vagrantfiles: 5 | - ../../../../Vagrantfile.kitchen 6 | 7 | provisioner: 8 | name: chef_solo 9 | 10 | verifier: 11 | name: inspec 12 | 13 | platforms: 14 | - name: w 15 | transport: 16 | name: winrm 17 | driver: 18 | box: gusztavvargadr/w16s 19 | 20 | suites: 21 | - name: default 22 | run_list: 23 | - recipe[gusztavvargadr_workstations_core::default] 24 | - recipe[gusztavvargadr_workstations_svn::default] 25 | attributes: 26 | gusztavvargadr_workstations_core: 27 | tools: 28 | chocolatey: 29 | svn: 30 | gusztavvargadr_workstations_svn: 31 | profiles: 32 | workspaces: 33 | apache: 34 | address: http://svn.apache.org/repos 35 | directory: /Users/vagrant/Repos/apache 36 | repositories: 37 | asf/logging/log4net/trunk: 38 | -------------------------------------------------------------------------------- /src/components/nuget/cookbooks/gusztavvargadr_workstations_nuget/.kitchen.yml: -------------------------------------------------------------------------------- 1 | --- 2 | driver: 3 | name: vagrant 4 | vagrantfiles: 5 | - ../../../../Vagrantfile.kitchen 6 | 7 | provisioner: 8 | name: chef_solo 9 | 10 | verifier: 11 | name: inspec 12 | 13 | platforms: 14 | - name: w 15 | transport: 16 | name: winrm 17 | driver: 18 | box: gusztavvargadr/w16s 19 | 20 | suites: 21 | - name: default 22 | run_list: 23 | - recipe[gusztavvargadr_workstations_core::default] 24 | - recipe[gusztavvargadr_workstations_nuget::default] 25 | attributes: 26 | gusztavvargadr_workstations_core: 27 | tools: 28 | chocolatey: 29 | nuget.commandline: 30 | gusztavvargadr_workstations_nuget: 31 | profiles: 32 | workspaces: 33 | dotnet: 34 | address: https://dotnet.myget.org/F 35 | sources: 36 | aspnetcore-dev: 37 | address: aspnetcore-dev/api/v3/index.json 38 | -------------------------------------------------------------------------------- /src/components/git/cookbooks/gusztavvargadr_workstations_git/resources/repository.rb: -------------------------------------------------------------------------------- 1 | property :repository_name, String, name_property: true 2 | property :repository_base_address, String, required: true 3 | property :repository_base_directory, String, required: true 4 | property :repository_options, Hash 5 | 6 | default_action :clone 7 | 8 | action :clone do 9 | git_directory = new_resource.repository_options.nil? ? nil : new_resource.repository_options['directory'] 10 | git_directory = new_resource.repository_name if git_directory.nil? 11 | git_directory = "#{new_resource.repository_base_directory}/#{git_directory}" 12 | 13 | directory git_directory do 14 | recursive true 15 | action :create 16 | end 17 | 18 | git_repository = "#{new_resource.repository_base_address}/#{new_resource.repository_name}" 19 | git_checkout_branch = 'master' 20 | git_enable_checkout = false 21 | 22 | git git_directory do 23 | repository git_repository 24 | checkout_branch git_checkout_branch 25 | enable_checkout git_enable_checkout 26 | action :checkout 27 | end 28 | end 29 | -------------------------------------------------------------------------------- /src/components/git/cookbooks/gusztavvargadr_workstations_git/.kitchen.yml: -------------------------------------------------------------------------------- 1 | --- 2 | driver: 3 | name: vagrant 4 | vagrantfiles: 5 | - ../../../../Vagrantfile.kitchen 6 | 7 | provisioner: 8 | name: chef_solo 9 | 10 | verifier: 11 | name: inspec 12 | 13 | platforms: 14 | - name: w 15 | transport: 16 | name: winrm 17 | driver: 18 | box: gusztavvargadr/w16s 19 | 20 | suites: 21 | - name: default 22 | run_list: 23 | - recipe[gusztavvargadr_workstations_core::default] 24 | - recipe[gusztavvargadr_workstations_git::default] 25 | attributes: 26 | gusztavvargadr_workstations_core: 27 | tools: 28 | chocolatey: 29 | git: 30 | version: 2.11.1 31 | install: 32 | params: "'/GitAndUnixToolsOnPath /NoShellIntegration'" 33 | gusztavvargadr_workstations_git: 34 | profiles: 35 | workspaces: 36 | github: 37 | address: https://github.com/github 38 | directory: /Users/vagrant/Repos/github 39 | repositories: 40 | gitignore: 41 | -------------------------------------------------------------------------------- /src/components/svn/cookbooks/gusztavvargadr_workstations_svn/resources/repository.rb: -------------------------------------------------------------------------------- 1 | property :repository_name, String, name_property: true 2 | property :repository_base_address, String, required: true 3 | property :repository_username, String 4 | property :repository_password, String 5 | property :repository_base_directory, String, required: true 6 | property :repository_options, Hash 7 | 8 | default_action :checkout 9 | 10 | action :checkout do 11 | svn_directory = new_resource.repository_options.nil? ? nil : new_resource.repository_options['directory'] 12 | svn_directory = new_resource.repository_name if svn_directory.nil? 13 | svn_directory = "#{new_resource.repository_base_directory}/#{svn_directory}" 14 | 15 | directory svn_directory do 16 | recursive true 17 | action :create 18 | end 19 | 20 | svn_repository = "#{new_resource.repository_base_address}/#{new_resource.repository_name}" 21 | 22 | subversion svn_directory do 23 | repository svn_repository 24 | svn_username new_resource.repository_username 25 | svn_password new_resource.repository_password 26 | action :checkout 27 | end 28 | end 29 | -------------------------------------------------------------------------------- /src/components/dockerc/cookbooks/gusztavvargadr_workstations_dockerc/resources/image.rb: -------------------------------------------------------------------------------- 1 | property :image_name, String, name_property: true 2 | property :image_options, Hash 3 | 4 | default_action :pull 5 | 6 | action :pull do 7 | image_script_name = "docker pull #{new_resource.image_name}" 8 | image_script_code = <<-EOH 9 | timeout /t 120 > nul 10 | docker pull #{new_resource.image_name} 11 | EOH 12 | image_script_directory_path = "#{Chef::Config[:file_cache_path]}/gusztavvargadr_workstations_dockerc" 13 | directory image_script_directory_path do 14 | recursive true 15 | action :create 16 | end 17 | 18 | image_script_file_name = "#{image_script_name.tr(' ', '-').tr(':', '-').tr('/', '-')}.cmd" 19 | image_script_file_path = "#{image_script_directory_path}/#{image_script_file_name}" 20 | file image_script_file_path do 21 | content image_script_code 22 | action :create 23 | end 24 | 25 | windows_task image_script_file_name do 26 | command image_script_file_name 27 | cwd image_script_directory_path 28 | run_level :highest 29 | frequency :on_logon 30 | force true 31 | action :create 32 | end 33 | end 34 | -------------------------------------------------------------------------------- /src/components/dockere/cookbooks/gusztavvargadr_workstations_dockere/resources/image.rb: -------------------------------------------------------------------------------- 1 | property :image_name, String, name_property: true 2 | property :image_options, Hash 3 | 4 | default_action :pull 5 | 6 | action :pull do 7 | image_script_name = "docker pull #{new_resource.image_name}" 8 | image_script_code = <<-EOH 9 | timeout /t 120 > nul 10 | docker pull #{new_resource.image_name} 11 | EOH 12 | image_script_directory_path = "#{Chef::Config[:file_cache_path]}/gusztavvargadr_workstations_dockere" 13 | directory image_script_directory_path do 14 | recursive true 15 | action :create 16 | end 17 | 18 | image_script_file_name = "#{image_script_name.tr(' ', '-').tr(':', '-').tr('/', '-')}.cmd" 19 | image_script_file_path = "#{image_script_directory_path}/#{image_script_file_name}" 20 | file image_script_file_path do 21 | content image_script_code 22 | action :create 23 | end 24 | 25 | windows_task image_script_file_name do 26 | command image_script_file_name 27 | cwd image_script_directory_path 28 | run_level :highest 29 | frequency :on_logon 30 | force true 31 | action :create 32 | end 33 | end 34 | -------------------------------------------------------------------------------- /src/components/nuget/cookbooks/gusztavvargadr_workstations_nuget/resources/source.rb: -------------------------------------------------------------------------------- 1 | property :source_name, String, name_property: true 2 | property :source_base_address, String, required: true 3 | property :source_username, String 4 | property :source_password, String 5 | property :source_options, Hash 6 | 7 | default_action :create 8 | 9 | action :create do 10 | return if new_resource.source_options.nil? 11 | 12 | source_address = "#{new_resource.source_base_address}/#{new_resource.source_options['address']}" 13 | source_script = "NuGet sources Add -Name #{new_resource.source_name} -Source #{source_address}" 14 | 15 | unless new_resource.source_username.to_s.empty? || new_resource.source_password.to_s.empty? 16 | source_script = "#{source_script} -UserName #{new_resource.source_username} -Password #{new_resource.source_password} -StorePasswordInClearText" 17 | end 18 | 19 | powershell_script "Create NuGet source #{new_resource.source_name}" do 20 | code source_script 21 | action :run 22 | guard_interpreter :powershell_script 23 | not_if "((NuGet sources List -Format Short) | Out-String).Contains(\"#{source_address}\")" 24 | end 25 | end 26 | -------------------------------------------------------------------------------- /src/components/nuget/cookbooks/gusztavvargadr_workstations_nuget/resources/workspace.rb: -------------------------------------------------------------------------------- 1 | property :workspace_name, String, name_property: true 2 | property :workspace_options, Hash 3 | 4 | default_action :create 5 | 6 | action :create do 7 | return if new_resource.workspace_options.nil? 8 | 9 | source_base_address = new_resource.workspace_options['address'] 10 | source_username = new_resource.workspace_options['username'].to_s.empty? ? ENV["NUGET_#{new_resource.workspace_name}_USERNAME"] : new_resource.workspace_options['username'] 11 | source_password = new_resource.workspace_options['password'].to_s.empty? ? ENV["NUGET_#{new_resource.workspace_name}_PASSWORD"] : new_resource.workspace_options['password'] 12 | 13 | sources = new_resource.workspace_options['sources'] 14 | unless sources.nil? 15 | sources.each do |source_name, source_options| 16 | gusztavvargadr_workstations_nuget_source source_name do 17 | source_base_address source_base_address 18 | source_username source_username 19 | source_password source_password 20 | source_options source_options 21 | action :create 22 | end 23 | end 24 | end 25 | end 26 | -------------------------------------------------------------------------------- /src/components/dockerc/cookbooks/gusztavvargadr_workstations_dockerc/.kitchen.yml: -------------------------------------------------------------------------------- 1 | driver: 2 | name: vagrant 3 | vagrantfiles: 4 | - ../../../../Vagrantfile.kitchen 5 | 6 | provisioner: 7 | name: chef_solo 8 | 9 | verifier: 10 | name: inspec 11 | 12 | platforms: 13 | - name: w 14 | transport: 15 | name: winrm 16 | driver: 17 | box: gusztavvargadr/w16s 18 | 19 | suites: 20 | - name: default 21 | run_list: 22 | - recipe[gusztavvargadr_workstations_core::default] 23 | - recipe[gusztavvargadr_workstations_dockerc::default] 24 | attributes: 25 | gusztavvargadr_workstations_core: 26 | requirements: 27 | features: 28 | Microsoft-Hyper-V: 29 | Microsoft-Hyper-V-Management-Clients: 30 | Microsoft-Hyper-V-Management-PowerShell: 31 | RSAT-Hyper-V-Tools-Feature: 32 | Containers: 33 | tools: 34 | windows: 35 | Docker for Windows (Edge): 36 | source: https://download.docker.com/win/edge/Docker%20for%20Windows%20Installer.exe 37 | install: 38 | - install 39 | - --quiet 40 | directory: /Program Files/Docker 41 | gusztavvargadr_workstations_dockerc: 42 | profiles: 43 | images: 44 | hello-world: 45 | -------------------------------------------------------------------------------- /src/components/svn/cookbooks/gusztavvargadr_workstations_svn/resources/workspace.rb: -------------------------------------------------------------------------------- 1 | property :workspace_name, String, name_property: true 2 | property :workspace_options, Hash 3 | 4 | default_action :create 5 | 6 | action :create do 7 | return if new_resource.workspace_options.nil? 8 | 9 | repository_base_address = new_resource.workspace_options['address'] 10 | repository_username = new_resource.workspace_options['username'].to_s.empty? ? ENV["SVN_#{new_resource.workspace_name}_USERNAME"] : new_resource.workspace_options['username'] 11 | repository_password = new_resource.workspace_options['password'].to_s.empty? ? ENV["SVN_#{new_resource.workspace_name}_PASSWORD"] : new_resource.workspace_options['password'] 12 | repository_base_directory = new_resource.workspace_options['directory'] 13 | 14 | repositories = new_resource.workspace_options['repositories'] 15 | unless repositories.nil? 16 | repositories.each do |repository_name, repository_options| 17 | gusztavvargadr_workstations_svn_repository repository_name do 18 | repository_base_address repository_base_address.to_s 19 | repository_username repository_username 20 | repository_password repository_password 21 | repository_base_directory repository_base_directory 22 | repository_options repository_options 23 | action :checkout 24 | end 25 | end 26 | end 27 | end 28 | -------------------------------------------------------------------------------- /src/components/git/cookbooks/gusztavvargadr_workstations_git/resources/workspace.rb: -------------------------------------------------------------------------------- 1 | property :workspace_name, String, name_property: true 2 | property :workspace_options, Hash 3 | 4 | default_action :create 5 | 6 | action :create do 7 | return if new_resource.workspace_options.nil? 8 | 9 | repository_base_address = URI.parse(new_resource.workspace_options['address']) 10 | repository_username = new_resource.workspace_options['username'].to_s.empty? ? ENV["GIT_#{new_resource.workspace_name}_USERNAME"] : new_resource.workspace_options['username'] 11 | repository_password = new_resource.workspace_options['password'].to_s.empty? ? ENV["GIT_#{new_resource.workspace_name}_PASSWORD"] : new_resource.workspace_options['password'] 12 | unless repository_username.to_s.empty? || repository_password.to_s.empty? 13 | repository_base_address.user = repository_username 14 | repository_base_address.password = repository_password 15 | end 16 | repository_base_directory = new_resource.workspace_options['directory'] 17 | 18 | repositories = new_resource.workspace_options['repositories'] 19 | unless repositories.nil? 20 | repositories.each do |repository_name, repository_options| 21 | gusztavvargadr_workstations_git_repository repository_name do 22 | repository_base_address repository_base_address.to_s 23 | repository_base_directory repository_base_directory 24 | repository_options repository_options 25 | action :clone 26 | end 27 | end 28 | end 29 | end 30 | -------------------------------------------------------------------------------- /src/components/core/cookbooks/gusztavvargadr_workstations_core/resources/tools_chocolatey.rb: -------------------------------------------------------------------------------- 1 | property :tools_chocolatey_options, Hash 2 | 3 | default_action :install 4 | 5 | action :install do 6 | return if new_resource.tools_chocolatey_options.nil? 7 | 8 | new_resource.tools_chocolatey_options.each do |package_name, package_options| 9 | package_options = {} if package_options.nil? 10 | 11 | package_version = package_options['version'] 12 | package_install = package_options['install'].nil? ? {} : package_options['install'] 13 | package_elevated = package_options['elevated'] 14 | 15 | package_script_name = "Install Chocolatey package '#{package_name}'" 16 | package_script_code = "choco install #{package_name} --confirm --no-progress" 17 | package_script_code = "#{package_script_code} --version #{package_version}" unless package_version.nil? 18 | package_install.each do |package_install_name, package_install_value| 19 | package_script_code = "#{package_script_code} --#{package_install_name}" 20 | package_script_code = "#{package_script_code} #{package_install_value}" unless package_install_value.nil? 21 | end 22 | 23 | if package_elevated 24 | gusztavvargadr_windows_powershell_script_elevated package_script_name do 25 | code package_script_code 26 | action :run 27 | end 28 | else 29 | powershell_script package_script_name do 30 | code package_script_code 31 | action :run 32 | end 33 | end 34 | end 35 | end 36 | -------------------------------------------------------------------------------- /src/projects/identityserver/vagrant.yml: -------------------------------------------------------------------------------- 1 | core: 2 | includes: 3 | - components/git/core 4 | chef: 5 | json: 6 | gusztavvargadr_workstations_git: 7 | profiles: 8 | workspaces: 9 | identityserver: 10 | address: https://github.com/identityserver 11 | directory: /Users/vagrant/Repos/identityserver 12 | 13 | v3: 14 | includes: 15 | - projects/identityserver/core 16 | - stacks/dotnetfx/library 17 | - stacks/dotnetfx/web 18 | chef: 19 | json: 20 | gusztavvargadr_workstations_git: 21 | profiles: 22 | workspaces: 23 | identityserver: 24 | repositories: 25 | IdentityServer3: 26 | directory: v3/core 27 | IdentityServer3.AccessTokenValidation: 28 | directory: v3/accesstokenvalidation 29 | IdentityServer3.Samples: 30 | directory: v3/samples 31 | 32 | v4: 33 | includes: 34 | - projects/identityserver/core 35 | - stacks/dotnetcore/library 36 | - stacks/dotnetcore/web 37 | chef: 38 | json: 39 | gusztavvargadr_workstations_git: 40 | profiles: 41 | workspaces: 42 | identityserver: 43 | repositories: 44 | IdentityServer4: 45 | directory: v4/core 46 | IdentityServer4.AccessTokenValidation: 47 | directory: v4/accesstokenvalidation 48 | IdentityServer4.Quickstart.UI: 49 | directory: v4/quickstart 50 | -------------------------------------------------------------------------------- /src/components/aws/cookbooks/gusztavvargadr_workstations_aws/resources/profiles_workspaces.rb: -------------------------------------------------------------------------------- 1 | property :profiles_workspaces_options, Hash 2 | 3 | default_action :create 4 | 5 | action :create do 6 | return if new_resource.profiles_workspaces_options.nil? 7 | 8 | directory "#{ENV['USERPROFILE']}/.aws" do 9 | recursive true 10 | action :create 11 | end 12 | 13 | config_profiles = {} 14 | new_resource.profiles_workspaces_options.each do |workspace_name, workspace_options| 15 | config_profiles[workspace_name] = { 16 | 'region' => workspace_options['region'], 17 | } 18 | end 19 | 20 | template "#{ENV['USERPROFILE']}/.aws/config" do 21 | source 'config.erb' 22 | cookbook 'gusztavvargadr_workstations_aws' 23 | variables profiles: config_profiles 24 | action :create 25 | end 26 | 27 | credentials_profiles = {} 28 | new_resource.profiles_workspaces_options.each do |workspace_name, workspace_options| 29 | credentials_profiles[workspace_name] = { 30 | 'access_key_id' => workspace_options['access_key_id'].to_s.empty? ? ENV["AWS_#{workspace_name}_ACCESS_KEY_ID"] : workspace_options['access_key_id'], 31 | 'secret_access_key' => workspace_options['secret_access_key'].to_s.empty? ? ENV["AWS_#{workspace_name}_SECRET_ACCESS_KEY"] : workspace_options['secret_access_key'], 32 | } 33 | end 34 | template "#{ENV['USERPROFILE']}/.aws/credentials" do 35 | source 'credentials.erb' 36 | cookbook 'gusztavvargadr_workstations_aws' 37 | variables profiles: credentials_profiles 38 | action :create 39 | end 40 | end 41 | -------------------------------------------------------------------------------- /src/components/core/cookbooks/gusztavvargadr_workstations_core/resources/tools_windows.rb: -------------------------------------------------------------------------------- 1 | property :tools_windows_options, Hash 2 | 3 | default_action :install 4 | 5 | action :install do 6 | return if new_resource.tools_windows_options.nil? 7 | 8 | new_resource.tools_windows_options.each do |package_name, package_options| 9 | package_options = {} if package_options.nil? 10 | 11 | package_source = package_options['source'] 12 | package_install = package_options['install'].nil? ? {} : package_options['install'] 13 | package_directory = package_options['directory'] 14 | package_elevated = package_options['elevated'] 15 | 16 | next if !package_directory.nil? && ::Dir.exist?(package_directory) 17 | 18 | package_download_directory_path = "#{Chef::Config[:file_cache_path]}/gusztavvargadr_workstations_core" 19 | 20 | directory package_download_directory_path do 21 | recursive true 22 | action :create 23 | end 24 | 25 | package_download_file_path = "#{package_download_directory_path}/#{package_name.tr(' ', '-')}.exe" 26 | remote_file package_download_file_path do 27 | source package_source 28 | action :create 29 | end 30 | 31 | package_script_name = "Install Windows package '#{package_name}'" 32 | package_script_code = "Start-Process \"#{package_download_file_path.tr('/', '\\')}\" \"#{package_install.join(' ')}\" -Wait" 33 | 34 | if package_elevated 35 | gusztavvargadr_windows_powershell_script_elevated package_script_name do 36 | code package_script_code 37 | action :run 38 | end 39 | else 40 | powershell_script package_script_name do 41 | code package_script_code 42 | action :run 43 | end 44 | end 45 | end 46 | end 47 | -------------------------------------------------------------------------------- /src/components/aws/cookbooks/gusztavvargadr_workstations_aws/chefignore: -------------------------------------------------------------------------------- 1 | # Put files/directories that should be ignored in this file when uploading 2 | # to a chef-server or supermarket. 3 | # Lines that start with '# ' are comments. 4 | 5 | # OS generated files # 6 | ###################### 7 | .DS_Store 8 | Icon? 9 | nohup.out 10 | ehthumbs.db 11 | Thumbs.db 12 | 13 | # SASS # 14 | ######## 15 | .sass-cache 16 | 17 | # EDITORS # 18 | ########### 19 | \#* 20 | .#* 21 | *~ 22 | *.sw[a-z] 23 | *.bak 24 | REVISION 25 | TAGS* 26 | tmtags 27 | *_flymake.* 28 | *_flymake 29 | *.tmproj 30 | .project 31 | .settings 32 | mkmf.log 33 | 34 | ## COMPILED ## 35 | ############## 36 | a.out 37 | *.o 38 | *.pyc 39 | *.so 40 | *.com 41 | *.class 42 | *.dll 43 | *.exe 44 | */rdoc/ 45 | 46 | # Testing # 47 | ########### 48 | .watchr 49 | .rspec 50 | spec/* 51 | spec/fixtures/* 52 | test/* 53 | features/* 54 | examples/* 55 | Guardfile 56 | Procfile 57 | .kitchen* 58 | .rubocop.yml 59 | spec/* 60 | Rakefile 61 | .travis.yml 62 | .foodcritic 63 | .codeclimate.yml 64 | 65 | # SCM # 66 | ####### 67 | .git 68 | */.git 69 | .gitignore 70 | .gitmodules 71 | .gitconfig 72 | .gitattributes 73 | .svn 74 | */.bzr/* 75 | */.hg/* 76 | */.svn/* 77 | 78 | # Berkshelf # 79 | ############# 80 | Berksfile 81 | Berksfile.lock 82 | cookbooks/* 83 | tmp 84 | 85 | # Policyfile # 86 | ############## 87 | Policyfile.rb 88 | Policyfile.lock.json 89 | 90 | # Cookbooks # 91 | ############# 92 | CONTRIBUTING* 93 | CHANGELOG* 94 | TESTING* 95 | MAINTAINERS.toml 96 | 97 | # Strainer # 98 | ############ 99 | Colanderfile 100 | Strainerfile 101 | .colander 102 | .strainer 103 | 104 | # Vagrant # 105 | ########### 106 | .vagrant 107 | Vagrantfile 108 | -------------------------------------------------------------------------------- /src/components/git/cookbooks/gusztavvargadr_workstations_git/chefignore: -------------------------------------------------------------------------------- 1 | # Put files/directories that should be ignored in this file when uploading 2 | # to a chef-server or supermarket. 3 | # Lines that start with '# ' are comments. 4 | 5 | # OS generated files # 6 | ###################### 7 | .DS_Store 8 | Icon? 9 | nohup.out 10 | ehthumbs.db 11 | Thumbs.db 12 | 13 | # SASS # 14 | ######## 15 | .sass-cache 16 | 17 | # EDITORS # 18 | ########### 19 | \#* 20 | .#* 21 | *~ 22 | *.sw[a-z] 23 | *.bak 24 | REVISION 25 | TAGS* 26 | tmtags 27 | *_flymake.* 28 | *_flymake 29 | *.tmproj 30 | .project 31 | .settings 32 | mkmf.log 33 | 34 | ## COMPILED ## 35 | ############## 36 | a.out 37 | *.o 38 | *.pyc 39 | *.so 40 | *.com 41 | *.class 42 | *.dll 43 | *.exe 44 | */rdoc/ 45 | 46 | # Testing # 47 | ########### 48 | .watchr 49 | .rspec 50 | spec/* 51 | spec/fixtures/* 52 | test/* 53 | features/* 54 | examples/* 55 | Guardfile 56 | Procfile 57 | .kitchen* 58 | .rubocop.yml 59 | spec/* 60 | Rakefile 61 | .travis.yml 62 | .foodcritic 63 | .codeclimate.yml 64 | 65 | # SCM # 66 | ####### 67 | .git 68 | */.git 69 | .gitignore 70 | .gitmodules 71 | .gitconfig 72 | .gitattributes 73 | .svn 74 | */.bzr/* 75 | */.hg/* 76 | */.svn/* 77 | 78 | # Berkshelf # 79 | ############# 80 | Berksfile 81 | Berksfile.lock 82 | cookbooks/* 83 | tmp 84 | 85 | # Policyfile # 86 | ############## 87 | Policyfile.rb 88 | Policyfile.lock.json 89 | 90 | # Cookbooks # 91 | ############# 92 | CONTRIBUTING* 93 | CHANGELOG* 94 | TESTING* 95 | MAINTAINERS.toml 96 | 97 | # Strainer # 98 | ############ 99 | Colanderfile 100 | Strainerfile 101 | .colander 102 | .strainer 103 | 104 | # Vagrant # 105 | ########### 106 | .vagrant 107 | Vagrantfile 108 | -------------------------------------------------------------------------------- /src/components/os/cookbooks/gusztavvargadr_workstations_os/chefignore: -------------------------------------------------------------------------------- 1 | # Put files/directories that should be ignored in this file when uploading 2 | # to a chef-server or supermarket. 3 | # Lines that start with '# ' are comments. 4 | 5 | # OS generated files # 6 | ###################### 7 | .DS_Store 8 | Icon? 9 | nohup.out 10 | ehthumbs.db 11 | Thumbs.db 12 | 13 | # SASS # 14 | ######## 15 | .sass-cache 16 | 17 | # EDITORS # 18 | ########### 19 | \#* 20 | .#* 21 | *~ 22 | *.sw[a-z] 23 | *.bak 24 | REVISION 25 | TAGS* 26 | tmtags 27 | *_flymake.* 28 | *_flymake 29 | *.tmproj 30 | .project 31 | .settings 32 | mkmf.log 33 | 34 | ## COMPILED ## 35 | ############## 36 | a.out 37 | *.o 38 | *.pyc 39 | *.so 40 | *.com 41 | *.class 42 | *.dll 43 | *.exe 44 | */rdoc/ 45 | 46 | # Testing # 47 | ########### 48 | .watchr 49 | .rspec 50 | spec/* 51 | spec/fixtures/* 52 | test/* 53 | features/* 54 | examples/* 55 | Guardfile 56 | Procfile 57 | .kitchen* 58 | .rubocop.yml 59 | spec/* 60 | Rakefile 61 | .travis.yml 62 | .foodcritic 63 | .codeclimate.yml 64 | 65 | # SCM # 66 | ####### 67 | .git 68 | */.git 69 | .gitignore 70 | .gitmodules 71 | .gitconfig 72 | .gitattributes 73 | .svn 74 | */.bzr/* 75 | */.hg/* 76 | */.svn/* 77 | 78 | # Berkshelf # 79 | ############# 80 | Berksfile 81 | Berksfile.lock 82 | cookbooks/* 83 | tmp 84 | 85 | # Policyfile # 86 | ############## 87 | Policyfile.rb 88 | Policyfile.lock.json 89 | 90 | # Cookbooks # 91 | ############# 92 | CONTRIBUTING* 93 | CHANGELOG* 94 | TESTING* 95 | MAINTAINERS.toml 96 | 97 | # Strainer # 98 | ############ 99 | Colanderfile 100 | Strainerfile 101 | .colander 102 | .strainer 103 | 104 | # Vagrant # 105 | ########### 106 | .vagrant 107 | Vagrantfile 108 | -------------------------------------------------------------------------------- /src/components/svn/cookbooks/gusztavvargadr_workstations_svn/chefignore: -------------------------------------------------------------------------------- 1 | # Put files/directories that should be ignored in this file when uploading 2 | # to a chef-server or supermarket. 3 | # Lines that start with '# ' are comments. 4 | 5 | # OS generated files # 6 | ###################### 7 | .DS_Store 8 | Icon? 9 | nohup.out 10 | ehthumbs.db 11 | Thumbs.db 12 | 13 | # SASS # 14 | ######## 15 | .sass-cache 16 | 17 | # EDITORS # 18 | ########### 19 | \#* 20 | .#* 21 | *~ 22 | *.sw[a-z] 23 | *.bak 24 | REVISION 25 | TAGS* 26 | tmtags 27 | *_flymake.* 28 | *_flymake 29 | *.tmproj 30 | .project 31 | .settings 32 | mkmf.log 33 | 34 | ## COMPILED ## 35 | ############## 36 | a.out 37 | *.o 38 | *.pyc 39 | *.so 40 | *.com 41 | *.class 42 | *.dll 43 | *.exe 44 | */rdoc/ 45 | 46 | # Testing # 47 | ########### 48 | .watchr 49 | .rspec 50 | spec/* 51 | spec/fixtures/* 52 | test/* 53 | features/* 54 | examples/* 55 | Guardfile 56 | Procfile 57 | .kitchen* 58 | .rubocop.yml 59 | spec/* 60 | Rakefile 61 | .travis.yml 62 | .foodcritic 63 | .codeclimate.yml 64 | 65 | # SCM # 66 | ####### 67 | .git 68 | */.git 69 | .gitignore 70 | .gitmodules 71 | .gitconfig 72 | .gitattributes 73 | .svn 74 | */.bzr/* 75 | */.hg/* 76 | */.svn/* 77 | 78 | # Berkshelf # 79 | ############# 80 | Berksfile 81 | Berksfile.lock 82 | cookbooks/* 83 | tmp 84 | 85 | # Policyfile # 86 | ############## 87 | Policyfile.rb 88 | Policyfile.lock.json 89 | 90 | # Cookbooks # 91 | ############# 92 | CONTRIBUTING* 93 | CHANGELOG* 94 | TESTING* 95 | MAINTAINERS.toml 96 | 97 | # Strainer # 98 | ############ 99 | Colanderfile 100 | Strainerfile 101 | .colander 102 | .strainer 103 | 104 | # Vagrant # 105 | ########### 106 | .vagrant 107 | Vagrantfile 108 | -------------------------------------------------------------------------------- /src/components/core/cookbooks/gusztavvargadr_workstations_core/chefignore: -------------------------------------------------------------------------------- 1 | # Put files/directories that should be ignored in this file when uploading 2 | # to a chef-server or supermarket. 3 | # Lines that start with '# ' are comments. 4 | 5 | # OS generated files # 6 | ###################### 7 | .DS_Store 8 | Icon? 9 | nohup.out 10 | ehthumbs.db 11 | Thumbs.db 12 | 13 | # SASS # 14 | ######## 15 | .sass-cache 16 | 17 | # EDITORS # 18 | ########### 19 | \#* 20 | .#* 21 | *~ 22 | *.sw[a-z] 23 | *.bak 24 | REVISION 25 | TAGS* 26 | tmtags 27 | *_flymake.* 28 | *_flymake 29 | *.tmproj 30 | .project 31 | .settings 32 | mkmf.log 33 | 34 | ## COMPILED ## 35 | ############## 36 | a.out 37 | *.o 38 | *.pyc 39 | *.so 40 | *.com 41 | *.class 42 | *.dll 43 | *.exe 44 | */rdoc/ 45 | 46 | # Testing # 47 | ########### 48 | .watchr 49 | .rspec 50 | spec/* 51 | spec/fixtures/* 52 | test/* 53 | features/* 54 | examples/* 55 | Guardfile 56 | Procfile 57 | .kitchen* 58 | .rubocop.yml 59 | spec/* 60 | Rakefile 61 | .travis.yml 62 | .foodcritic 63 | .codeclimate.yml 64 | 65 | # SCM # 66 | ####### 67 | .git 68 | */.git 69 | .gitignore 70 | .gitmodules 71 | .gitconfig 72 | .gitattributes 73 | .svn 74 | */.bzr/* 75 | */.hg/* 76 | */.svn/* 77 | 78 | # Berkshelf # 79 | ############# 80 | Berksfile 81 | Berksfile.lock 82 | cookbooks/* 83 | tmp 84 | 85 | # Policyfile # 86 | ############## 87 | Policyfile.rb 88 | Policyfile.lock.json 89 | 90 | # Cookbooks # 91 | ############# 92 | CONTRIBUTING* 93 | CHANGELOG* 94 | TESTING* 95 | MAINTAINERS.toml 96 | 97 | # Strainer # 98 | ############ 99 | Colanderfile 100 | Strainerfile 101 | .colander 102 | .strainer 103 | 104 | # Vagrant # 105 | ########### 106 | .vagrant 107 | Vagrantfile 108 | -------------------------------------------------------------------------------- /src/components/nuget/cookbooks/gusztavvargadr_workstations_nuget/chefignore: -------------------------------------------------------------------------------- 1 | # Put files/directories that should be ignored in this file when uploading 2 | # to a chef-server or supermarket. 3 | # Lines that start with '# ' are comments. 4 | 5 | # OS generated files # 6 | ###################### 7 | .DS_Store 8 | Icon? 9 | nohup.out 10 | ehthumbs.db 11 | Thumbs.db 12 | 13 | # SASS # 14 | ######## 15 | .sass-cache 16 | 17 | # EDITORS # 18 | ########### 19 | \#* 20 | .#* 21 | *~ 22 | *.sw[a-z] 23 | *.bak 24 | REVISION 25 | TAGS* 26 | tmtags 27 | *_flymake.* 28 | *_flymake 29 | *.tmproj 30 | .project 31 | .settings 32 | mkmf.log 33 | 34 | ## COMPILED ## 35 | ############## 36 | a.out 37 | *.o 38 | *.pyc 39 | *.so 40 | *.com 41 | *.class 42 | *.dll 43 | *.exe 44 | */rdoc/ 45 | 46 | # Testing # 47 | ########### 48 | .watchr 49 | .rspec 50 | spec/* 51 | spec/fixtures/* 52 | test/* 53 | features/* 54 | examples/* 55 | Guardfile 56 | Procfile 57 | .kitchen* 58 | .rubocop.yml 59 | spec/* 60 | Rakefile 61 | .travis.yml 62 | .foodcritic 63 | .codeclimate.yml 64 | 65 | # SCM # 66 | ####### 67 | .git 68 | */.git 69 | .gitignore 70 | .gitmodules 71 | .gitconfig 72 | .gitattributes 73 | .svn 74 | */.bzr/* 75 | */.hg/* 76 | */.svn/* 77 | 78 | # Berkshelf # 79 | ############# 80 | Berksfile 81 | Berksfile.lock 82 | cookbooks/* 83 | tmp 84 | 85 | # Policyfile # 86 | ############## 87 | Policyfile.rb 88 | Policyfile.lock.json 89 | 90 | # Cookbooks # 91 | ############# 92 | CONTRIBUTING* 93 | CHANGELOG* 94 | TESTING* 95 | MAINTAINERS.toml 96 | 97 | # Strainer # 98 | ############ 99 | Colanderfile 100 | Strainerfile 101 | .colander 102 | .strainer 103 | 104 | # Vagrant # 105 | ########### 106 | .vagrant 107 | Vagrantfile 108 | -------------------------------------------------------------------------------- /src/components/dockerc/cookbooks/gusztavvargadr_workstations_dockerc/chefignore: -------------------------------------------------------------------------------- 1 | # Put files/directories that should be ignored in this file when uploading 2 | # to a chef-server or supermarket. 3 | # Lines that start with '# ' are comments. 4 | 5 | # OS generated files # 6 | ###################### 7 | .DS_Store 8 | Icon? 9 | nohup.out 10 | ehthumbs.db 11 | Thumbs.db 12 | 13 | # SASS # 14 | ######## 15 | .sass-cache 16 | 17 | # EDITORS # 18 | ########### 19 | \#* 20 | .#* 21 | *~ 22 | *.sw[a-z] 23 | *.bak 24 | REVISION 25 | TAGS* 26 | tmtags 27 | *_flymake.* 28 | *_flymake 29 | *.tmproj 30 | .project 31 | .settings 32 | mkmf.log 33 | 34 | ## COMPILED ## 35 | ############## 36 | a.out 37 | *.o 38 | *.pyc 39 | *.so 40 | *.com 41 | *.class 42 | *.dll 43 | *.exe 44 | */rdoc/ 45 | 46 | # Testing # 47 | ########### 48 | .watchr 49 | .rspec 50 | spec/* 51 | spec/fixtures/* 52 | test/* 53 | features/* 54 | examples/* 55 | Guardfile 56 | Procfile 57 | .kitchen* 58 | .rubocop.yml 59 | spec/* 60 | Rakefile 61 | .travis.yml 62 | .foodcritic 63 | .codeclimate.yml 64 | 65 | # SCM # 66 | ####### 67 | .git 68 | */.git 69 | .gitignore 70 | .gitmodules 71 | .gitconfig 72 | .gitattributes 73 | .svn 74 | */.bzr/* 75 | */.hg/* 76 | */.svn/* 77 | 78 | # Berkshelf # 79 | ############# 80 | Berksfile 81 | Berksfile.lock 82 | cookbooks/* 83 | tmp 84 | 85 | # Policyfile # 86 | ############## 87 | Policyfile.rb 88 | Policyfile.lock.json 89 | 90 | # Cookbooks # 91 | ############# 92 | CONTRIBUTING* 93 | CHANGELOG* 94 | TESTING* 95 | MAINTAINERS.toml 96 | 97 | # Strainer # 98 | ############ 99 | Colanderfile 100 | Strainerfile 101 | .colander 102 | .strainer 103 | 104 | # Vagrant # 105 | ########### 106 | .vagrant 107 | Vagrantfile 108 | -------------------------------------------------------------------------------- /src/components/dockere/cookbooks/gusztavvargadr_workstations_dockere/chefignore: -------------------------------------------------------------------------------- 1 | # Put files/directories that should be ignored in this file when uploading 2 | # to a chef-server or supermarket. 3 | # Lines that start with '# ' are comments. 4 | 5 | # OS generated files # 6 | ###################### 7 | .DS_Store 8 | Icon? 9 | nohup.out 10 | ehthumbs.db 11 | Thumbs.db 12 | 13 | # SASS # 14 | ######## 15 | .sass-cache 16 | 17 | # EDITORS # 18 | ########### 19 | \#* 20 | .#* 21 | *~ 22 | *.sw[a-z] 23 | *.bak 24 | REVISION 25 | TAGS* 26 | tmtags 27 | *_flymake.* 28 | *_flymake 29 | *.tmproj 30 | .project 31 | .settings 32 | mkmf.log 33 | 34 | ## COMPILED ## 35 | ############## 36 | a.out 37 | *.o 38 | *.pyc 39 | *.so 40 | *.com 41 | *.class 42 | *.dll 43 | *.exe 44 | */rdoc/ 45 | 46 | # Testing # 47 | ########### 48 | .watchr 49 | .rspec 50 | spec/* 51 | spec/fixtures/* 52 | test/* 53 | features/* 54 | examples/* 55 | Guardfile 56 | Procfile 57 | .kitchen* 58 | .rubocop.yml 59 | spec/* 60 | Rakefile 61 | .travis.yml 62 | .foodcritic 63 | .codeclimate.yml 64 | 65 | # SCM # 66 | ####### 67 | .git 68 | */.git 69 | .gitignore 70 | .gitmodules 71 | .gitconfig 72 | .gitattributes 73 | .svn 74 | */.bzr/* 75 | */.hg/* 76 | */.svn/* 77 | 78 | # Berkshelf # 79 | ############# 80 | Berksfile 81 | Berksfile.lock 82 | cookbooks/* 83 | tmp 84 | 85 | # Policyfile # 86 | ############## 87 | Policyfile.rb 88 | Policyfile.lock.json 89 | 90 | # Cookbooks # 91 | ############# 92 | CONTRIBUTING* 93 | CHANGELOG* 94 | TESTING* 95 | MAINTAINERS.toml 96 | 97 | # Strainer # 98 | ############ 99 | Colanderfile 100 | Strainerfile 101 | .colander 102 | .strainer 103 | 104 | # Vagrant # 105 | ########### 106 | .vagrant 107 | Vagrantfile 108 | -------------------------------------------------------------------------------- /src/components/vagrant/cookbooks/gusztavvargadr_workstations_vagrant/chefignore: -------------------------------------------------------------------------------- 1 | # Put files/directories that should be ignored in this file when uploading 2 | # to a chef-server or supermarket. 3 | # Lines that start with '# ' are comments. 4 | 5 | # OS generated files # 6 | ###################### 7 | .DS_Store 8 | Icon? 9 | nohup.out 10 | ehthumbs.db 11 | Thumbs.db 12 | 13 | # SASS # 14 | ######## 15 | .sass-cache 16 | 17 | # EDITORS # 18 | ########### 19 | \#* 20 | .#* 21 | *~ 22 | *.sw[a-z] 23 | *.bak 24 | REVISION 25 | TAGS* 26 | tmtags 27 | *_flymake.* 28 | *_flymake 29 | *.tmproj 30 | .project 31 | .settings 32 | mkmf.log 33 | 34 | ## COMPILED ## 35 | ############## 36 | a.out 37 | *.o 38 | *.pyc 39 | *.so 40 | *.com 41 | *.class 42 | *.dll 43 | *.exe 44 | */rdoc/ 45 | 46 | # Testing # 47 | ########### 48 | .watchr 49 | .rspec 50 | spec/* 51 | spec/fixtures/* 52 | test/* 53 | features/* 54 | examples/* 55 | Guardfile 56 | Procfile 57 | .kitchen* 58 | .rubocop.yml 59 | spec/* 60 | Rakefile 61 | .travis.yml 62 | .foodcritic 63 | .codeclimate.yml 64 | 65 | # SCM # 66 | ####### 67 | .git 68 | */.git 69 | .gitignore 70 | .gitmodules 71 | .gitconfig 72 | .gitattributes 73 | .svn 74 | */.bzr/* 75 | */.hg/* 76 | */.svn/* 77 | 78 | # Berkshelf # 79 | ############# 80 | Berksfile 81 | Berksfile.lock 82 | cookbooks/* 83 | tmp 84 | 85 | # Policyfile # 86 | ############## 87 | Policyfile.rb 88 | Policyfile.lock.json 89 | 90 | # Cookbooks # 91 | ############# 92 | CONTRIBUTING* 93 | CHANGELOG* 94 | TESTING* 95 | MAINTAINERS.toml 96 | 97 | # Strainer # 98 | ############ 99 | Colanderfile 100 | Strainerfile 101 | .colander 102 | .strainer 103 | 104 | # Vagrant # 105 | ########### 106 | .vagrant 107 | Vagrantfile 108 | -------------------------------------------------------------------------------- /src/components/core/cookbooks/gusztavvargadr_workstations_core/.kitchen.yml: -------------------------------------------------------------------------------- 1 | --- 2 | driver: 3 | name: vagrant 4 | vagrantfiles: 5 | - ../../../../Vagrantfile.kitchen 6 | 7 | provisioner: 8 | name: chef_solo 9 | 10 | verifier: 11 | name: inspec 12 | 13 | platforms: 14 | - name: w 15 | transport: 16 | name: winrm 17 | driver: 18 | box: gusztavvargadr/w16s 19 | 20 | suites: 21 | - name: default 22 | run_list: 23 | - recipe[gusztavvargadr_workstations_core::default] 24 | attributes: 25 | gusztavvargadr_workstations_core: 26 | requirements: 27 | features: 28 | TelnetClient: 29 | tools: 30 | chocolatey: 31 | nuget.commandline: 32 | terraform: 33 | version: 0.8.8 34 | git: 35 | install: 36 | ignorechecksum: 37 | params: "'/GitAndUnixToolsOnPath /NoShellIntegration'" 38 | powershell: 39 | elevated: true 40 | windows: 41 | .NET Core SDK: 42 | source: https://download.microsoft.com/download/B/9/F/B9F1AF57-C14A-4670-9973-CDF47209B5BF/dotnet-dev-win-x64.1.0.4.exe 43 | install: 44 | - /install 45 | - /quiet 46 | - /norestart 47 | directory: /Program Files/dotnet 48 | SQL Server Management Studio 16: 49 | source: https://download.microsoft.com/download/9/3/3/933EA6DD-58C5-4B78-8BEC-2DF389C72BE0/SSMS-Setup-ENU.exe 50 | install: 51 | - /install 52 | - /quiet 53 | - /norestart 54 | directory: /Program Files (x86)/Microsoft SQL Server/130/Tools/Binn/ManagementStudio 55 | elevated: true 56 | files: 57 | file:///Windows/System32/drivers/etc/hosts: /Users/vagrant/AppData/Local/Temp/hosts 58 | -------------------------------------------------------------------------------- /src/Vagrantfile.core.rb: -------------------------------------------------------------------------------- 1 | require 'yaml' 2 | require 'erb' 3 | 4 | def gusztavvargadr_workstations_vm(config, vm_directory, vm) 5 | src_directory = File.dirname(__FILE__) 6 | includes = ["#{(Pathname.new vm_directory).relative_path_from (Pathname.new src_directory)}/#{vm}"] 7 | options = gusztavvargadr_workstations_vm_options(src_directory, includes) 8 | 9 | config.vm.define vm, primary: options['default'], autostart: options['default'] do |config_vm| 10 | box = options['box'] 11 | box = vm if box.to_s.empty? 12 | 13 | box_parts = box.split(':') 14 | box = box_parts[0] 15 | 16 | box = "gusztavvargadr/#{box}" unless box.include?('/') 17 | config_vm.vm.box = box 18 | 19 | config_vm.vm.box_version = box_parts[1] unless box_parts.length == 1 20 | 21 | box_url = "#{src_directory}/boxes/#{box}.json" 22 | config_vm.vm.box_url = "file://#{box_url}" if File.exist?(box_url) 23 | 24 | config_vm.vm.provider 'hyperv' do |h, override| 25 | h.memory = options['provider']['memory'] 26 | h.cpus = options['provider']['cpus'] 27 | h.enable_virtualization_extensions = true 28 | h.linked_clone = true if options['provider']['linked_clone'] 29 | override.vm.network 'private_network', bridge: ENV['VAGRANT_NETWORK_BRIDGE'] 30 | override.vm.synced_folder '.', '/vagrant', smb_username: ENV['VAGRANT_SMB_USERNAME'], smb_password: ENV['VAGRANT_SMB_PASSWORD'] 31 | end 32 | 33 | config_vm.vm.provider 'virtualbox' do |vb| 34 | vb.memory = options['provider']['memory'] 35 | vb.cpus = options['provider']['cpus'] 36 | vb.linked_clone = true if options['provider']['linked_clone'] 37 | end 38 | 39 | config_vm.vm.synced_folder "#{src_directory}/..", '/vagrant-workstations' 40 | 41 | options_chef = options['chef'] 42 | gusztavvargadr_workstations_vm_chef config_vm, options_chef, 'requirements' 43 | # config_vm.vm.provision :reload 44 | gusztavvargadr_workstations_vm_chef config_vm, options_chef, 'tools' 45 | # config_vm.vm.provision :reload 46 | gusztavvargadr_workstations_vm_chef config_vm, options_chef, 'profiles' 47 | end 48 | end 49 | 50 | def gusztavvargadr_workstations_vm_options(src_directory, includes) 51 | options = {} 52 | unless includes.nil? 53 | includes.each do |include| 54 | include_parts = include.split('/') 55 | next if include_parts.length != 3 56 | 57 | include_type = include_parts[0] 58 | include_name = include_parts[1] 59 | include_version = include_parts[2] 60 | 61 | options_current = gusztavvargadr_workstations_yml(src_directory, include_type, include_name)[include_version] 62 | puts include if options_current.nil? 63 | options = options.deep_merge(gusztavvargadr_workstations_vm_options(src_directory, options_current['includes']).deep_merge(options_current)) 64 | end 65 | end 66 | options 67 | end 68 | 69 | def gusztavvargadr_workstations_yml(src_directory, type, name) 70 | yml_path = "#{src_directory}/#{type}/#{name}/vagrant.yml" 71 | return {} unless File.exist?(yml_path) 72 | YAML.load(ERB.new(File.read(yml_path)).result) 73 | end 74 | 75 | def gusztavvargadr_workstations_vm_chef(config_vm, options, stage) 76 | config_vm.vm.provision 'chef_solo' do |chef| 77 | chef.install = options['install'] 78 | 79 | chef.cookbooks_path = [''] 80 | options['cookbooks'].each do |cookbook| 81 | chef.add_recipe "#{cookbook}::#{stage}" 82 | end 83 | 84 | chef.json = options['json'] 85 | end 86 | end 87 | 88 | class ::Hash 89 | def deep_merge(other) 90 | merger = proc { |key, v1, v2| Hash === v1 && Hash === v2 ? v1.merge(v2, &merger) : Array === v1 && Array === v2 ? v1 | v2 : [:undefined, nil, :nil].include?(v2) ? v1 : v2 } 91 | self.merge(other.to_h, &merger) 92 | end 93 | end 94 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Workstations 2 | 3 | **Quick links** [Vagrant boxes] | [Vagrant resources] | [Packer templates] 4 | 5 | This repository contains Windows-based virtual workstations for .NET, SQL and infrastructure development using Vagrant with Hyper-V and VirtualBox. 6 | 7 | [Vagrant resources]: https://github.com/gusztavvargadr/vagrant 8 | 9 | **Contents** [Overview] | [Getting started] | [Usage] | [Contributing] | [Resources] 10 | 11 | ## Overview 12 | 13 | This repository contains Windows-based virtual workstations for the following scenarios: 14 | 15 | - [.NET development][StacksDotnet] with Visual Studio 2017, 2015 and 2010. 16 | - [SQL development][StacksSQL] with SQL Server Management Studio 17 and SQL Server 2014. 17 | - [Infrastructure development][StacksInfrastructure] with Vagrant using Docker, VirtualBox and AWS. 18 | 19 | All of them support an easy, source-controlled way of installing and configuring the most common development tools for the related stacks, and the management of the source code of your projects, based on [Vagrant] with [Hyper-V] / [VirtualBox] and [Chef]: 20 | 21 | - Installing [core][ComponentsCore] features, packages and managing [OS][ComponentsOS] settings. 22 | - Using different versions of [Visual Studio][ComponentsVisualStudio] and [SQL Server][ComponentsSQLServer]. 23 | - Managing [Vagrant][ComponentsVagrant] plugins and downloading boxes. 24 | - Pulling [Docker][ComponentsDocker] images. 25 | - Configuring [AWS][ComponentsAWS] profiles. 26 | - Working with [Git][ComponentsGit] and [SVN][ComponentsSVN] repositories. 27 | - Managing [NuGet][ComponentsNuGet] sources. 28 | 29 | This way you can easily create the same workstations anytime, anywhere, and instead of writing extensive documentation, you can simply share the ready to use environments with your teammates and contributors. Of course, you can extend the above options freely with any of your own configuration and provisioning steps. 30 | 31 | [Overview]: #overview 32 | 33 | ## Getting started 34 | 35 | **In this section** [Installing the tools] | [Creating your first workstation] 36 | 37 | **Note** This section assumes you are familiar with the basics of Vagrant. If that's not the case, it's recommended that you take a quick look at its [getting started guide][VagrantGettingStarted]. 38 | 39 | **Note** The workstations have been tested on Windows hosts only, but they are supposed to run on any other platform as well, given that the actual virtualization provider (e.g. VirtualBox) supports it. [Let me know][Contributing] if you encounter any issues and I'm glad to help. 40 | 41 | [Getting started]: #getting-started 42 | 43 | [VagrantGettingStarted]: https://www.vagrantup.com/intro/getting-started/index.html 44 | 45 | ### Installing the tools 46 | 47 | **In this section** [Using Hyper-V] | [Using VirtualBox] 48 | 49 | Follow the steps below to install the required tools: 50 | 51 | 1. Install [Vagrant][VagrantInstallation]. 52 | 1. Install the [Chef Development Kit][ChefDKInstallation]. 53 | 1. Install the following plugins: 54 | 1. [vagrant-reload][VagrantReloadInstallation]. 55 | 1. [vagrant-berkshelf][VagrantBerkshelfInstallation]. 56 | 1. Install the tools for the virtualization provider you want to use. 57 | 58 | [Installing the tools]: #installing-the-tools 59 | 60 | [VagrantInstallation]: https://www.vagrantup.com/docs/installation/ 61 | [ChefDKInstallation]: https://downloads.chef.io/chef-dk/ 62 | [VagrantReloadInstallation]: https://github.com/aidanns/vagrant-reload#installation 63 | [VagrantBerkshelfInstallation]: https://github.com/berkshelf/vagrant-berkshelf#installation 64 | 65 | [VagrantEnvDefaultProvider]: https://www.vagrantup.com/docs/other/environmental-variables.html#vagrant_default_provider 66 | [VagrantCliUpProvider]: https://www.vagrantup.com/docs/cli/up.html#provider-x 67 | 68 | #### Using Hyper-V 69 | 70 | **Note** Other virtualization providers that you might use will not work when Hyper-V is enabled. See [Hanselman's post][HyperVSwitching] for switching between them easily. 71 | 72 | 1. Enable [Hyper-V][HyperVEnabling]. You will need Windows 10 or Windows Server 2016 version 1607 or later on the host. 73 | - Optionally, if you plan to use Hyper-V by default, add the [environment variable][VagrantEnvDefaultProvider] `VAGRANT_DEFAULT_PROVIDER` with the value of `hyperv` to prevent specifying it every time a machine is [booted][VagrantCliUpProvider]. 74 | - Optionally, add the [environment variable][VagrantCoreHyperVLinkedClone] `VAGRANT_LINKED_CLONE` to save some disk space using [differencing disks][VagrantHyperVDifferencingDisks]. 75 | - Optionally, add the [environment variables][VagrantCoreSyncedFoldersSMB] `VAGRANT_SMB_USERNAME` and `VAGRANT_SMB_PASSWORD` with your credentials on the host to prevent Vagrant from asking it every time a machine is [booted][VagrantSyncedFoldersSMB]. 76 | 1. Create a [virtual switch][HyperVVirtualSwitchCreating] to be used with Vagrant with access to the external network. 77 | - Optionally, add the [environment variable][VagrantCoreHyperVNetworkingBridge] `VAGRANT_NETWORK_BRIDGE` with the value of the name of the virtual switch you've created to prevent Vagrant from asking for it every time a machine is [created][VagrantHyperVNetworking]. 78 | 79 | [Using Hyper-V]: #using-hyper-v 80 | 81 | [HyperVSwitching]: http://www.hanselman.com/blog/SwitchEasilyBetweenVirtualBoxAndHyperVWithABCDEditBootEntryInWindows81.aspx 82 | [HyperVEnabling]: https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v 83 | [VagrantCoreHyperVLinkedClone]: src/Vagrantfile.core.rb#L22 84 | [VagrantHyperVDifferencingDisks]: https://www.vagrantup.com/docs/hyperv/configuration.html#differencing_disk 85 | [VagrantCoreSyncedFoldersSMB]: src/Vagrantfile.core.rb#L24 86 | [VagrantSyncedFoldersSMB]: https://www.vagrantup.com/docs/synced-folders/smb.html#options 87 | [HyperVVirtualSwitchCreating]: https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/connect-to-network 88 | [VagrantCoreHyperVNetworkingBridge]: src/Vagrantfile.core.rb#L23 89 | [VagrantHyperVNetworking]: https://www.vagrantup.com/docs/hyperv/limitations.html#limited-networking 90 | 91 | #### Using VirtualBox 92 | 93 | 1. Install [VirtualBox][VirtualBoxInstallation]. It is recommended to have VirtualBox version 5.2.22 or later on the host. 94 | - Optionally, if you plan to use VirtualBox by default, add the [environment variable][VagrantEnvDefaultProvider] `VAGRANT_DEFAULT_PROVIDER` with the value of `virtualbox` to prevent specifying it every time a machine is [booted][VagrantCliUpProvider]. 95 | - Optionally, add the [environment variable][VagrantCoreVirtualBoxLinkedClone] `VAGRANT_LINKED_CLONE` to save some disk space using [linked clones][VagrantVirtualBoxLinkedClone]. 96 | 97 | [Using VirtualBox]: #using-virtualbox 98 | 99 | [VirtualBoxInstallation]: https://www.virtualbox.org/wiki/Downloads 100 | [VagrantCoreVirtualBoxLinkedClone]: src/Vagrantfile.core.rb#L30 101 | [VagrantVirtualBoxLinkedClone]: https://www.vagrantup.com/docs/virtualbox/configuration.html#linked-clones 102 | 103 | ### Creating your first workstation 104 | 105 | 108 | 109 | **Note** Booting a workstation for the first time can take a significant amount of time. If you have a slow connection, downloading the [Vagrant boxes] - usually several GBs for Windows guests - might require some patience and retries. Creating another machine from the same box later though will reuse the already downloaded one of course. 110 | 111 | **Note** Configuring the core OS after Sysprep (to support actually unique virtual machines) and provisioning the workstations (e.g. installing the custom tools not included in the [Packer templates]) by default happens during the initial boot as well. However, starting the machines again later will not need these steps, so the process will be significantly faster. 112 | 113 | **Note** The example in this section creates a workstation with a sample configuration by default, focusing on demonstrating the management of machines in general. You will see the details of how to customize it according to your preferences [later][Usage]. 114 | 115 | You are now ready to create your workstations with Vagrant. 116 | 117 | Clone this repository and navigate to the root directory of the clone using your shell. Then, enter the directory of your personal environment to list the available machines: 118 | 119 | ```sh 120 | clone$ cd src/people/me 121 | clone/src/people/me$ vagrant status 122 | ``` 123 | 124 | The output will be something similar to this: 125 | 126 | ``` 127 | work not_created (hyperv) 128 | playground not_created (hyperv) 129 | private not_created (hyperv) 130 | ``` 131 | 132 | The list shows the three default workstations, `work` intended to support the projects you work on, `playground` for generic experiments, and `private` for anything else, like communication or generic office work. None of these exsit yet, so for example, to create the `playground` one, simply invoke `vagrant up`: 133 | 134 | ```sh 135 | clone/src/people/me$ vagrant up playground 136 | ``` 137 | 138 | Now, it's time to be patient. The box - in this case, by default with [Visual Studio 2019 Community][visual-studio-2019-box] including [Windows Server 2019 Standard][windows-server-box] - will be downloaded and the machine will be provisioned before the first use to include all the components this repository supports. If this is not the configuration that you want, you can terminate the process anytime. 139 | 140 | Once the machine is ready, you can connect to it with RDP or open a remote shell using the default credentials, `vagrant` for both the user name and password: 141 | 142 | ```sh 143 | clone/src/people/me$ vagrant rdp playground 144 | clone/src/people/me$ vagrant ssh playground 145 | ``` 146 | 147 | Later, you can check the status of your machines by typing `vagrant status` again in the same directory or `vagrant global-status` anywhere to list all the machines on your host. 148 | 149 | ```sh 150 | clone/src/people/me$ vagrant status 151 | work not_created (hyperv) 152 | playground running (hyperv) 153 | private not_created (hyperv) 154 | ``` 155 | 156 | ```sh 157 | $ vagrant global-status 158 | id playground hyperv running clone/src/people/me 159 | ``` 160 | 161 | When you've finished with your work, you can shut down the machine with `vagrant halt`. This will persist the machine's state, so next time when you invoke `vagrant up`, it will boot much more faster than for the first time, and your files and settings will be preserved. 162 | 163 | ```sh 164 | clone/src/people/me$ vagrant halt playground 165 | ``` 166 | 167 | If you no longer need a machine, you can destroy it. As expected, this will wipe it completely from your system (on the next `vagrant up`, it will be provisioned again from scratch): 168 | 169 | ```sh 170 | clone/src/people/me$ vagrant destroy playground 171 | ``` 172 | 173 | The box will remain on your system after destroying the machine as `vagrant box list` reports it, as other machines might still use it. You can use `vagrant box remove` to clean it up if you no longer need it. 174 | 175 | [Creating your first workstation]: #creating-your-first-workstation 176 | 177 | [Vagrant boxes]: https://app.vagrantup.com/gusztavvargadr 178 | [Packer templates]: https://github.com/gusztavvargadr/packer 179 | 180 | ## Usage 181 | 182 | 187 | 188 | **In this section** [Basics] | [Components] | [Stacks] | [Projects] | [People] 189 | 190 | **Note** At this point you might want to [fork this repository][Fork] and create your own branch to save your changes and to [compare your workstations][Compare] easily with others. 191 | 192 | Take a moment to realize that this might have been the last time you installed something for your workstations manually. 193 | 194 | [Usage]: #usage 195 | 196 | [Fork]: https://help.github.com/articles/fork-a-repo/ 197 | [Compare]: https://github.com/gusztavvargadr/workstations/compare/people/gusztavvargadr#files_bucket 198 | 199 | ### Basics 200 | 201 | **In this section** [Configuration] | [Provisioning] 202 | 203 | This repository uses custom [Vagrant extensions][VagrantCore] to enable creating and reusing dynamic configurations based on [YAML] and [ERB] for the most common machine parameters and provisioning options. 204 | 205 | [Basics]: #basics 206 | 207 | [VagrantCore]: src/Vagrantfile.core.rb 208 | [YAML]: https://en.wikipedia.org/wiki/YAML 209 | [ERB]: http://www.stuartellis.name/articles/erb/ 210 | 211 | #### Configuration 212 | 213 | For example, you can define some [reasonable defaults][ComponentsCore] to be applied to every configuration: 214 | 215 | ```yml 216 | # src/components/core/vagrant.yml 217 | core: 218 | provider: 219 | memory: 8192 220 | cpus: 4 221 | ``` 222 | [Source][ComponentsCoreYaml] 223 | 224 | This means that by default the machines will allocate 8 GB RAM and 4 virtual CPUs. 225 | 226 | Also, you can define how [components][Components], like the [core OS][ComponentsOS] is being provisioned: 227 | 228 | ```yml 229 | # src/components/os/vagrant.yml 230 | core: 231 | chef: 232 | cookbooks: 233 | - gusztavvargadr_workstations_os 234 | json: 235 | gusztavvargadr_workstations_os: 236 | requirements: 237 | locales: 238 | system: en-US 239 | ui: en-US 240 | user: en-US 241 | datetime: 242 | timezone: UTC 243 | ``` 244 | [Source][ComponentsOSYaml] 245 | 246 | This shows that the custom [OS cookbook][ComponentsOSCookbook] will be used for provisioning, and the specified values, in this case, `en-US` for all the locales and `UTC` for the timezone will be set. The cookbooks provide [complete samples][ComponentsOSSamples] for the scenarios they support so you can define only the options you need. 247 | 248 | YAML files are processed as ERB-templates first, so for example you can dynamically set the host's timezone for the guest: 249 | 250 | ```yaml 251 | timezone: <%= `tzutil /g`.strip %> 252 | ``` 253 | 254 | This approach can be also used to e.g. pass secrets or other sensitive information to the guests without hard-coding them, retrieving the values for example from host environment variables dynamically. 255 | 256 | You can also define further parameters for Vagrant, in this case, a base box specifying the [Visual Studio][ComponentsVisualStudio] version being used: 257 | 258 | ```yml 259 | # src/components/vs/vagrant.yml 260 | core: 261 | includes: 262 | - components/core/core 263 | 264 | v19c: 265 | includes: 266 | - components/vs/core 267 | box: visual-studio:2019-community 268 | ``` 269 | [Source][ComponentsVisualStudioYaml] 270 | 271 | In this case the configuration named `components/vs/v19c` will use the [Visual Studio 2019 Community][visual-studio-2019-box] box including [Windows Server 2019 Standard][windows-server-box]. This options is very useful for tools which take significant time to install, so instead of applying them on the first boot, they can be already included in the [Vagrant boxes]. 272 | 273 | You can also see how the existing configuration is being reused. `components/vs/v19c` includes `components/vs/core`, which in turn includes the above `components/core/core` (specifying the memory and the CPU settings). As the list notation suggests, you can include any number or other configurations. If you specify a single value (like the `box`) defined earlier, it will be overridden. Collections (for example, the list of `cookbooks`) will be merged, the new values being added after the existing ones. 274 | 275 | Components like to appear in groups to form [stacks], like using a dedicated .NET version and the related hosting options for local development. For example, for [.NET Core][StacksDotnetCore] you can define to use [Docker][ComponentsDocker] with the usual images: 276 | 277 | ```yml 278 | # src/stacks/dotnetcore/vagrant.yml 279 | core: 280 | includes: 281 | - stacks/dotnet/core 282 | - stacks/infrastructure/dockere 283 | chef: 284 | json: 285 | gusztavvargadr_workstations_dockere: 286 | profiles: 287 | images: 288 | microsoft/dotnet:sdk-nanoserver: 289 | 290 | library: 291 | includes: 292 | - stacks/dotnetcore/core 293 | - stacks/dotnet/library 294 | 295 | web: 296 | includes: 297 | - stacks/dotnetcore/core 298 | - stacks/dotnet/web 299 | chef: 300 | json: 301 | gusztavvargadr_workstations_dockere: 302 | profiles: 303 | images: 304 | microsoft/aspnetcore-build:nanoserver: 305 | ``` 306 | [Source][StacksDotnetCoreYaml] 307 | 308 | The referenced [generic .NET][StacksDotnet] configuration specifies the default Visual Studio version which you've seen before and includes [NuGet][ComponentsNuGet] as well: 309 | 310 | ```yml 311 | # src/stacks/dotnet/vagrant.yml 312 | core: 313 | includes: 314 | - components/vs/v17c 315 | - components/nuget/core 316 | 317 | library: 318 | includes: 319 | - stacks/dotnet/core 320 | 321 | web: 322 | includes: 323 | - stacks/dotnet/core 324 | ``` 325 | [Source][StacksDotnetYaml] 326 | 327 | Stacks aren't of course l'art pour l'art, but to be used in [projects]. For example, to define the core repositories of the one and only [IdentityServer], you can use the following configuration: 328 | 329 | ```yml 330 | # src/projects/identityserver/vagrant.yml 331 | core: 332 | includes: 333 | - components/git/core 334 | chef: 335 | json: 336 | gusztavvargadr_workstations_git: 337 | profiles: 338 | workspaces: 339 | identityserver: 340 | address: https://github.com/identityserver 341 | directory: /Users/vagrant/Repos/identityserver 342 | 343 | v4: 344 | includes: 345 | - projects/identityserver/core 346 | - stacks/dotnetcore/library 347 | - stacks/dotnetcore/web 348 | chef: 349 | json: 350 | gusztavvargadr_workstations_git: 351 | profiles: 352 | workspaces: 353 | identityserver: 354 | repositories: 355 | IdentityServer4: 356 | directory: v4/core 357 | IdentityServer4.AccessTokenValidation: 358 | directory: v4/accesstokenvalidation 359 | IdentityServer4.Quickstart.UI: 360 | directory: v4/quickstart 361 | ``` 362 | [Source][ProjectsIdentityServerYaml] 363 | 364 | This configuration, being referenced in your workstation will check out the mentioned repositories using [Git][ComponentsGit], and install the tools and pull the images as you've seen above. 365 | 366 | Finally, you can define [your workstation][People] to include projects like this: 367 | 368 | ```yml 369 | # src/people/me/vagrant.yml 370 | work: 371 | includes: 372 | - components/os/windows-server 373 | - projects/identityserver/v4 374 | default: true 375 | ``` 376 | [Source][PeopleYaml] 377 | 378 | And have your `Vagrantfile` reference the YAML configuration: 379 | 380 | ```ruby 381 | # src/people/me/Vagrantfile 382 | directory = File.dirname(__FILE__) 383 | require "#{directory}/../../Vagrantfile.core" 384 | 385 | Vagrant.configure('2') do |config| 386 | gusztavvargadr_workstations_vm config, directory, 'work' 387 | end 388 | ``` 389 | [Source][PeopleVagrantfile] 390 | 391 | This is a quick introduction of what happens behind the scenes when you invoke `vagrant up`. 392 | 393 | [Configuration]: #configuration 394 | 395 | #### Provisioning 396 | 397 | 400 | 401 | Even if being run in a VM with Hyper-V or VirtualBox, Windows still loves to be restarted, and this is especially the case during provisioning, when e.g. Windows Features or specific tools get installed. To support those scenarios when provisioning would require the use of another component which just got installed, but it requires a restart, all the custom cookbooks support being executed in different stages, and the custom Vagrant extension will [restart the machine][VagrantCoreRestart] between them. 402 | 403 | In the `requirements` stage core settings like Windows Features and environment variables get installed and configured. 404 | 405 | After those have been set up correctly, the `tools` stage is used to install e.g. Chocolatey packages or applications with native installers. 406 | 407 | Finally, in the `profiles` stage all the tools can now be used properly, for example, to clone Git repositories or manage NuGet sources. 408 | 409 | [Provisioning]: #provisioning 410 | 411 | [VagrantCoreRestart]: src/Vagrantfile.core.rb#L37 412 | 413 | ### Components 414 | 415 | 418 | 419 | **In this section** [Core][ComponentsCore] | [OS][ComponentsOS] | [Visual Studio][ComponentsVisualStudio] | [SQL Server][ComponentsSQLServer] | [Vagrant][ComponentsVagrant] | [Docker][ComponentsDocker] | [AWS][ComponentsAWS] | [Git][ComponentsGit] | [SVN][ComponentsSVN] | [NuGet][ComponentsNuGet] 420 | 421 | See below the list of components with their features supported out of the box. 422 | 423 | [Components]: #components 424 | 425 | #### Core 426 | 427 | - Sets environment variables 428 | - Enables Windows Features 429 | - Installs Chocolatey packages 430 | - Installs native packages 431 | - Copies files to the host 432 | 433 | [Source][ComponentsCoreYaml] 434 | [Samples][ComponentsCoreSamples] 435 | 436 | [ComponentsCore]: #core 437 | 438 | [ComponentsCoreYaml]: src/components/core/vagrant.yml 439 | [ComponentsCoreSamples]: src/components/core/cookbooks/gusztavvargadr_workstations_core/.kitchen.yml#L25 440 | [ComponentsCoreCookbook]: src/components/core/cookbooks/gusztavvargadr_workstations_core 441 | 442 | #### OS 443 | 444 | - Selects a box with the core OS preinstalled 445 | - windows-10 - [Windows 10 Enterprise][windows-10-box] 446 | - windows-server - [Windows Server 2019 Standard][windows-server-box] 447 | - Configures locales 448 | - Configures timezone 449 | 450 | [Source][ComponentsOSYaml] 451 | [Samples][ComponentsOSSamples] 452 | 453 | [ComponentsOS]: #os 454 | 455 | [windows-10-box]: https://app.vagrantup.com/gusztavvargadr/boxes/windows-10 456 | [windows-server-box]: https://app.vagrantup.com/gusztavvargadr/boxes/windows-server 457 | 458 | [ComponentsOSYaml]: src/components/os/vagrant.yml 459 | [ComponentsOSSamples]: src/components/os/cookbooks/gusztavvargadr_workstations_os/.kitchen.yml#L26 460 | [ComponentsOSCookbook]: src/components/os/cookbooks/gusztavvargadr_workstations_os 461 | 462 | #### Visual Studio 463 | 464 | - Selects a box with Visual Studio preinstalled 465 | - v17c - [Visual Studio 2017 Community][visual-studio-2017-box] 466 | - v19c - [Visual Studio 2019 Community][visual-studio-2019-box] 467 | 468 | [Source][ComponentsVisualStudioYaml] 469 | [Samples][ComponentsVisualStudioSamples] 470 | 471 | [ComponentsVisualStudio]: #visual-studio 472 | 473 | [visual-studio-2017-box]: https://app.vagrantup.com/gusztavvargadr/boxes/visual-studio/versions/2017-community 474 | [visual-studio-2019-box]: https://app.vagrantup.com/gusztavvargadr/boxes/visual-studio/versions/2019-community 475 | 476 | [ComponentsVisualStudioYaml]: src/components/vs/vagrant.yml 477 | [ComponentsVisualStudioSamples]: src/stacks/dotnet/vagrant.yml#L3 478 | 479 | #### SQL Server 480 | 481 | - Selects a box with SQL Server preinstalled 482 | - v17d - [SQL Server 2017 Developer][sql-server-2017-box] 483 | 484 | [Source][ComponentsSQLServerYaml] 485 | [Samples][ComponentsSQLServerSamples] 486 | 487 | [ComponentsSQLServer]: #sql-server 488 | 489 | [sql-server-2017-box]: https://app.vagrantup.com/gusztavvargadr/boxes/sql-server/versions/2017-developer 490 | 491 | [ComponentsSQLServerYaml]: src/components/sql/vagrant.yml 492 | [ComponentsSQLServerSamples]: src/projects/identityserver/vagrant.yml#L18 493 | 494 | #### Vagrant 495 | 496 | - Installs Vagrant 497 | - Installs plugins 498 | - Adds boxes 499 | 500 | [Source][ComponentsVagrantYaml] 501 | [Samples][ComponentsVagrantSamples] 502 | 503 | [ComponentsVagrant]: #vagrant 504 | 505 | [ComponentsVagrantYaml]: src/components/vagrant/vagrant.yml 506 | [ComponentsVagrantSamples]: src/components/vagrant/cookbooks/gusztavvargadr_workstations_vagrant/.kitchen.yml#L32 507 | [ComponentsVagrantCookbook]: src/components/vagrant/cookbooks/gusztavvargadr_workstations_vagrant 508 | 509 | #### Docker 510 | 511 | [ComponentsDocker]: #docker 512 | 513 | ##### Docker Community Edition 514 | 515 | - Installs Docker Community Edition (Edge) (requires Hyper-V host and Windows Server 2016 guest) 516 | - Pulls Docker images 517 | 518 | [Source][ComponentsDockerCYaml] 519 | [Samples][ComponentsDockerCSamples] 520 | 521 | [ComponentsDockerCYaml]: src/components/dockerc/vagrant.yml 522 | [ComponentsDockerCSamples]: src/components/dockerc/cookbooks/gusztavvargadr_workstations_dockerc/.kitchen.yml#L41 523 | [ComponentsDockerCCookbook]: src/components/dockerc/cookbooks/gusztavvargadr_workstations_dockerc 524 | 525 | ##### Docker Enterprise Edition 526 | 527 | - Installs Docker Enterprise Edition (requires Windows Server 2016 guest) 528 | - Pulls Docker images 529 | 530 | [Source][ComponentsDockerEYaml] 531 | [Samples][ComponentsDockerESamples] 532 | 533 | [ComponentsDockerEYaml]: src/components/dockere/vagrant.yml 534 | [ComponentsDockerESamples]: src/components/dockere/cookbooks/gusztavvargadr_workstations_dockere/.kitchen.yml#L29 535 | [ComponentsDockerECookbook]: src/components/dockere/cookbooks/gusztavvargadr_workstations_dockere 536 | 537 | #### AWS 538 | 539 | - Installs the AWS command-line tools 540 | - Configures AWS profiles 541 | 542 | [Source][ComponentsAWSYaml] 543 | [Samples][ComponentsAWSSamples] 544 | 545 | [ComponentsAWS]: #aws 546 | 547 | [ComponentsAWSYaml]: src/components/aws/vagrant.yml 548 | [ComponentsAWSSamples]: src/components/aws/cookbooks/gusztavvargadr_workstations_aws/.kitchen.yml#L30 549 | [ComponentsAWSCookbook]: src/components/aws/cookbooks/gusztavvargadr_workstations_aws 550 | 551 | #### Git 552 | 553 | - Installs Git 554 | - Clones public or private repositories 555 | 556 | [Source][ComponentsGitYaml] 557 | [Samples][ComponentsGitSamples] 558 | 559 | [ComponentsGit]: #git 560 | 561 | [ComponentsGitYaml]: src/components/git/vagrant.yml 562 | [ComponentsGitSamples]: src/components/git/cookbooks/gusztavvargadr_workstations_git/.kitchen.yml#L33 563 | [ComponentsGitCookbook]: src/components/git/cookbooks/gusztavvargadr_workstations_git 564 | 565 | #### SVN 566 | 567 | - Installs SVN 568 | - Checks out public or private repositories 569 | 570 | [Source][ComponentsSVNYaml] 571 | [Samples][ComponentsSVNSamples] 572 | 573 | [ComponentsSVN]: #svn 574 | 575 | [ComponentsSVNYaml]: src/components/svn/vagrant.yml 576 | [ComponentsSVNSamples]: src/components/svn/cookbooks/gusztavvargadr_workstations_svn/.kitchen.yml#L30 577 | [ComponentsSVNCookbook]: src/components/svn/cookbooks/gusztavvargadr_workstations_svn 578 | 579 | #### NuGet 580 | 581 | - Installs NuGet 582 | - Adds sources 583 | 584 | [Source][ComponentsNuGetYaml] 585 | [Samples][ComponentsNuGetSamples] 586 | 587 | [ComponentsNuGet]: #nuget 588 | 589 | [ComponentsNuGetYaml]: src/components/nuget/vagrant.yml 590 | [ComponentsNuGetSamples]: src/components/nuget/cookbooks/gusztavvargadr_workstations_nuget/.kitchen.yml#L30 591 | [ComponentsNuGetCookbook]: src/components/nuget/cookbooks/gusztavvargadr_workstations_nuget 592 | 593 | ### Stacks 594 | 595 | **In this section** [.NET][StacksDotnet] | [SQL][StacksSQL] | [Infrastructure][StacksInfrastructure] 596 | 597 | See below the list of stacks with their components configured out of the box. 598 | 599 | [Stacks]: #stacks 600 | 601 | #### .NET 602 | 603 | - Defines the base box for Visual Studio 604 | - Configures tools and settings for .NET class libraries 605 | - Configures tools and settings for .NET web applications 606 | 607 | [Source][StacksDotnetYaml] 608 | [Samples][StacksDotnetSamples] 609 | 610 | [StacksDotnet]: #net 611 | 612 | [StacksDotnetYaml]: src/stacks/dotnet/vagrant.yml 613 | [StacksDotnetSamples]: src/stacks/dotnetcore/vagrant.yml#L3 614 | 615 | ##### .NET Core 616 | 617 | - Configures tools and settings for .NET Core class libraries including Docker 618 | - Configures tools and settings for .NET Core web applications including Docker 619 | 620 | [Source][StacksDotnetCoreYaml] 621 | [Samples][StacksDotnetCoreSamples] 622 | 623 | [StacksDotnetCore]: #net-core 624 | 625 | [StacksDotnetCoreYaml]: src/stacks/dotnetcore/vagrant.yml 626 | [StacksDotnetCoreSamples]: src/projects/identityserver/vagrant.yml#L36 627 | 628 | ##### .NET Framework 629 | 630 | - Configures tools and settings for .NET Framework class libraries 631 | - Configures tools and settings for .NET Framework web applications 632 | 633 | [Source][StacksDotnetFrameworkYaml] 634 | [Samples][StacksDotnetFrameworkSamples] 635 | 636 | [StacksDotnetFramework]: #net-framework 637 | 638 | [StacksDotnetFrameworkYaml]: src/stacks/dotnetfx/vagrant.yml 639 | [StacksDotnetFrameworkSamples]: src/projects/identityserver/vagrant.yml#L16 640 | 641 | #### SQL 642 | 643 | - Defines the base box for SQL Server versions 644 | - Installs SQL Server Management Studio 17 645 | 646 | [Source][StacksSQLYaml] 647 | [Samples][StacksSQLSamples] 648 | 649 | [StacksSQL]: #sql 650 | 651 | [StacksSQLYaml]: src/stacks/sql/vagrant.yml 652 | [StacksSQLSamples]: src/projects/identityserver/vagrant.yml#L18 653 | 654 | #### Infrastructure 655 | 656 | - Installs Vagrant with Chef, Packer and the related Vagrant plugins 657 | - Installs either: 658 | - Docker Community Edition 659 | - Docker Enterprise Edition 660 | - VirtualBox 661 | - AWS command-line tools 662 | 663 | [Source][StacksInfrastructureYaml] 664 | [Samples][StacksInfrastructureSamples] 665 | 666 | [StacksInfrastructure]: #infrastructure 667 | 668 | [StacksInfrastructureYaml]: src/stacks/infrastructure/vagrant.yml 669 | [StacksInfrastructureSamples]: src/stacks/dotnetcore/vagrant.yml#L4 670 | 671 | ### Projects 672 | 673 | Below is a list of a few sample projects to demonstrate the grouping of source code with the required development and deployment tools: 674 | 675 | Using [Git][ComponentsGit]: 676 | - [GitHub][ProjectsGitHubYaml] 677 | - `projects/github/git` 678 | - [ASP.NET Core][ProjectsAspNetCoreYaml] Logging 679 | - `projects/aspnet/logging` 680 | - [IdentityServer][ProjectsIdentityServerYaml] 681 | - `projects/identityserver/v3` 682 | - `projects/identityserver/v4` 683 | 684 | Using [SVN][ComponentsSVN]: 685 | - [Apache][ProjectsApacheYaml] 686 | - `projects/apache/log4net` 687 | 688 | [Projects]: #projects 689 | 690 | [ProjectsGitHubYaml]: src/projects/github/vagrant.yml 691 | [ProjectsAspNetCoreYaml]: src/projects/aspnet/vagrant.yml 692 | [ProjectsIdentityServerYaml]: src/projects/identityserver/vagrant.yml 693 | [IdentityServer]: https://identityserver.io/ 694 | 695 | [ProjectsApacheYaml]: src/projects/apache/vagrant.yml 696 | 697 | ### People 698 | 699 | [Your actual workstations][PeopleYaml] reference the above [components], [stacks] and [projects] and now can [ask Vagrant][PeopleVagrantfile] to create them. 700 | 701 | ```sh 702 | clone$ cd src/people/me 703 | clone/src/people/me$ vagrant up (work|playground|private) 704 | ``` 705 | 706 | The current samples contain only a single personal configuration, but this approach can be used to define baseline configurations for teams or organizations. Simple create a new folder within `src/people` for your entities, and include the projects and stacks you require as you've seen above. Then include the team or organizaton in your personal one according to your current membership or projects you want to work with. 707 | 708 | [People]: #people 709 | [PeopleYaml]: src/people/me/vagrant.yml 710 | [PeopleVagrantfile]: src/people/me/Vagrantfile 711 | 712 | ## Contributing 713 | 714 | Any feedback, [issues] or [pull requests] are welcome and greatly appreciated. Chek out the [milestones] for the list of planned releases. 715 | 716 | 724 | 725 | [Contributing]: #contributing 726 | 727 | [Issues]: https://github.com/gusztavvargadr/workstations/issues 728 | [Pull requests]: https://github.com/gusztavvargadr/workstations/pulls 729 | [Milestones]: https://github.com/gusztavvargadr/workstations/milestones 730 | 731 | ## Resources 732 | 733 | This repository could not exist without the following great tools: 734 | 735 | * [Vagrant] 736 | * [Hyper-V] 737 | * [VirtualBox] 738 | * [Chef] 739 | 740 | [Resources]: #resources 741 | 742 | [Vagrant]: https://www.vagrantup.com/ 743 | [Hyper-V]: https://en.wikipedia.org/wiki/Hyper-V 744 | [VirtualBox]: https://www.virtualbox.org/ 745 | [Chef]: https://www.chef.io/chef/ 746 | --------------------------------------------------------------------------------