├── .ci ├── .ci-utility-files │ └── common.sh ├── build ├── dev-build ├── generate-licenses ├── load-ci.sh ├── nightly-build ├── release ├── release-initiator ├── spec │ ├── clean-packet.sh │ ├── create-hosts.sh │ ├── create-packet.sh │ ├── env.sh │ ├── notify-success.sh │ ├── pull-log.sh │ └── run-test.sh └── sync.sh ├── .copywrite.hcl ├── .envrc ├── .github ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── ISSUE_TEMPLATE │ ├── bug-report.md │ ├── config.yml │ ├── engineering-task.md │ └── vagrant-feature-request.md └── workflows │ ├── backport.yml │ ├── check-legacy-links-format.yml │ ├── code.yml │ ├── dev-appimage-build.yml │ ├── dev-arch-build.yml │ ├── dev-build.yml │ ├── dev-debs-build.yml │ ├── dev-macos-build.yml │ ├── dev-rpms-build.yml │ ├── dev-windows-build.yml │ ├── go-spectest-skipped.yml │ ├── go-spectest.yml │ ├── go-testing-skipped.yml │ ├── go-testing.yml │ ├── initiate-release.yml │ ├── lock.yml │ ├── nightlies.yml │ ├── release.yml │ ├── testing-skipped.yml │ └── testing.yml ├── .gitignore ├── .gitmodules ├── .runner.sh ├── .vimrc ├── .yardopts ├── CHANGELOG.md ├── Dockerfile ├── Gemfile ├── LICENSE ├── Makefile ├── README.md ├── RELEASE.md ├── Rakefile ├── Vagrantfile ├── bin └── vagrant ├── binstubs └── vagrant ├── builtin ├── README.md ├── configvagrant │ └── main.go ├── httpdownloader │ ├── downloader │ │ ├── downloader.go │ │ └── httpmethod_string.go │ └── main.go ├── myplugin │ ├── command │ │ ├── command.go │ │ ├── dothing.go │ │ ├── host.go │ │ ├── info.go │ │ └── interactive.go │ ├── communicator │ │ └── communicator.go │ ├── host │ │ ├── alwaystrue.go │ │ └── cap │ │ │ └── write_hello.go │ ├── locales │ │ ├── assets │ │ │ ├── en.json │ │ │ └── es.json │ │ └── locales.go │ ├── main.go │ ├── mappers.go │ ├── proto │ │ ├── plugin.pb.go │ │ └── plugin.proto │ ├── provider │ │ └── happy.go │ └── push │ │ └── encouragement.go └── otherplugin │ ├── command.go │ ├── guest │ ├── alwaystrue.go │ └── cap │ │ └── write_hello.go │ └── main.go ├── cmd └── vagrant │ └── main.go ├── contrib ├── README.md ├── bash │ └── completion.sh ├── emacs │ └── vagrant.el ├── st │ └── Ruby.sublime-settings ├── sudoers │ ├── linux-fedora │ ├── linux-suse │ ├── linux-ubuntu │ └── osx ├── vim │ └── vagrantfile.vim └── zsh │ ├── _vagrant │ └── generate_zsh_completion.rb ├── ext └── vagrant │ └── vagrant_ssl │ ├── extconf.rb │ ├── vagrant_ssl.c │ └── vagrant_ssl.h ├── flake.lock ├── flake.nix ├── gen.go ├── go.mod ├── go.sum ├── internal ├── assets │ ├── .gitignore │ ├── dev.go │ └── dev_assets.go ├── cli │ ├── base.go │ ├── base_init.go │ ├── datagen │ │ └── datagen.go │ ├── dynamic.go │ ├── help.go │ ├── main.go │ ├── option.go │ ├── plugin.go │ ├── ui.go │ └── version.go ├── clicontext │ ├── config.go │ ├── storage.go │ ├── storage_test.go │ └── testing.go ├── client │ ├── client.go │ ├── doc.go │ ├── job.go │ ├── noop.go │ ├── noop_test.go │ ├── operation.go │ ├── runner.go │ ├── server.go │ └── testing.go ├── clierrors │ ├── detect.go │ ├── detect_test.go │ └── humanize.go ├── config │ ├── config.go │ ├── config_test.go │ ├── eval_context.go │ ├── funcs │ │ ├── encoding.go │ │ ├── encoding_test.go │ │ ├── filesystem.go │ │ ├── filesystem_test.go │ │ ├── stdlib.go │ │ ├── testdata │ │ │ ├── filesystem │ │ │ │ ├── bare.tmpl │ │ │ │ ├── func.tmpl │ │ │ │ ├── hello.tmpl │ │ │ │ ├── hello.txt │ │ │ │ ├── icon.png │ │ │ │ ├── list.tmpl │ │ │ │ └── recursive.tmpl │ │ │ ├── git-commits │ │ │ │ ├── A │ │ │ │ └── DOTgit │ │ │ │ │ ├── COMMIT_EDITMSG │ │ │ │ │ ├── HEAD │ │ │ │ │ ├── config │ │ │ │ │ ├── description │ │ │ │ │ ├── hooks │ │ │ │ │ ├── applypatch-msg.sample │ │ │ │ │ ├── commit-msg.sample │ │ │ │ │ ├── fsmonitor-watchman.sample │ │ │ │ │ ├── post-update.sample │ │ │ │ │ ├── pre-applypatch.sample │ │ │ │ │ ├── pre-commit.sample │ │ │ │ │ ├── pre-merge-commit.sample │ │ │ │ │ ├── pre-push.sample │ │ │ │ │ ├── pre-rebase.sample │ │ │ │ │ ├── pre-receive.sample │ │ │ │ │ ├── prepare-commit-msg.sample │ │ │ │ │ └── update.sample │ │ │ │ │ ├── index │ │ │ │ │ ├── info │ │ │ │ │ └── exclude │ │ │ │ │ ├── logs │ │ │ │ │ ├── HEAD │ │ │ │ │ └── refs │ │ │ │ │ │ └── heads │ │ │ │ │ │ └── master │ │ │ │ │ ├── objects │ │ │ │ │ ├── 38 │ │ │ │ │ │ └── 0afd697abe993b89bfa08d8dd8724d6a513ba1 │ │ │ │ │ ├── 45 │ │ │ │ │ │ └── 9023a450b8e8aa344d230839d41e2f115d3d28 │ │ │ │ │ ├── 7c │ │ │ │ │ │ └── 178d1296d8b87e83382c324aeb32e2def2a5af │ │ │ │ │ ├── 8b │ │ │ │ │ │ └── 137891791fe96927ad78e64b0aad7bded08bdc │ │ │ │ │ ├── b1 │ │ │ │ │ │ └── a2dcd337f590a185a20f013721e7410764bab4 │ │ │ │ │ └── e6 │ │ │ │ │ │ └── 9de29bb2d1d6434b8b29ae775ad8c2e48c5391 │ │ │ │ │ └── refs │ │ │ │ │ └── heads │ │ │ │ │ └── master │ │ │ ├── git-remote │ │ │ │ └── DOTgit │ │ │ │ │ ├── HEAD │ │ │ │ │ ├── config │ │ │ │ │ ├── description │ │ │ │ │ ├── hooks │ │ │ │ │ ├── applypatch-msg.sample │ │ │ │ │ ├── commit-msg.sample │ │ │ │ │ ├── fsmonitor-watchman.sample │ │ │ │ │ ├── post-update.sample │ │ │ │ │ ├── pre-applypatch.sample │ │ │ │ │ ├── pre-commit.sample │ │ │ │ │ ├── pre-merge-commit.sample │ │ │ │ │ ├── pre-push.sample │ │ │ │ │ ├── pre-rebase.sample │ │ │ │ │ ├── pre-receive.sample │ │ │ │ │ ├── prepare-commit-msg.sample │ │ │ │ │ └── update.sample │ │ │ │ │ └── info │ │ │ │ │ └── exclude │ │ │ └── git-tag │ │ │ │ ├── A │ │ │ │ └── DOTgit │ │ │ │ ├── COMMIT_EDITMSG │ │ │ │ ├── HEAD │ │ │ │ ├── config │ │ │ │ ├── description │ │ │ │ ├── hooks │ │ │ │ ├── applypatch-msg.sample │ │ │ │ ├── commit-msg.sample │ │ │ │ ├── fsmonitor-watchman.sample │ │ │ │ ├── post-update.sample │ │ │ │ ├── pre-applypatch.sample │ │ │ │ ├── pre-commit.sample │ │ │ │ ├── pre-merge-commit.sample │ │ │ │ ├── pre-push.sample │ │ │ │ ├── pre-rebase.sample │ │ │ │ ├── pre-receive.sample │ │ │ │ ├── prepare-commit-msg.sample │ │ │ │ └── update.sample │ │ │ │ ├── index │ │ │ │ ├── info │ │ │ │ └── exclude │ │ │ │ ├── logs │ │ │ │ ├── HEAD │ │ │ │ └── refs │ │ │ │ │ └── heads │ │ │ │ │ └── master │ │ │ │ ├── objects │ │ │ │ ├── 7c │ │ │ │ │ └── 178d1296d8b87e83382c324aeb32e2def2a5af │ │ │ │ ├── e5 │ │ │ │ │ └── bde566e1270e2ed44a9a5a01d51b4eb9c8850b │ │ │ │ └── e6 │ │ │ │ │ └── 9de29bb2d1d6434b8b29ae775ad8c2e48c5391 │ │ │ │ └── refs │ │ │ │ ├── heads │ │ │ │ └── master │ │ │ │ └── tags │ │ │ │ └── hello │ │ ├── vcs_git.go │ │ └── vcs_git_test.go │ ├── hook.go │ ├── path.go │ ├── path_test.go │ ├── testdata │ │ ├── compare │ │ │ ├── app.hcl │ │ │ ├── app_labels.hcl │ │ │ ├── app_path_relative.hcl │ │ │ ├── build.hcl │ │ │ ├── build_registry.hcl │ │ │ ├── project.hcl │ │ │ ├── project_function.hcl │ │ │ ├── project_path_project.hcl │ │ │ └── project_pwd.hcl │ │ ├── plugins │ │ │ ├── explicit.hcl │ │ │ ├── implicit.hcl │ │ │ ├── implicit_registry.hcl │ │ │ ├── mix.hcl │ │ │ └── none.hcl │ │ └── validate │ │ │ ├── app.hcl │ │ │ ├── no_build.hcl │ │ │ └── valid.hcl │ ├── testing.go │ ├── vagrant.go │ ├── validate.go │ └── validate_test.go ├── core │ ├── arg.go │ ├── basis.go │ ├── basis_test.go │ ├── box.go │ ├── box_collection.go │ ├── box_collection_test.go │ ├── box_metadata.go │ ├── box_metadata_test.go │ ├── box_test.go │ ├── component_creator.go │ ├── core.go │ ├── core_manager.go │ ├── doc.go │ ├── error.go │ ├── factory.go │ ├── helpers_test.go │ ├── hook.go │ ├── labels.go │ ├── loadlocation_string.go │ ├── machine.go │ ├── machine_test.go │ ├── mappers.go │ ├── operation.go │ ├── project.go │ ├── project_test.go │ ├── state_bag.go │ ├── state_bag_test.go │ ├── target.go │ ├── target_index.go │ ├── target_index_test.go │ ├── target_test.go │ ├── testing_basis.go │ ├── testing_project.go │ ├── testing_target.go │ └── vagrantfile.go ├── datasource │ ├── datasource.go │ ├── git.go │ ├── git_test.go │ ├── local.go │ └── testdata │ │ └── git-noop │ │ ├── DOTgit │ │ ├── COMMIT_EDITMSG │ │ ├── HEAD │ │ ├── config │ │ ├── description │ │ ├── hooks │ │ │ ├── applypatch-msg.sample │ │ │ ├── commit-msg.sample │ │ │ ├── fsmonitor-watchman.sample │ │ │ ├── post-update.sample │ │ │ ├── pre-applypatch.sample │ │ │ ├── pre-commit.sample │ │ │ ├── pre-merge-commit.sample │ │ │ ├── pre-push.sample │ │ │ ├── pre-rebase.sample │ │ │ ├── pre-receive.sample │ │ │ ├── prepare-commit-msg.sample │ │ │ └── update.sample │ │ ├── index │ │ ├── info │ │ │ └── exclude │ │ ├── logs │ │ │ ├── HEAD │ │ │ └── refs │ │ │ │ └── heads │ │ │ │ └── master │ │ ├── objects │ │ │ ├── 18 │ │ │ │ └── 2027df9c3c65cf974c160987ebd15962a96b06 │ │ │ ├── 19 │ │ │ │ └── 24b8606e1d56acb7e2059652ad059d4bac6f2e │ │ │ ├── 42 │ │ │ │ └── e94293c5ab5c800ae0bb60708e23f146d70c7d │ │ │ ├── 1d │ │ │ │ └── ea92c978dfb5de0a2c4fd06b5d66aa94030a52 │ │ │ ├── ae │ │ │ │ └── 22fcefd0d5d1ec4933de6a306e3628ebaf78c5 │ │ │ ├── b6 │ │ │ │ └── bf15100c570f2be6a231a095d395ed16dfed81 │ │ │ ├── e6 │ │ │ │ └── 9de29bb2d1d6434b8b29ae775ad8c2e48c5391 │ │ │ └── f7 │ │ │ │ └── 606d1f7258d9eb1ef0bc6cf34816a70bbd6f8d │ │ └── refs │ │ │ └── heads │ │ │ └── master │ │ └── vagrant.hcl ├── factory │ ├── factory.go │ └── factory_test.go ├── flags │ ├── flag.go │ ├── flag_test.go │ ├── group.go │ ├── group_test.go │ ├── set.go │ ├── set_test.go │ └── type_string.go ├── pkg │ ├── README.md │ ├── circbufsync │ │ └── circbufsync.go │ ├── copy │ │ └── copy.go │ ├── defaults │ │ ├── .gitignore │ │ ├── .travis.yml │ │ ├── LICENSE │ │ ├── defaults.go │ │ ├── defaults_test.go │ │ ├── internal │ │ │ └── fixture │ │ │ │ └── test.go │ │ └── setter.go │ ├── finalcontext │ │ └── finalcontext.go │ ├── flag │ │ ├── doc.go │ │ ├── flag.go │ │ ├── flag_bool.go │ │ ├── flag_enum.go │ │ ├── flag_enum_single.go │ │ ├── flag_float.go │ │ ├── flag_int.go │ │ ├── flag_string.go │ │ ├── flag_string_map.go │ │ ├── flag_string_slice.go │ │ ├── flag_time.go │ │ ├── flag_var.go │ │ ├── set.go │ │ └── set_test.go │ ├── gatedwriter │ │ ├── writer.go │ │ └── writer_test.go │ ├── iosync │ │ └── iosync.go │ ├── protowriter │ │ └── protowriter.go │ ├── signalcontext │ │ └── signalcontext.go │ └── spinner │ │ ├── .gitignore │ │ ├── .travis.yml │ │ ├── LICENSE │ │ ├── Makefile │ │ ├── README.md │ │ ├── _example │ │ └── main.go │ │ ├── character_sets.go │ │ └── spinner.go ├── plugin │ ├── builtin.go │ ├── doc.go │ ├── factory.go │ ├── internal.go │ ├── manager.go │ ├── plugin.go │ ├── testdata │ │ ├── pathA │ │ │ └── vagrant-plugin-a │ │ └── pathB │ │ │ ├── vagrant-plugin-a │ │ │ └── vagrant-plugin-b │ ├── testing_factory.go │ ├── testing_manager.go │ └── testing_plugin.go ├── protocolversion │ ├── context.go │ ├── current.go │ ├── grpc.go │ ├── grpc_test.go │ ├── header.go │ ├── header_test.go │ ├── negotiate.go │ ├── negotiate_test.go │ ├── type.go │ └── type_string.go ├── runner │ ├── accept.go │ ├── accept_test.go │ ├── config.go │ ├── data.go │ ├── operation.go │ ├── operation_auth.go │ ├── operation_docs.go │ ├── operation_init.go │ ├── operation_initbasis.go │ ├── operation_initproject.go │ ├── operation_run.go │ ├── runner.go │ ├── runner_test.go │ ├── testdata │ │ └── git-noop │ │ │ ├── DOTgit │ │ │ ├── COMMIT_EDITMSG │ │ │ ├── HEAD │ │ │ ├── config │ │ │ ├── description │ │ │ ├── hooks │ │ │ │ ├── applypatch-msg.sample │ │ │ │ ├── commit-msg.sample │ │ │ │ ├── fsmonitor-watchman.sample │ │ │ │ ├── post-update.sample │ │ │ │ ├── pre-applypatch.sample │ │ │ │ ├── pre-commit.sample │ │ │ │ ├── pre-merge-commit.sample │ │ │ │ ├── pre-push.sample │ │ │ │ ├── pre-rebase.sample │ │ │ │ ├── pre-receive.sample │ │ │ │ ├── prepare-commit-msg.sample │ │ │ │ └── update.sample │ │ │ ├── index │ │ │ ├── info │ │ │ │ └── exclude │ │ │ ├── logs │ │ │ │ ├── HEAD │ │ │ │ └── refs │ │ │ │ │ └── heads │ │ │ │ │ └── master │ │ │ ├── objects │ │ │ │ ├── 18 │ │ │ │ │ └── 2027df9c3c65cf974c160987ebd15962a96b06 │ │ │ │ ├── 19 │ │ │ │ │ └── 24b8606e1d56acb7e2059652ad059d4bac6f2e │ │ │ │ ├── 42 │ │ │ │ │ └── e94293c5ab5c800ae0bb60708e23f146d70c7d │ │ │ │ ├── ae │ │ │ │ │ └── 22fcefd0d5d1ec4933de6a306e3628ebaf78c5 │ │ │ │ ├── b4 │ │ │ │ │ └── 50d3da13b8f241226fca12ce3450b783d7038c │ │ │ │ ├── b6 │ │ │ │ │ └── bf15100c570f2be6a231a095d395ed16dfed81 │ │ │ │ ├── cf │ │ │ │ │ └── a0599445d5025a7798f8949c83da3899e953df │ │ │ │ ├── e6 │ │ │ │ │ └── 9de29bb2d1d6434b8b29ae775ad8c2e48c5391 │ │ │ │ └── ea │ │ │ │ │ └── 2549d66602a0a588e69f033c48944de5b7a45c │ │ │ └── refs │ │ │ │ └── heads │ │ │ │ └── master │ │ │ ├── Vagrantfile │ │ │ └── vagrant.hcl │ ├── testing.go │ ├── ui.go │ └── ui_multi.go ├── server │ ├── auth.go │ ├── auth_test.go │ ├── bindata_ui.go │ ├── execclient │ │ ├── client.go │ │ ├── escape.go │ │ ├── escape_test.go │ │ ├── sigwinch.go │ │ └── sigwinch_windows.go │ ├── gen │ │ └── ruby │ │ │ ├── .keep │ │ │ └── proto │ │ │ ├── ruby_vagrant │ │ │ ├── ruby-server_pb.rb │ │ │ └── ruby-server_services_pb.rb │ │ │ └── vagrant_server │ │ │ ├── server_pb.rb │ │ │ └── server_services_pb.rb │ ├── grpc.go │ ├── grpc_log.go │ ├── grpc_log_test.go │ ├── grpc_version.go │ ├── grpc_version_test.go │ ├── http.go │ ├── http_log.go │ ├── id.go │ ├── logbuffer │ │ ├── logbuffer.go │ │ └── logbuffer_test.go │ ├── logviewer │ │ └── logviewer.go │ ├── proto │ │ ├── ruby_vagrant │ │ │ ├── ruby-server.pb.go │ │ │ ├── ruby-server.proto │ │ │ └── ruby-server_grpc.pb.go │ │ └── vagrant_server │ │ │ ├── server.pb.go │ │ │ ├── server.proto │ │ │ └── server_grpc.pb.go │ ├── server.go │ ├── server_test.go │ ├── singleprocess │ │ ├── prune.go │ │ ├── service.go │ │ ├── service_basis.go │ │ ├── service_basis_test.go │ │ ├── service_box.go │ │ ├── service_box_test.go │ │ ├── service_config.go │ │ ├── service_config_test.go │ │ ├── service_job.go │ │ ├── service_job_test.go │ │ ├── service_logs.go │ │ ├── service_logs_test.go │ │ ├── service_project.go │ │ ├── service_project_test.go │ │ ├── service_runner.go │ │ ├── service_runner_test.go │ │ ├── service_target.go │ │ ├── service_target_test.go │ │ ├── service_test.go │ │ ├── service_version.go │ │ ├── state │ │ │ ├── basis.go │ │ │ ├── basis_test.go │ │ │ ├── box.go │ │ │ ├── box_test.go │ │ │ ├── component.go │ │ │ ├── config.go │ │ │ ├── config_test.go │ │ │ ├── decoding.go │ │ │ ├── decoding_test.go │ │ │ ├── index_time.go │ │ │ ├── job.go │ │ │ ├── job_assigned.go │ │ │ ├── job_test.go │ │ │ ├── metadata.go │ │ │ ├── project.go │ │ │ ├── project_test.go │ │ │ ├── proto.go │ │ │ ├── prune.go │ │ │ ├── prune_test.go │ │ │ ├── runner.go │ │ │ ├── runner_test.go │ │ │ ├── state.go │ │ │ ├── state_test.go │ │ │ ├── target.go │ │ │ ├── target_test.go │ │ │ ├── testing.go │ │ │ ├── vagrantfile.go │ │ │ └── validations.go │ │ └── testing.go │ ├── status.go │ └── testing.go ├── serverclient │ ├── client.go │ ├── doc.go │ ├── grpc_log.go │ └── ruby_client.go ├── serverconfig │ └── config.go └── version │ └── version.go ├── keys ├── README.md ├── vagrant ├── vagrant.key.ed25519 ├── vagrant.key.rsa ├── vagrant.pub ├── vagrant.pub.ed25519 └── vagrant.pub.rsa ├── lib ├── vagrant.rb └── vagrant │ ├── action.rb │ ├── action │ ├── builder.rb │ ├── builtin │ │ ├── box_add.rb │ │ ├── box_check_outdated.rb │ │ ├── box_remove.rb │ │ ├── box_update.rb │ │ ├── call.rb │ │ ├── cleanup_disks.rb │ │ ├── cloud_init_setup.rb │ │ ├── cloud_init_wait.rb │ │ ├── config_validate.rb │ │ ├── confirm.rb │ │ ├── delayed.rb │ │ ├── destroy_confirm.rb │ │ ├── disk.rb │ │ ├── env_set.rb │ │ ├── graceful_halt.rb │ │ ├── handle_box.rb │ │ ├── handle_box_url.rb │ │ ├── handle_forwarded_port_collisions.rb │ │ ├── has_provisioner.rb │ │ ├── is_env_set.rb │ │ ├── is_state.rb │ │ ├── lock.rb │ │ ├── message.rb │ │ ├── mixin_provisioners.rb │ │ ├── mixin_synced_folders.rb │ │ ├── prepare_clone.rb │ │ ├── provision.rb │ │ ├── provisioner_cleanup.rb │ │ ├── remote │ │ │ ├── mixin_synced_folders.rb │ │ │ └── ssh_run.rb │ │ ├── set_hostname.rb │ │ ├── ssh_exec.rb │ │ ├── ssh_run.rb │ │ ├── synced_folder_cleanup.rb │ │ ├── synced_folders.rb │ │ ├── trigger.rb │ │ └── wait_for_communicator.rb │ ├── general │ │ ├── package.rb │ │ ├── package_setup_files.rb │ │ └── package_setup_folders.rb │ ├── hook.rb │ ├── primary_runner.rb │ ├── runner.rb │ └── warden.rb │ ├── alias.rb │ ├── batch_action.rb │ ├── box.rb │ ├── box │ └── remote.rb │ ├── box_collection.rb │ ├── box_collection │ └── remote.rb │ ├── box_metadata.rb │ ├── box_metadata │ └── remote.rb │ ├── bundler.rb │ ├── capability_host.rb │ ├── cli.rb │ ├── config.rb │ ├── config │ ├── loader.rb │ ├── v1.rb │ ├── v1 │ │ ├── dummy_config.rb │ │ ├── loader.rb │ │ └── root.rb │ ├── v2.rb │ ├── v2 │ │ ├── dummy_config.rb │ │ ├── loader.rb │ │ ├── root.rb │ │ └── util.rb │ └── version_base.rb │ ├── environment.rb │ ├── environment │ └── remote.rb │ ├── errors.rb │ ├── guest.rb │ ├── guest │ └── remote.rb │ ├── host.rb │ ├── host │ └── remote.rb │ ├── machine.rb │ ├── machine │ └── remote.rb │ ├── machine_index.rb │ ├── machine_index │ └── remote.rb │ ├── machine_state.rb │ ├── patches │ ├── fake_ftp.rb │ └── log4r.rb │ ├── plugin.rb │ ├── plugin │ ├── manager.rb │ ├── remote.rb │ ├── remote │ │ ├── command.rb │ │ ├── communicator.rb │ │ ├── guest.rb │ │ ├── host.rb │ │ ├── manager.rb │ │ ├── plugin.rb │ │ ├── provider.rb │ │ ├── provisioner.rb │ │ ├── push.rb │ │ └── synced_folder.rb │ ├── state_file.rb │ ├── v1.rb │ ├── v1 │ │ ├── command.rb │ │ ├── communicator.rb │ │ ├── config.rb │ │ ├── errors.rb │ │ ├── guest.rb │ │ ├── host.rb │ │ ├── manager.rb │ │ ├── plugin.rb │ │ ├── provider.rb │ │ └── provisioner.rb │ ├── v2.rb │ └── v2 │ │ ├── command.rb │ │ ├── communicator.rb │ │ ├── components.rb │ │ ├── config.rb │ │ ├── errors.rb │ │ ├── guest.rb │ │ ├── host.rb │ │ ├── manager.rb │ │ ├── plugin.rb │ │ ├── provider.rb │ │ ├── provisioner.rb │ │ ├── push.rb │ │ ├── synced_folder.rb │ │ └── trigger.rb │ ├── protobufs │ └── proto │ │ ├── plugin │ │ ├── grpc_broker_pb.rb │ │ └── grpc_broker_services_pb.rb │ │ ├── protostructure_pb.rb │ │ ├── ruby_vagrant │ │ ├── ruby-server_pb.rb │ │ └── ruby-server_services_pb.rb │ │ ├── vagrant_plugin_sdk │ │ ├── plugin_pb.rb │ │ └── plugin_services_pb.rb │ │ └── vagrant_server │ │ ├── server_pb.rb │ │ └── server_services_pb.rb │ ├── registry.rb │ ├── shared_helpers.rb │ ├── ui.rb │ ├── ui │ └── remote.rb │ ├── util.rb │ ├── util │ ├── ansi_escape_code_remover.rb │ ├── busy.rb │ ├── caps.rb │ ├── checkpoint_client.rb │ ├── command_deprecation.rb │ ├── counter.rb │ ├── credential_scrubber.rb │ ├── curl_helper.rb │ ├── deep_merge.rb │ ├── directory.rb │ ├── downloader.rb │ ├── env.rb │ ├── experimental.rb │ ├── file_checksum.rb │ ├── file_mode.rb │ ├── file_mutex.rb │ ├── guest_hosts.rb │ ├── guest_inspection.rb │ ├── hash_with_indifferent_access.rb │ ├── install_cli_autocomplete.rb │ ├── io.rb │ ├── ipv4_interfaces.rb │ ├── is_port_open.rb │ ├── keypair.rb │ ├── line_buffer.rb │ ├── line_ending_helpers.rb │ ├── logging_formatter.rb │ ├── map_command_options.rb │ ├── mime.rb │ ├── network_ip.rb │ ├── numeric.rb │ ├── platform.rb │ ├── powershell.rb │ ├── presence.rb │ ├── remote │ │ ├── safe_puts.rb │ │ └── ssh.rb │ ├── retryable.rb │ ├── safe_chdir.rb │ ├── safe_env.rb │ ├── safe_exec.rb │ ├── safe_puts.rb │ ├── scoped_hash_override.rb │ ├── shell_quote.rb │ ├── silence_warnings.rb │ ├── ssh.rb │ ├── stacked_proc_runner.rb │ ├── string_block_editor.rb │ ├── subprocess.rb │ ├── template_renderer.rb │ ├── uploader.rb │ ├── which.rb │ └── windows_path.rb │ ├── vagrantfile.rb │ ├── vagrantfile │ └── remote.rb │ └── version.rb ├── nix ├── go-changelog.nix ├── go-protobuf-json.nix ├── grpc-tools.nix ├── overlay.nix └── vagrant.nix ├── plugins ├── README.md ├── commands │ ├── autocomplete │ │ ├── command │ │ │ ├── install.rb │ │ │ └── root.rb │ │ └── plugin.rb │ ├── box │ │ ├── command │ │ │ ├── add.rb │ │ │ ├── download_mixins.rb │ │ │ ├── list.rb │ │ │ ├── outdated.rb │ │ │ ├── prune.rb │ │ │ ├── remove.rb │ │ │ ├── repackage.rb │ │ │ ├── root.rb │ │ │ └── update.rb │ │ └── plugin.rb │ ├── cap │ │ ├── command.rb │ │ └── plugin.rb │ ├── cloud │ │ ├── auth │ │ │ ├── login.rb │ │ │ ├── logout.rb │ │ │ ├── middleware │ │ │ │ ├── add_authentication.rb │ │ │ │ └── add_downloader_authentication.rb │ │ │ ├── plugin.rb │ │ │ ├── root.rb │ │ │ └── whoami.rb │ │ ├── box │ │ │ ├── create.rb │ │ │ ├── delete.rb │ │ │ ├── plugin.rb │ │ │ ├── root.rb │ │ │ ├── show.rb │ │ │ └── update.rb │ │ ├── client │ │ │ └── client.rb │ │ ├── errors.rb │ │ ├── list.rb │ │ ├── locales │ │ │ └── en.yml │ │ ├── plugin.rb │ │ ├── provider │ │ │ ├── create.rb │ │ │ ├── delete.rb │ │ │ ├── plugin.rb │ │ │ ├── root.rb │ │ │ ├── update.rb │ │ │ └── upload.rb │ │ ├── publish.rb │ │ ├── root.rb │ │ ├── search.rb │ │ ├── util.rb │ │ └── version │ │ │ ├── create.rb │ │ │ ├── delete.rb │ │ │ ├── plugin.rb │ │ │ ├── release.rb │ │ │ ├── revoke.rb │ │ │ ├── root.rb │ │ │ └── update.rb │ ├── destroy │ │ ├── command.rb │ │ └── plugin.rb │ ├── global-status │ │ ├── command.rb │ │ └── plugin.rb │ ├── halt │ │ ├── command.rb │ │ └── plugin.rb │ ├── help │ │ ├── command.rb │ │ └── plugin.rb │ ├── init │ │ ├── command.rb │ │ └── plugin.rb │ ├── list-commands │ │ ├── command.rb │ │ └── plugin.rb │ ├── login │ │ └── plugin.rb │ ├── package │ │ ├── command.rb │ │ └── plugin.rb │ ├── plugin │ │ ├── action.rb │ │ ├── action │ │ │ ├── expunge_plugins.rb │ │ │ ├── install_gem.rb │ │ │ ├── license_plugin.rb │ │ │ ├── list_plugins.rb │ │ │ ├── plugin_exists_check.rb │ │ │ ├── repair_plugins.rb │ │ │ ├── uninstall_plugin.rb │ │ │ └── update_gems.rb │ │ ├── command │ │ │ ├── base.rb │ │ │ ├── expunge.rb │ │ │ ├── install.rb │ │ │ ├── license.rb │ │ │ ├── list.rb │ │ │ ├── mixin_install_opts.rb │ │ │ ├── repair.rb │ │ │ ├── root.rb │ │ │ ├── uninstall.rb │ │ │ └── update.rb │ │ ├── gem_helper.rb │ │ └── plugin.rb │ ├── port │ │ ├── command.rb │ │ ├── locales │ │ │ └── en.yml │ │ └── plugin.rb │ ├── powershell │ │ ├── command.rb │ │ ├── errors.rb │ │ ├── plugin.rb │ │ └── scripts │ │ │ ├── enable_psremoting.ps1 │ │ │ └── reset_trustedhosts.ps1 │ ├── provider │ │ ├── command.rb │ │ └── plugin.rb │ ├── provision │ │ ├── command.rb │ │ └── plugin.rb │ ├── push │ │ ├── command.rb │ │ └── plugin.rb │ ├── rdp │ │ ├── command.rb │ │ ├── config.rb │ │ ├── errors.rb │ │ └── plugin.rb │ ├── reload │ │ ├── command.rb │ │ └── plugin.rb │ ├── resume │ │ ├── command.rb │ │ └── plugin.rb │ ├── serve │ │ ├── broker.rb │ │ ├── client.rb │ │ ├── client │ │ │ ├── basis.rb │ │ │ ├── box.rb │ │ │ ├── box_collection.rb │ │ │ ├── box_metadata.rb │ │ │ ├── capability_platform.rb │ │ │ ├── command.rb │ │ │ ├── communicator.rb │ │ │ ├── core_plugin_manager.rb │ │ │ ├── guest.rb │ │ │ ├── host.rb │ │ │ ├── plugin_manager.rb │ │ │ ├── project.rb │ │ │ ├── provider.rb │ │ │ ├── provisioner.rb │ │ │ ├── push.rb │ │ │ ├── state_bag.rb │ │ │ ├── synced_folder.rb │ │ │ ├── target.rb │ │ │ ├── target │ │ │ │ └── machine.rb │ │ │ ├── target_index.rb │ │ │ ├── terminal.rb │ │ │ └── vagrantfile.rb │ │ ├── command.rb │ │ ├── constants.rb │ │ ├── mappers.rb │ │ ├── mappers │ │ │ ├── basis.rb │ │ │ ├── box.rb │ │ │ ├── capabilities.rb │ │ │ ├── command.rb │ │ │ ├── communicator.rb │ │ │ ├── config_data.rb │ │ │ ├── core_plugin_manager.rb │ │ │ ├── direct.rb │ │ │ ├── duration.rb │ │ │ ├── environment.rb │ │ │ ├── folders.rb │ │ │ ├── guest.rb │ │ │ ├── host.rb │ │ │ ├── internal.rb │ │ │ ├── internal │ │ │ │ ├── graph.rb │ │ │ │ └── graph │ │ │ │ │ ├── mappers.rb │ │ │ │ │ ├── search.rb │ │ │ │ │ ├── vertex.rb │ │ │ │ │ ├── vertex │ │ │ │ │ ├── final.rb │ │ │ │ │ ├── input.rb │ │ │ │ │ ├── method.rb │ │ │ │ │ ├── named_value.rb │ │ │ │ │ ├── output.rb │ │ │ │ │ ├── root.rb │ │ │ │ │ └── value.rb │ │ │ │ │ └── weighted_vertex.rb │ │ │ ├── known_types.rb │ │ │ ├── machine.rb │ │ │ ├── mapper.rb │ │ │ ├── options.rb │ │ │ ├── pathname.rb │ │ │ ├── plugin_manager.rb │ │ │ ├── proc.rb │ │ │ ├── project.rb │ │ │ ├── provider.rb │ │ │ ├── provisioner.rb │ │ │ ├── push.rb │ │ │ ├── state_bag.rb │ │ │ ├── synced_folder.rb │ │ │ ├── target.rb │ │ │ ├── target_index.rb │ │ │ ├── terminal.rb │ │ │ ├── ui.rb │ │ │ ├── vagrantfile.rb │ │ │ └── wrappers.rb │ │ ├── plugin.rb │ │ ├── service.rb │ │ ├── service │ │ │ ├── capability_platform_service.rb │ │ │ ├── command_service.rb │ │ │ ├── communicator_service.rb │ │ │ ├── config_service.rb │ │ │ ├── guest_service.rb │ │ │ ├── host_service.rb │ │ │ ├── internal_service.rb │ │ │ ├── provider_service.rb │ │ │ ├── provisioner_service.rb │ │ │ ├── push_service.rb │ │ │ └── synced_folder_service.rb │ │ ├── type.rb │ │ ├── type │ │ │ ├── boolean.rb │ │ │ ├── command_arguments.rb │ │ │ ├── command_info.rb │ │ │ ├── communicator_command_arguments.rb │ │ │ ├── direct.rb │ │ │ ├── duration.rb │ │ │ ├── folders.rb │ │ │ ├── named_argument.rb │ │ │ ├── options.rb │ │ │ ├── ssh_info.rb │ │ │ └── winrm_info.rb │ │ ├── util.rb │ │ └── util │ │ │ ├── cacher.rb │ │ │ ├── client_setup.rb │ │ │ ├── connector.rb │ │ │ ├── direct_conversions.rb │ │ │ ├── exception_transformer.rb │ │ │ ├── func_spec.rb │ │ │ ├── has_broker.rb │ │ │ ├── has_logger.rb │ │ │ ├── has_mapper.rb │ │ │ ├── has_seeds.rb │ │ │ ├── named_plugin.rb │ │ │ ├── service_info.rb │ │ │ └── usage_tracker.rb │ ├── snapshot │ │ ├── command │ │ │ ├── delete.rb │ │ │ ├── list.rb │ │ │ ├── pop.rb │ │ │ ├── push.rb │ │ │ ├── push_shared.rb │ │ │ ├── restore.rb │ │ │ ├── root.rb │ │ │ └── save.rb │ │ └── plugin.rb │ ├── ssh │ │ ├── command.rb │ │ └── plugin.rb │ ├── ssh_config │ │ ├── command.rb │ │ └── plugin.rb │ ├── status │ │ ├── command.rb │ │ └── plugin.rb │ ├── suspend │ │ ├── command.rb │ │ └── plugin.rb │ ├── up │ │ ├── command.rb │ │ ├── middleware │ │ │ └── store_box_metadata.rb │ │ ├── plugin.rb │ │ └── start_mixins.rb │ ├── upload │ │ ├── command.rb │ │ └── plugin.rb │ ├── validate │ │ ├── command.rb │ │ └── plugin.rb │ ├── version │ │ ├── command.rb │ │ └── plugin.rb │ ├── winrm │ │ ├── command.rb │ │ └── plugin.rb │ └── winrm_config │ │ ├── command.rb │ │ └── plugin.rb ├── communicators │ ├── ssh │ │ ├── communicator.rb │ │ └── plugin.rb │ ├── winrm │ │ ├── command_filter.rb │ │ ├── command_filters │ │ │ ├── cat.rb │ │ │ ├── chmod.rb │ │ │ ├── chown.rb │ │ │ ├── grep.rb │ │ │ ├── mkdir.rb │ │ │ ├── rm.rb │ │ │ ├── test.rb │ │ │ ├── uname.rb │ │ │ └── which.rb │ │ ├── communicator.rb │ │ ├── config.rb │ │ ├── errors.rb │ │ ├── helper.rb │ │ ├── plugin.rb │ │ └── shell.rb │ └── winssh │ │ ├── communicator.rb │ │ ├── config.rb │ │ └── plugin.rb ├── guests │ ├── alma │ │ ├── cap │ │ │ └── flavor.rb │ │ ├── guest.rb │ │ └── plugin.rb │ ├── alpine │ │ ├── cap │ │ │ ├── change_host_name.rb │ │ │ ├── configure_networks.rb │ │ │ ├── halt.rb │ │ │ ├── nfs_client.rb │ │ │ ├── rsync.rb │ │ │ └── smb.rb │ │ ├── guest.rb │ │ └── plugin.rb │ ├── alt │ │ ├── cap │ │ │ ├── change_host_name.rb │ │ │ ├── configure_networks.rb │ │ │ ├── flavor.rb │ │ │ ├── network_scripts_dir.rb │ │ │ └── rsync.rb │ │ ├── guest.rb │ │ └── plugin.rb │ ├── amazon │ │ ├── cap │ │ │ └── flavor.rb │ │ ├── guest.rb │ │ └── plugin.rb │ ├── arch │ │ ├── cap │ │ │ ├── change_host_name.rb │ │ │ ├── configure_networks.rb │ │ │ ├── nfs.rb │ │ │ ├── rsync.rb │ │ │ └── smb.rb │ │ ├── guest.rb │ │ └── plugin.rb │ ├── atomic │ │ ├── cap │ │ │ ├── change_host_name.rb │ │ │ └── docker.rb │ │ ├── guest.rb │ │ └── plugin.rb │ ├── bsd │ │ ├── cap │ │ │ ├── file_system.rb │ │ │ ├── halt.rb │ │ │ ├── mount_virtualbox_shared_folder.rb │ │ │ ├── nfs.rb │ │ │ └── public_key.rb │ │ ├── guest.rb │ │ └── plugin.rb │ ├── centos │ │ ├── cap │ │ │ └── flavor.rb │ │ ├── guest.rb │ │ └── plugin.rb │ ├── coreos │ │ ├── cap │ │ │ ├── change_host_name.rb │ │ │ ├── configure_networks.rb │ │ │ └── docker.rb │ │ ├── guest.rb │ │ └── plugin.rb │ ├── darwin │ │ ├── cap │ │ │ ├── change_host_name.rb │ │ │ ├── choose_addressable_ip_addr.rb │ │ │ ├── configure_networks.rb │ │ │ ├── darwin_version.rb │ │ │ ├── halt.rb │ │ │ ├── mount_smb_shared_folder.rb │ │ │ ├── mount_vmware_shared_folder.rb │ │ │ ├── rsync.rb │ │ │ ├── shell_expand_guest_path.rb │ │ │ └── verify_vmware_hgfs.rb │ │ ├── guest.rb │ │ └── plugin.rb │ ├── debian │ │ ├── cap │ │ │ ├── change_host_name.rb │ │ │ ├── configure_networks.rb │ │ │ ├── nfs.rb │ │ │ ├── rsync.rb │ │ │ └── smb.rb │ │ ├── guest.rb │ │ └── plugin.rb │ ├── dragonflybsd │ │ ├── guest.rb │ │ └── plugin.rb │ ├── elementary │ │ ├── guest.rb │ │ └── plugin.rb │ ├── esxi │ │ ├── cap │ │ │ ├── change_host_name.rb │ │ │ ├── configure_networks.rb │ │ │ ├── halt.rb │ │ │ ├── mount_nfs_folder.rb │ │ │ └── public_key.rb │ │ ├── guest.rb │ │ └── plugin.rb │ ├── fedora │ │ ├── cap │ │ │ └── flavor.rb │ │ ├── guest.rb │ │ └── plugin.rb │ ├── freebsd │ │ ├── cap │ │ │ ├── change_host_name.rb │ │ │ ├── configure_networks.rb │ │ │ ├── mount_virtualbox_shared_folder.rb │ │ │ ├── rsync.rb │ │ │ └── shell_expand_guest_path.rb │ │ ├── guest.rb │ │ └── plugin.rb │ ├── funtoo │ │ ├── cap │ │ │ └── configure_networks.rb │ │ ├── guest.rb │ │ └── plugin.rb │ ├── gentoo │ │ ├── cap │ │ │ ├── change_host_name.rb │ │ │ └── configure_networks.rb │ │ ├── guest.rb │ │ └── plugin.rb │ ├── haiku │ │ ├── cap │ │ │ ├── change_host_name.rb │ │ │ ├── halt.rb │ │ │ ├── insert_public_key.rb │ │ │ ├── remove_public_key.rb │ │ │ └── rsync.rb │ │ ├── guest.rb │ │ └── plugin.rb │ ├── kali │ │ ├── guest.rb │ │ └── plugin.rb │ ├── linux │ │ ├── cap │ │ │ ├── change_host_name.rb │ │ │ ├── choose_addressable_ip_addr.rb │ │ │ ├── file_system.rb │ │ │ ├── halt.rb │ │ │ ├── mount_smb_shared_folder.rb │ │ │ ├── mount_virtualbox_shared_folder.rb │ │ │ ├── network_interfaces.rb │ │ │ ├── nfs.rb │ │ │ ├── persist_mount_shared_folder.rb │ │ │ ├── port.rb │ │ │ ├── public_key.rb │ │ │ ├── read_ip_address.rb │ │ │ ├── reboot.rb │ │ │ ├── rsync.rb │ │ │ └── shell_expand_guest_path.rb │ │ ├── guest.rb │ │ └── plugin.rb │ ├── mint │ │ ├── guest.rb │ │ └── plugin.rb │ ├── netbsd │ │ ├── cap │ │ │ ├── change_host_name.rb │ │ │ ├── configure_networks.rb │ │ │ ├── rsync.rb │ │ │ └── shell_expand_guest_path.rb │ │ ├── guest.rb │ │ └── plugin.rb │ ├── nixos │ │ ├── cap │ │ │ ├── change_host_name.rb │ │ │ ├── configure_networks.rb │ │ │ └── nfs_client.rb │ │ ├── guest.rb │ │ └── plugin.rb │ ├── omnios │ │ ├── cap │ │ │ ├── change_host_name.rb │ │ │ ├── mount_nfs_folder.rb │ │ │ └── rsync.rb │ │ ├── guest.rb │ │ └── plugin.rb │ ├── openbsd │ │ ├── cap │ │ │ ├── change_host_name.rb │ │ │ ├── configure_networks.rb │ │ │ ├── halt.rb │ │ │ ├── rsync.rb │ │ │ └── shell_expand_guest_path.rb │ │ ├── guest.rb │ │ └── plugin.rb │ ├── openwrt │ │ ├── cap │ │ │ ├── change_host_name.rb │ │ │ ├── halt.rb │ │ │ ├── insert_public_key.rb │ │ │ ├── remove_public_key.rb │ │ │ └── rsync.rb │ │ ├── guest.rb │ │ └── plugin.rb │ ├── photon │ │ ├── cap │ │ │ ├── change_host_name.rb │ │ │ ├── configure_networks.rb │ │ │ └── docker.rb │ │ ├── guest.rb │ │ └── plugin.rb │ ├── pld │ │ ├── cap │ │ │ ├── change_host_name.rb │ │ │ ├── flavor.rb │ │ │ └── network_scripts_dir.rb │ │ ├── guest.rb │ │ └── plugin.rb │ ├── redhat │ │ ├── cap │ │ │ ├── change_host_name.rb │ │ │ ├── configure_networks.rb │ │ │ ├── flavor.rb │ │ │ ├── network_scripts_dir.rb │ │ │ ├── nfs_client.rb │ │ │ ├── rsync.rb │ │ │ └── smb.rb │ │ ├── guest.rb │ │ └── plugin.rb │ ├── rocky │ │ ├── cap │ │ │ └── flavor.rb │ │ ├── guest.rb │ │ └── plugin.rb │ ├── slackware │ │ ├── cap │ │ │ ├── change_host_name.rb │ │ │ └── configure_networks.rb │ │ ├── guest.rb │ │ └── plugin.rb │ ├── smartos │ │ ├── cap │ │ │ ├── change_host_name.rb │ │ │ ├── configure_networks.rb │ │ │ ├── halt.rb │ │ │ ├── insert_public_key.rb │ │ │ ├── mount_nfs.rb │ │ │ ├── remove_public_key.rb │ │ │ └── rsync.rb │ │ ├── config.rb │ │ ├── guest.rb │ │ └── plugin.rb │ ├── solaris │ │ ├── cap │ │ │ ├── change_host_name.rb │ │ │ ├── configure_networks.rb │ │ │ ├── file_system.rb │ │ │ ├── halt.rb │ │ │ ├── insert_public_key.rb │ │ │ ├── mount_virtualbox_shared_folder.rb │ │ │ ├── remove_public_key.rb │ │ │ └── rsync.rb │ │ ├── config.rb │ │ ├── guest.rb │ │ └── plugin.rb │ ├── solaris11 │ │ ├── cap │ │ │ ├── change_host_name.rb │ │ │ └── configure_networks.rb │ │ ├── config.rb │ │ ├── guest.rb │ │ └── plugin.rb │ ├── suse │ │ ├── cap │ │ │ ├── change_host_name.rb │ │ │ ├── configure_networks.rb │ │ │ ├── halt.rb │ │ │ ├── network_scripts_dir.rb │ │ │ ├── nfs_client.rb │ │ │ └── rsync.rb │ │ ├── guest.rb │ │ └── plugin.rb │ ├── tinycore │ │ ├── cap │ │ │ ├── change_host_name.rb │ │ │ ├── configure_networks.rb │ │ │ ├── halt.rb │ │ │ ├── mount_nfs.rb │ │ │ └── rsync.rb │ │ ├── guest.rb │ │ └── plugin.rb │ ├── trisquel │ │ ├── guest.rb │ │ └── plugin.rb │ ├── ubuntu │ │ ├── guest.rb │ │ └── plugin.rb │ └── windows │ │ ├── cap │ │ ├── change_host_name.rb │ │ ├── choose_addressable_ip_addr.rb │ │ ├── configure_networks.rb │ │ ├── file_system.rb │ │ ├── halt.rb │ │ ├── mount_shared_folder.rb │ │ ├── public_key.rb │ │ ├── reboot.rb │ │ └── rsync.rb │ │ ├── config.rb │ │ ├── errors.rb │ │ ├── guest.rb │ │ ├── guest_network.rb │ │ ├── plugin.rb │ │ └── scripts │ │ ├── mount_volume.ps1.erb │ │ ├── reboot_detect.ps1 │ │ ├── set_work_network.ps1 │ │ └── winrs_v3_get_adapters.ps1 ├── hosts │ ├── alt │ │ ├── cap │ │ │ └── nfs.rb │ │ ├── host.rb │ │ └── plugin.rb │ ├── arch │ │ ├── cap │ │ │ └── nfs.rb │ │ ├── host.rb │ │ └── plugin.rb │ ├── bsd │ │ ├── cap │ │ │ ├── nfs.rb │ │ │ ├── path.rb │ │ │ └── ssh.rb │ │ ├── host.rb │ │ └── plugin.rb │ ├── darwin │ │ ├── cap │ │ │ ├── configured_ip_addresses.rb │ │ │ ├── fs_iso.rb │ │ │ ├── nfs.rb │ │ │ ├── path.rb │ │ │ ├── provider_install_virtualbox.rb │ │ │ ├── rdp.rb │ │ │ ├── smb.rb │ │ │ └── version.rb │ │ ├── host.rb │ │ ├── plugin.rb │ │ └── scripts │ │ │ └── install_virtualbox.sh │ ├── freebsd │ │ ├── cap │ │ │ └── nfs.rb │ │ ├── host.rb │ │ └── plugin.rb │ ├── gentoo │ │ ├── cap │ │ │ └── nfs.rb │ │ ├── host.rb │ │ └── plugin.rb │ ├── linux │ │ ├── cap │ │ │ ├── fs_iso.rb │ │ │ ├── nfs.rb │ │ │ ├── rdp.rb │ │ │ └── ssh.rb │ │ ├── host.rb │ │ └── plugin.rb │ ├── null │ │ ├── host.rb │ │ └── plugin.rb │ ├── redhat │ │ ├── cap │ │ │ └── nfs.rb │ │ ├── host.rb │ │ └── plugin.rb │ ├── slackware │ │ ├── cap │ │ │ └── nfs.rb │ │ ├── host.rb │ │ └── plugin.rb │ ├── suse │ │ ├── cap │ │ │ └── nfs.rb │ │ ├── host.rb │ │ └── plugin.rb │ ├── void │ │ ├── cap │ │ │ └── nfs.rb │ │ ├── host.rb │ │ └── plugin.rb │ └── windows │ │ ├── cap │ │ ├── configured_ip_addresses.rb │ │ ├── fs_iso.rb │ │ ├── nfs.rb │ │ ├── provider_install_virtualbox.rb │ │ ├── ps.rb │ │ ├── rdp.rb │ │ ├── smb.rb │ │ └── ssh.rb │ │ ├── host.rb │ │ ├── plugin.rb │ │ └── scripts │ │ ├── check_credentials.ps1 │ │ ├── host_info.ps1 │ │ ├── install_virtualbox.ps1 │ │ ├── set_share.ps1 │ │ ├── set_ssh_key_permissions.ps1 │ │ ├── unset_share.ps1 │ │ └── utils │ │ └── VagrantSSH │ │ └── VagrantSSH.psm1 ├── kernel_v1 │ ├── config │ │ ├── nfs.rb │ │ ├── package.rb │ │ ├── ssh.rb │ │ ├── vagrant.rb │ │ └── vm.rb │ └── plugin.rb ├── kernel_v2 │ ├── config │ │ ├── cloud_init.rb │ │ ├── disk.rb │ │ ├── package.rb │ │ ├── push.rb │ │ ├── ssh.rb │ │ ├── ssh_connect.rb │ │ ├── trigger.rb │ │ ├── vagrant.rb │ │ ├── vm.rb │ │ ├── vm_provisioner.rb │ │ ├── vm_subvm.rb │ │ └── vm_trigger.rb │ └── plugin.rb ├── providers │ ├── docker │ │ ├── action.rb │ │ ├── action │ │ │ ├── build.rb │ │ │ ├── compare_synced_folders.rb │ │ │ ├── connect_networks.rb │ │ │ ├── create.rb │ │ │ ├── destroy.rb │ │ │ ├── destroy_build_image.rb │ │ │ ├── destroy_network.rb │ │ │ ├── forwarded_ports.rb │ │ │ ├── has_ssh.rb │ │ │ ├── host_machine.rb │ │ │ ├── host_machine_build_dir.rb │ │ │ ├── host_machine_port_checker.rb │ │ │ ├── host_machine_port_warning.rb │ │ │ ├── host_machine_required.rb │ │ │ ├── host_machine_sync_folders.rb │ │ │ ├── host_machine_sync_folders_disable.rb │ │ │ ├── init_state.rb │ │ │ ├── is_build.rb │ │ │ ├── is_host_machine_created.rb │ │ │ ├── login.rb │ │ │ ├── prepare_forwarded_port_collision_params.rb │ │ │ ├── prepare_networks.rb │ │ │ ├── prepare_nfs_settings.rb │ │ │ ├── prepare_nfs_valid_ids.rb │ │ │ ├── prepare_ssh.rb │ │ │ ├── pull.rb │ │ │ ├── start.rb │ │ │ ├── stop.rb │ │ │ └── wait_for_running.rb │ │ ├── cap │ │ │ ├── has_communicator.rb │ │ │ ├── proxy_machine.rb │ │ │ └── public_address.rb │ │ ├── command │ │ │ ├── exec.rb │ │ │ ├── logs.rb │ │ │ └── run.rb │ │ ├── communicator.rb │ │ ├── config.rb │ │ ├── driver.rb │ │ ├── driver │ │ │ └── compose.rb │ │ ├── errors.rb │ │ ├── executor │ │ │ ├── local.rb │ │ │ └── vagrant.rb │ │ ├── hostmachine │ │ │ └── Vagrantfile │ │ ├── plugin.rb │ │ ├── provider.rb │ │ └── synced_folder.rb │ ├── hyperv │ │ ├── action.rb │ │ ├── action │ │ │ ├── check_access.rb │ │ │ ├── check_enabled.rb │ │ │ ├── configure.rb │ │ │ ├── delete_vm.rb │ │ │ ├── export.rb │ │ │ ├── import.rb │ │ │ ├── is_windows.rb │ │ │ ├── message_will_not_destroy.rb │ │ │ ├── net_set_mac.rb │ │ │ ├── net_set_vlan.rb │ │ │ ├── package.rb │ │ │ ├── package_metadata_json.rb │ │ │ ├── package_setup_files.rb │ │ │ ├── package_setup_folders.rb │ │ │ ├── package_vagrantfile.rb │ │ │ ├── read_guest_ip.rb │ │ │ ├── read_state.rb │ │ │ ├── resume_vm.rb │ │ │ ├── set_name.rb │ │ │ ├── snapshot_delete.rb │ │ │ ├── snapshot_restore.rb │ │ │ ├── snapshot_save.rb │ │ │ ├── start_instance.rb │ │ │ ├── stop_instance.rb │ │ │ ├── suspend_vm.rb │ │ │ └── wait_for_ip_address.rb │ │ ├── cap │ │ │ ├── cleanup_disks.rb │ │ │ ├── configure_disks.rb │ │ │ ├── public_address.rb │ │ │ ├── snapshot_list.rb │ │ │ └── validate_disk_ext.rb │ │ ├── config.rb │ │ ├── driver.rb │ │ ├── errors.rb │ │ ├── plugin.rb │ │ ├── provider.rb │ │ └── scripts │ │ │ ├── attach_disk_drive.ps1 │ │ │ ├── check_hyperv.ps1 │ │ │ ├── check_hyperv_access.ps1 │ │ │ ├── clone_vhd.ps1 │ │ │ ├── configure_vm.ps1 │ │ │ ├── create_snapshot.ps1 │ │ │ ├── delete_snapshot.ps1 │ │ │ ├── delete_vm.ps1 │ │ │ ├── dismount_vhd.ps1 │ │ │ ├── export_vm.ps1 │ │ │ ├── file_sync.ps1 │ │ │ ├── get_network_config.ps1 │ │ │ ├── get_network_mac.ps1 │ │ │ ├── get_switches.ps1 │ │ │ ├── get_vhd.ps1 │ │ │ ├── get_vm_status.ps1 │ │ │ ├── has_vmcx_support.ps1 │ │ │ ├── import_vm.ps1 │ │ │ ├── list_hdds.ps1 │ │ │ ├── list_snapshots.ps1 │ │ │ ├── new_vhd.ps1 │ │ │ ├── remove_disk_drive.ps1 │ │ │ ├── resize_disk_drive.ps1 │ │ │ ├── restore_snapshot.ps1 │ │ │ ├── resume_vm.ps1 │ │ │ ├── set_enhanced_session_transport_type.ps1 │ │ │ ├── set_name.ps1 │ │ │ ├── set_network_mac.ps1 │ │ │ ├── set_network_vlan.ps1 │ │ │ ├── set_vm_integration_services.ps1 │ │ │ ├── start_vm.ps1 │ │ │ ├── stop_vm.ps1 │ │ │ ├── suspend_vm.ps1 │ │ │ └── utils │ │ │ ├── VagrantMessages │ │ │ └── VagrantMessages.psm1 │ │ │ └── VagrantVM │ │ │ └── VagrantVM.psm1 │ └── virtualbox │ │ ├── action.rb │ │ ├── action │ │ ├── boot.rb │ │ ├── check_accessible.rb │ │ ├── check_created.rb │ │ ├── check_guest_additions.rb │ │ ├── check_running.rb │ │ ├── check_virtualbox.rb │ │ ├── clean_machine_folder.rb │ │ ├── clear_forwarded_ports.rb │ │ ├── clear_network_interfaces.rb │ │ ├── created.rb │ │ ├── customize.rb │ │ ├── destroy.rb │ │ ├── destroy_unused_network_interfaces.rb │ │ ├── discard_state.rb │ │ ├── export.rb │ │ ├── forced_halt.rb │ │ ├── forward_ports.rb │ │ ├── import.rb │ │ ├── import_master.rb │ │ ├── is_paused.rb │ │ ├── is_running.rb │ │ ├── is_saved.rb │ │ ├── match_mac_address.rb │ │ ├── message_already_running.rb │ │ ├── message_not_created.rb │ │ ├── message_not_running.rb │ │ ├── message_will_not_destroy.rb │ │ ├── network.rb │ │ ├── network_fix_ipv6.rb │ │ ├── package.rb │ │ ├── package_setup_files.rb │ │ ├── package_setup_folders.rb │ │ ├── package_vagrantfile.rb │ │ ├── prepare_clone_snapshot.rb │ │ ├── prepare_forwarded_port_collision_params.rb │ │ ├── prepare_nfs_settings.rb │ │ ├── prepare_nfs_valid_ids.rb │ │ ├── resume.rb │ │ ├── sane_defaults.rb │ │ ├── set_default_nic_type.rb │ │ ├── set_name.rb │ │ ├── setup_package_files.rb │ │ ├── snapshot_delete.rb │ │ ├── snapshot_restore.rb │ │ ├── snapshot_save.rb │ │ └── suspend.rb │ │ ├── cap.rb │ │ ├── cap │ │ ├── cleanup_disks.rb │ │ ├── configure_disks.rb │ │ ├── mount_options.rb │ │ ├── public_address.rb │ │ └── validate_disk_ext.rb │ │ ├── config.rb │ │ ├── driver │ │ ├── base.rb │ │ ├── meta.rb │ │ ├── version_4_0.rb │ │ ├── version_4_1.rb │ │ ├── version_4_2.rb │ │ ├── version_4_3.rb │ │ ├── version_5_0.rb │ │ ├── version_5_1.rb │ │ ├── version_5_2.rb │ │ ├── version_6_0.rb │ │ ├── version_6_1.rb │ │ └── version_7_0.rb │ │ ├── model │ │ ├── forwarded_port.rb │ │ ├── storage_controller.rb │ │ └── storage_controller_array.rb │ │ ├── plugin.rb │ │ ├── provider.rb │ │ ├── synced_folder.rb │ │ └── util │ │ └── compile_forwarded_ports.rb ├── provisioners │ ├── ansible │ │ ├── cap │ │ │ └── guest │ │ │ │ ├── alpine │ │ │ │ └── ansible_install.rb │ │ │ │ ├── arch │ │ │ │ └── ansible_install.rb │ │ │ │ ├── debian │ │ │ │ └── ansible_install.rb │ │ │ │ ├── facts.rb │ │ │ │ ├── fedora │ │ │ │ └── ansible_install.rb │ │ │ │ ├── freebsd │ │ │ │ └── ansible_install.rb │ │ │ │ ├── pip │ │ │ │ └── pip.rb │ │ │ │ ├── posix │ │ │ │ └── ansible_installed.rb │ │ │ │ ├── redhat │ │ │ │ └── ansible_install.rb │ │ │ │ ├── suse │ │ │ │ └── ansible_install.rb │ │ │ │ └── ubuntu │ │ │ │ └── ansible_install.rb │ │ ├── config │ │ │ ├── base.rb │ │ │ ├── guest.rb │ │ │ └── host.rb │ │ ├── constants.rb │ │ ├── errors.rb │ │ ├── helpers.rb │ │ ├── plugin.rb │ │ └── provisioner │ │ │ ├── base.rb │ │ │ ├── guest.rb │ │ │ └── host.rb │ ├── cfengine │ │ ├── cap │ │ │ ├── debian │ │ │ │ └── cfengine_install.rb │ │ │ ├── linux │ │ │ │ ├── cfengine_installed.rb │ │ │ │ └── cfengine_needs_bootstrap.rb │ │ │ ├── redhat │ │ │ │ └── cfengine_install.rb │ │ │ └── suse │ │ │ │ └── cfengine_install.rb │ │ ├── config.rb │ │ ├── plugin.rb │ │ └── provisioner.rb │ ├── chef │ │ ├── cap │ │ │ ├── debian │ │ │ │ └── chef_install.rb │ │ │ ├── freebsd │ │ │ │ ├── chef_install.rb │ │ │ │ └── chef_installed.rb │ │ │ ├── linux │ │ │ │ └── chef_installed.rb │ │ │ ├── omnios │ │ │ │ ├── chef_install.rb │ │ │ │ └── chef_installed.rb │ │ │ ├── redhat │ │ │ │ └── chef_install.rb │ │ │ ├── suse │ │ │ │ └── chef_install.rb │ │ │ └── windows │ │ │ │ ├── chef_install.rb │ │ │ │ └── chef_installed.rb │ │ ├── command_builder.rb │ │ ├── config │ │ │ ├── base.rb │ │ │ ├── base_runner.rb │ │ │ ├── chef_apply.rb │ │ │ ├── chef_client.rb │ │ │ ├── chef_solo.rb │ │ │ └── chef_zero.rb │ │ ├── installer.rb │ │ ├── omnibus.rb │ │ ├── plugin.rb │ │ └── provisioner │ │ │ ├── base.rb │ │ │ ├── chef_apply.rb │ │ │ ├── chef_client.rb │ │ │ ├── chef_solo.rb │ │ │ └── chef_zero.rb │ ├── container │ │ ├── client.rb │ │ ├── config.rb │ │ ├── installer.rb │ │ ├── plugin.rb │ │ └── provisioner.rb │ ├── docker │ │ ├── cap │ │ │ ├── centos │ │ │ │ ├── docker_install.rb │ │ │ │ └── docker_start_service.rb │ │ │ ├── debian │ │ │ │ ├── docker_install.rb │ │ │ │ └── docker_start_service.rb │ │ │ ├── fedora │ │ │ │ └── docker_install.rb │ │ │ ├── linux │ │ │ │ ├── docker_configure_vagrant_user.rb │ │ │ │ ├── docker_daemon_running.rb │ │ │ │ └── docker_installed.rb │ │ │ └── windows │ │ │ │ └── docker_daemon_running.rb │ │ ├── client.rb │ │ ├── config.rb │ │ ├── installer.rb │ │ ├── plugin.rb │ │ └── provisioner.rb │ ├── file │ │ ├── config.rb │ │ ├── plugin.rb │ │ └── provisioner.rb │ ├── podman │ │ ├── cap │ │ │ ├── centos │ │ │ │ └── podman_install.rb │ │ │ ├── linux │ │ │ │ └── podman_installed.rb │ │ │ └── redhat │ │ │ │ └── podman_install.rb │ │ ├── client.rb │ │ ├── config.rb │ │ ├── installer.rb │ │ ├── plugin.rb │ │ └── provisioner.rb │ ├── puppet │ │ ├── config │ │ │ ├── puppet.rb │ │ │ └── puppet_server.rb │ │ ├── plugin.rb │ │ └── provisioner │ │ │ ├── puppet.rb │ │ │ └── puppet_server.rb │ ├── salt │ │ ├── bootstrap_downloader.rb │ │ ├── config.rb │ │ ├── errors.rb │ │ ├── plugin.rb │ │ └── provisioner.rb │ └── shell │ │ ├── config.rb │ │ ├── plugin.rb │ │ └── provisioner.rb ├── pushes │ ├── atlas │ │ ├── config.rb │ │ ├── errors.rb │ │ ├── locales │ │ │ └── en.yml │ │ ├── plugin.rb │ │ └── push.rb │ ├── ftp │ │ ├── adapter.rb │ │ ├── config.rb │ │ ├── errors.rb │ │ ├── locales │ │ │ └── en.yml │ │ ├── plugin.rb │ │ └── push.rb │ ├── heroku │ │ ├── config.rb │ │ ├── errors.rb │ │ ├── locales │ │ │ └── en.yml │ │ ├── plugin.rb │ │ └── push.rb │ ├── local-exec │ │ ├── config.rb │ │ ├── errors.rb │ │ ├── locales │ │ │ └── en.yml │ │ ├── plugin.rb │ │ └── push.rb │ └── noop │ │ ├── config.rb │ │ ├── plugin.rb │ │ └── push.rb └── synced_folders │ ├── nfs │ ├── action_cleanup.rb │ ├── config.rb │ ├── plugin.rb │ └── synced_folder.rb │ ├── rsync │ ├── command │ │ ├── rsync.rb │ │ └── rsync_auto.rb │ ├── default_unix_cap.rb │ ├── helper.rb │ ├── plugin.rb │ └── synced_folder.rb │ ├── smb │ ├── cap │ │ ├── default_fstab_modification.rb │ │ └── mount_options.rb │ ├── config.rb │ ├── errors.rb │ ├── plugin.rb │ └── synced_folder.rb │ └── unix_mount_helpers.rb ├── scripts ├── install_rvm ├── setup_tests ├── sign.sh └── website_push_www.sh ├── shell.nix ├── tasks ├── acceptance.rake ├── bundler.rake └── test.rake ├── templates ├── commands │ ├── init │ │ ├── Vagrantfile.erb │ │ └── Vagrantfile.min.erb │ ├── ssh_config │ │ └── config.erb │ └── winrm_config │ │ └── config.erb ├── config │ ├── messages.erb │ └── validation_failed.erb ├── guests │ ├── alpine │ │ ├── network_dhcp.erb │ │ └── network_static.erb │ ├── alt │ │ ├── network_dhcp.erb │ │ ├── network_ipv4address.erb │ │ ├── network_ipv4route.erb │ │ └── network_static.erb │ ├── arch │ │ ├── default_network │ │ │ ├── network_dhcp.erb │ │ │ ├── network_static.erb │ │ │ └── network_static6.erb │ │ └── systemd_networkd │ │ │ ├── network_dhcp.erb │ │ │ ├── network_static.erb │ │ │ └── network_static6.erb │ ├── coreos │ │ └── etcd.service.erb │ ├── debian │ │ ├── network_dhcp.erb │ │ ├── network_static.erb │ │ └── network_static6.erb │ ├── freebsd │ │ ├── network_dhcp.erb │ │ ├── network_static.erb │ │ └── network_static6.erb │ ├── funtoo │ │ ├── network_dhcp.erb │ │ ├── network_static.erb │ │ └── network_static6.erb │ ├── gentoo │ │ ├── network_dhcp.erb │ │ ├── network_static.erb │ │ ├── network_static6.erb │ │ └── network_systemd.erb │ ├── linux │ │ └── etc_fstab.erb │ ├── netbsd │ │ ├── network_dhcp.erb │ │ └── network_static.erb │ ├── nixos │ │ ├── hostname.erb │ │ └── network.erb │ ├── openbsd │ │ ├── network_dhcp.erb │ │ ├── network_static.erb │ │ └── network_static6.erb │ ├── redhat │ │ ├── network_dhcp.erb │ │ ├── network_static.erb │ │ └── network_static6.erb │ ├── slackware │ │ ├── network_dhcp.erb │ │ └── network_static.erb │ └── suse │ │ ├── network_dhcp.erb │ │ ├── network_static.erb │ │ └── network_static6.erb ├── license │ ├── license.html.tmpl │ ├── license.rtf.tmpl │ └── license.tmpl ├── locales │ ├── comm_winrm.yml │ ├── command_ps.yml │ ├── command_rdp.yml │ ├── en.yml │ ├── guest_windows.yml │ ├── providers_docker.yml │ ├── providers_hyperv.yml │ └── synced_folder_smb.yml ├── nfs │ ├── exports_bsd.erb │ ├── exports_darwin.erb │ └── exports_linux.erb ├── package_Vagrantfile.erb ├── provisioners │ ├── chef_client │ │ └── client.erb │ ├── chef_solo │ │ └── solo.erb │ └── chef_zero │ │ └── zero.erb └── rgloader.rb ├── test ├── acceptance │ ├── base.rb │ ├── provider-docker │ │ └── lifecycle_spec.rb │ ├── provider-virtualbox │ │ ├── linked_clone_spec.rb │ │ └── network_intnet_spec.rb │ ├── shared │ │ └── context_virtualbox.rb │ └── skeletons │ │ ├── basic_docker │ │ └── Vagrantfile │ │ ├── linked_clone │ │ └── Vagrantfile │ │ └── network_intnet │ │ └── Vagrantfile ├── config │ └── acceptance_boxes.yml ├── support │ └── isolated_environment.rb ├── unit │ ├── base.rb │ ├── bin │ │ └── vagrant_test.rb │ ├── plugins │ │ ├── commands │ │ │ ├── autocomplete │ │ │ │ └── commands │ │ │ │ │ └── install_test.rb │ │ │ ├── box │ │ │ │ └── command │ │ │ │ │ ├── add_test.rb │ │ │ │ │ ├── outdated_test.rb │ │ │ │ │ ├── prune_test.rb │ │ │ │ │ ├── remove_test.rb │ │ │ │ │ ├── repackage_test.rb │ │ │ │ │ └── update_test.rb │ │ │ ├── cap │ │ │ │ └── command_test.rb │ │ │ ├── cloud │ │ │ │ ├── auth │ │ │ │ │ ├── login_test.rb │ │ │ │ │ ├── logout_test.rb │ │ │ │ │ ├── middleware │ │ │ │ │ │ ├── add_authentication_test.rb │ │ │ │ │ │ └── add_downloader_authentication_test.rb │ │ │ │ │ └── whoami_test.rb │ │ │ │ ├── box │ │ │ │ │ ├── create_test.rb │ │ │ │ │ ├── delete_test.rb │ │ │ │ │ ├── show_test.rb │ │ │ │ │ └── update_test.rb │ │ │ │ ├── client_test.rb │ │ │ │ ├── list_test.rb │ │ │ │ ├── provider │ │ │ │ │ ├── create_test.rb │ │ │ │ │ ├── delete_test.rb │ │ │ │ │ ├── update_test.rb │ │ │ │ │ └── upload_test.rb │ │ │ │ ├── publish_test.rb │ │ │ │ ├── search_test.rb │ │ │ │ └── version │ │ │ │ │ ├── create_test.rb │ │ │ │ │ ├── delete_test.rb │ │ │ │ │ ├── release_test.rb │ │ │ │ │ ├── revoke_test.rb │ │ │ │ │ └── update_test.rb │ │ │ ├── destroy │ │ │ │ └── command_test.rb │ │ │ ├── global-status │ │ │ │ └── command_test.rb │ │ │ ├── init │ │ │ │ └── command_test.rb │ │ │ ├── list-commands │ │ │ │ └── command_test.rb │ │ │ ├── package │ │ │ │ └── command_test.rb │ │ │ ├── plugin │ │ │ │ └── action │ │ │ │ │ ├── expunge_plugins_test.rb │ │ │ │ │ ├── install_gem_test.rb │ │ │ │ │ ├── plugin_exists_check_test.rb │ │ │ │ │ ├── uninstall_plugin_test.rb │ │ │ │ │ └── update_gems_test.rb │ │ │ ├── port │ │ │ │ └── command_test.rb │ │ │ ├── powershell │ │ │ │ └── command_test.rb │ │ │ ├── provider │ │ │ │ └── command_test.rb │ │ │ ├── push │ │ │ │ └── command_test.rb │ │ │ ├── reload │ │ │ │ └── command_test.rb │ │ │ ├── serve │ │ │ │ ├── mappers_test.rb │ │ │ │ ├── service │ │ │ │ │ ├── guest_service_test.rb │ │ │ │ │ └── host_service_test.rb │ │ │ │ └── util │ │ │ │ │ └── exception_transformer_test.rb │ │ │ ├── snapshot │ │ │ │ └── command │ │ │ │ │ ├── delete_test.rb │ │ │ │ │ ├── list_test.rb │ │ │ │ │ ├── pop_test.rb │ │ │ │ │ ├── push_test.rb │ │ │ │ │ ├── restore_test.rb │ │ │ │ │ ├── root_test.rb │ │ │ │ │ └── save_test.rb │ │ │ ├── ssh_config │ │ │ │ └── command_test.rb │ │ │ ├── suspend │ │ │ │ └── command_test.rb │ │ │ ├── up │ │ │ │ ├── command_test.rb │ │ │ │ └── middleware │ │ │ │ │ └── store_box_metadata_test.rb │ │ │ ├── upload │ │ │ │ └── command_test.rb │ │ │ ├── validate │ │ │ │ └── command_test.rb │ │ │ ├── winrm │ │ │ │ └── command_test.rb │ │ │ └── winrm_config │ │ │ │ └── command_test.rb │ │ ├── communicators │ │ │ ├── ssh │ │ │ │ └── communicator_test.rb │ │ │ ├── winrm │ │ │ │ ├── command_filter_test.rb │ │ │ │ ├── communicator_test.rb │ │ │ │ ├── config_test.rb │ │ │ │ ├── helper_test.rb │ │ │ │ ├── plugin_test.rb │ │ │ │ └── shell_test.rb │ │ │ └── winssh │ │ │ │ └── communicator_test.rb │ │ ├── guests │ │ │ ├── alma │ │ │ │ └── cap │ │ │ │ │ └── flavor_test.rb │ │ │ ├── alpine │ │ │ │ ├── cap │ │ │ │ │ ├── change_host_name_test.rb │ │ │ │ │ ├── configure_networks_test.rb │ │ │ │ │ ├── halt_test.rb │ │ │ │ │ ├── nfs_client_test.rb │ │ │ │ │ └── rsync_test.rb │ │ │ │ └── plugin_test.rb │ │ │ ├── alt │ │ │ │ └── cap │ │ │ │ │ ├── change_host_name_test.rb │ │ │ │ │ ├── configure_networks_test.rb │ │ │ │ │ ├── flavor_test.rb │ │ │ │ │ ├── network_scripts_dir_test.rb │ │ │ │ │ └── rsync_test.rb │ │ │ ├── amazon │ │ │ │ └── cap │ │ │ │ │ └── flavor_test.rb │ │ │ ├── arch │ │ │ │ └── cap │ │ │ │ │ ├── change_host_name_test.rb │ │ │ │ │ ├── configure_networks_test.rb │ │ │ │ │ ├── rsync_test.rb │ │ │ │ │ └── smb_test.rb │ │ │ ├── atomic │ │ │ │ └── cap │ │ │ │ │ ├── change_host_name_test.rb │ │ │ │ │ └── docker_test.rb │ │ │ ├── bsd │ │ │ │ └── cap │ │ │ │ │ ├── file_system_test.rb │ │ │ │ │ ├── halt_test.rb │ │ │ │ │ ├── insert_public_key_test.rb │ │ │ │ │ ├── mount_virtual_box_shared_folder_test.rb │ │ │ │ │ ├── nfs_test.rb │ │ │ │ │ └── remove_public_key_test.rb │ │ │ ├── centos │ │ │ │ └── cap │ │ │ │ │ └── flavor_test.rb │ │ │ ├── coreos │ │ │ │ └── cap │ │ │ │ │ ├── change_host_name_test.rb │ │ │ │ │ ├── configure_networks_test.rb │ │ │ │ │ └── docker_test.rb │ │ │ ├── darwin │ │ │ │ └── cap │ │ │ │ │ ├── change_host_name_test.rb │ │ │ │ │ ├── choose_addressable_ip_addr_test.rb │ │ │ │ │ ├── darwin_version_test.rb │ │ │ │ │ ├── halt_test.rb │ │ │ │ │ ├── mount_vmware_shared_folder_test.rb │ │ │ │ │ └── shell_expand_guest_path_test.rb │ │ │ ├── debian │ │ │ │ └── cap │ │ │ │ │ ├── change_host_name_test.rb │ │ │ │ │ ├── configure_networks_test.rb │ │ │ │ │ ├── nfs_client_test.rb │ │ │ │ │ ├── rsync_test.rb │ │ │ │ │ └── smb_test.rb │ │ │ ├── esxi │ │ │ │ └── cap │ │ │ │ │ ├── halt_test.rb │ │ │ │ │ └── public_key_test.rb │ │ │ ├── freebsd │ │ │ │ └── cap │ │ │ │ │ ├── change_host_name_test.rb │ │ │ │ │ ├── configure_networks_test.rb │ │ │ │ │ ├── mount_virtual_box_shared_folder_test.rb │ │ │ │ │ ├── rsync_test.rb │ │ │ │ │ └── shell_expand_guest_path_test.rb │ │ │ ├── gentoo │ │ │ │ └── cap │ │ │ │ │ └── change_host_name_test.rb │ │ │ ├── haiku │ │ │ │ └── cap │ │ │ │ │ └── rsync_test.rb │ │ │ ├── linux │ │ │ │ └── cap │ │ │ │ │ ├── change_host_name_test.rb │ │ │ │ │ ├── choose_addressable_ip_addr_test.rb │ │ │ │ │ ├── file_system_test.rb │ │ │ │ │ ├── halt_test.rb │ │ │ │ │ ├── insert_public_key_test.rb │ │ │ │ │ ├── mount_nfs_test.rb │ │ │ │ │ ├── mount_shared_folder_test.rb │ │ │ │ │ ├── mount_smb_shared_folder_test.rb │ │ │ │ │ ├── mount_virtual_box_shared_folder_test.rb │ │ │ │ │ ├── network_interfaces_test.rb │ │ │ │ │ ├── nfs_client_test.rb │ │ │ │ │ ├── persist_mount_shared_folder_test.rb │ │ │ │ │ ├── port_test.rb │ │ │ │ │ ├── reboot_test.rb │ │ │ │ │ ├── remove_public_key_test.rb │ │ │ │ │ ├── rsync_test.rb │ │ │ │ │ └── shell_expand_guest_path_test.rb │ │ │ ├── netbsd │ │ │ │ └── cap │ │ │ │ │ └── shell_expand_guest_path_test.rb │ │ │ ├── omnios │ │ │ │ └── cap │ │ │ │ │ ├── change_host_name_test.rb │ │ │ │ │ ├── mount_nfs_folder_test.rb │ │ │ │ │ └── rsync_test.rb │ │ │ ├── openbsd │ │ │ │ └── cap │ │ │ │ │ ├── change_host_name_test.rb │ │ │ │ │ ├── halt_test.rb │ │ │ │ │ ├── rsync_test.rb │ │ │ │ │ └── shell_expand_guest_path_test.rb │ │ │ ├── openwrt │ │ │ │ ├── cap │ │ │ │ │ ├── change_host_name_test.rb │ │ │ │ │ ├── halt_test.rb │ │ │ │ │ ├── insert_public_key_test.rb │ │ │ │ │ ├── remove_public_key_test.rb │ │ │ │ │ └── rsync_test.rb │ │ │ │ └── guest_test.rb │ │ │ ├── photon │ │ │ │ └── cap │ │ │ │ │ ├── change_host_name_test.rb │ │ │ │ │ ├── configure_networks_test.rb │ │ │ │ │ └── docker_test.rb │ │ │ ├── pld │ │ │ │ └── cap │ │ │ │ │ ├── change_host_name_test.rb │ │ │ │ │ ├── flavor_test.rb │ │ │ │ │ └── network_scripts_dir_test.rb │ │ │ ├── redhat │ │ │ │ └── cap │ │ │ │ │ ├── change_host_name_test.rb │ │ │ │ │ ├── configure_networks_test.rb │ │ │ │ │ ├── flavor_test.rb │ │ │ │ │ ├── network_scripts_dir_test.rb │ │ │ │ │ ├── nfs_client_test.rb │ │ │ │ │ ├── rsync_test.rb │ │ │ │ │ └── smb_test.rb │ │ │ ├── rocky │ │ │ │ └── cap │ │ │ │ │ └── flavor_test.rb │ │ │ ├── slackware │ │ │ │ └── cap │ │ │ │ │ ├── change_host_name_test.rb │ │ │ │ │ └── configure_networks_test.rb │ │ │ ├── smartos │ │ │ │ └── cap │ │ │ │ │ ├── change_host_name_test.rb │ │ │ │ │ ├── configure_networks_test.rb │ │ │ │ │ ├── halt_test.rb │ │ │ │ │ ├── insert_public_key_test.rb │ │ │ │ │ ├── mount_nfs_test.rb │ │ │ │ │ ├── remove_public_key_test.rb │ │ │ │ │ └── rsync_test.rb │ │ │ ├── solaris │ │ │ │ └── cap │ │ │ │ │ ├── file_system_test.rb │ │ │ │ │ └── halt_test.rb │ │ │ ├── solaris11 │ │ │ │ └── cap │ │ │ │ │ ├── change_host_name_test.rb │ │ │ │ │ └── configure_networks_test.rb │ │ │ ├── suse │ │ │ │ └── cap │ │ │ │ │ ├── change_host_name_test.rb │ │ │ │ │ ├── configure_networks_test.rb │ │ │ │ │ ├── halt_test.rb │ │ │ │ │ ├── network_scripts_dir_test.rb │ │ │ │ │ ├── nfs_client_test.rb │ │ │ │ │ └── rsync_test.rb │ │ │ ├── tinycore │ │ │ │ └── cap │ │ │ │ │ ├── change_host_name_test.rb │ │ │ │ │ └── halt_test.rb │ │ │ └── windows │ │ │ │ ├── cap │ │ │ │ ├── change_host_name_test.rb │ │ │ │ ├── file_system_test.rb │ │ │ │ ├── halt_test.rb │ │ │ │ ├── insert_public_key_test.rb │ │ │ │ ├── mount_shared_folder_test.rb │ │ │ │ ├── reboot_test.rb │ │ │ │ ├── remove_public_key_test.rb │ │ │ │ └── rsync_test.rb │ │ │ │ ├── config_test.rb │ │ │ │ └── guest_network_test.rb │ │ ├── hosts │ │ │ ├── bsd │ │ │ │ └── cap │ │ │ │ │ ├── nfs_test.rb │ │ │ │ │ ├── path_test.rb │ │ │ │ │ └── ssh_test.rb │ │ │ ├── darwin │ │ │ │ └── cap │ │ │ │ │ ├── configured_ip_addresses_test.rb │ │ │ │ │ ├── fs_iso_test.rb │ │ │ │ │ ├── nfs_test.rb │ │ │ │ │ ├── path_test.rb │ │ │ │ │ ├── rdp_test.rb │ │ │ │ │ ├── smb_test.rb │ │ │ │ │ └── version_test.rb │ │ │ ├── linux │ │ │ │ └── cap │ │ │ │ │ ├── fs_iso_test.rb │ │ │ │ │ ├── nfs_test.rb │ │ │ │ │ └── ssh_test.rb │ │ │ ├── void │ │ │ │ └── cap │ │ │ │ │ └── nfs_test.rb │ │ │ └── windows │ │ │ │ └── cap │ │ │ │ ├── configure_ip_addresses_test.rb │ │ │ │ ├── fs_iso_test.rb │ │ │ │ ├── smb_test.rb │ │ │ │ └── ssh_test.rb │ │ ├── kernel_v2 │ │ │ └── config │ │ │ │ ├── cloud_init_test.rb │ │ │ │ ├── disk_test.rb │ │ │ │ ├── package_test.rb │ │ │ │ ├── push_test.rb │ │ │ │ ├── ssh_connect_test.rb │ │ │ │ ├── ssh_test.rb │ │ │ │ ├── trigger_test.rb │ │ │ │ ├── vagrant_test.rb │ │ │ │ ├── vm_test.rb │ │ │ │ └── vm_trigger_test.rb │ │ ├── providers │ │ │ ├── docker │ │ │ │ ├── action │ │ │ │ │ ├── compare_synced_folders_test.rb │ │ │ │ │ ├── connect_networks_test.rb │ │ │ │ │ ├── create_test.rb │ │ │ │ │ ├── destroy_network_test.rb │ │ │ │ │ ├── host_machine_sync_folders_test.rb │ │ │ │ │ ├── login_test.rb │ │ │ │ │ └── prepare_networks_test.rb │ │ │ │ ├── command │ │ │ │ │ └── exec_test.rb │ │ │ │ ├── config_test.rb │ │ │ │ ├── driver_compose_test.rb │ │ │ │ ├── driver_test.rb │ │ │ │ ├── provider_test.rb │ │ │ │ └── synced_folder_test.rb │ │ │ ├── hyperv │ │ │ │ ├── action │ │ │ │ │ ├── check_enabled_test.rb │ │ │ │ │ ├── configure_test.rb │ │ │ │ │ ├── delete_vm_test.rb │ │ │ │ │ ├── export_test.rb │ │ │ │ │ ├── import_test.rb │ │ │ │ │ ├── is_windows_test.rb │ │ │ │ │ ├── net_set_mac_test.rb │ │ │ │ │ ├── net_set_vlan_test.rb │ │ │ │ │ ├── read_guest_ip_test.rb │ │ │ │ │ ├── read_state_test.rb │ │ │ │ │ ├── set_name_test.rb │ │ │ │ │ └── wait_for_ip_address_test.rb │ │ │ │ ├── cap │ │ │ │ │ ├── cleanup_disks_test.rb │ │ │ │ │ └── configure_disks_test.rb │ │ │ │ ├── config_test.rb │ │ │ │ ├── driver_test.rb │ │ │ │ └── provider_test.rb │ │ │ └── virtualbox │ │ │ │ ├── action │ │ │ │ ├── clean_machine_folder_test.rb │ │ │ │ ├── import_test.rb │ │ │ │ ├── match_mac_address_test.rb │ │ │ │ ├── network_fix_ipv6_test.rb │ │ │ │ ├── network_test.rb │ │ │ │ ├── prepare_nfs_settings_test.rb │ │ │ │ ├── prepare_nfs_valid_ids_test.rb │ │ │ │ └── set_default_nic_type_test.rb │ │ │ │ ├── base.rb │ │ │ │ ├── cap │ │ │ │ ├── cleanup_disks_test.rb │ │ │ │ ├── configure_disks_test.rb │ │ │ │ ├── mount_options_test.rb │ │ │ │ └── public_address_test.rb │ │ │ │ ├── cap_test.rb │ │ │ │ ├── config_test.rb │ │ │ │ ├── driver │ │ │ │ ├── base.rb │ │ │ │ ├── version_4_0_test.rb │ │ │ │ ├── version_4_1_test.rb │ │ │ │ ├── version_4_2_test.rb │ │ │ │ ├── version_4_3_test.rb │ │ │ │ ├── version_5_0_test.rb │ │ │ │ ├── version_6_0_test.rb │ │ │ │ ├── version_6_1_test.rb │ │ │ │ └── version_7_0_test.rb │ │ │ │ ├── model │ │ │ │ ├── storage_controller_array_test.rb │ │ │ │ └── storage_controller_test.rb │ │ │ │ ├── provider_test.rb │ │ │ │ ├── support │ │ │ │ └── shared │ │ │ │ │ ├── virtualbox_driver_version_4_x_examples.rb │ │ │ │ │ ├── virtualbox_driver_version_5_x_examples.rb │ │ │ │ │ └── virtualbox_driver_version_6_x_examples.rb │ │ │ │ └── synced_folder_test.rb │ │ ├── provisioners │ │ │ ├── ansible │ │ │ │ ├── cap │ │ │ │ │ └── guest │ │ │ │ │ │ ├── alpine │ │ │ │ │ │ └── ansible_install_test.rb │ │ │ │ │ │ ├── arch │ │ │ │ │ │ └── ansible_install_test.rb │ │ │ │ │ │ ├── debian │ │ │ │ │ │ └── ansible_install_test.rb │ │ │ │ │ │ ├── freebsd │ │ │ │ │ │ └── ansible_install_test.rb │ │ │ │ │ │ ├── pip │ │ │ │ │ │ └── pip_test.rb │ │ │ │ │ │ ├── shared │ │ │ │ │ │ └── pip_ansible_install_examples.rb │ │ │ │ │ │ ├── suse │ │ │ │ │ │ └── ansible_install_test.rb │ │ │ │ │ │ └── ubuntu │ │ │ │ │ │ └── ansible_install_test.rb │ │ │ │ ├── config │ │ │ │ │ ├── guest_test.rb │ │ │ │ │ ├── host_test.rb │ │ │ │ │ └── shared.rb │ │ │ │ └── provisioner_test.rb │ │ │ ├── chef │ │ │ │ ├── cap │ │ │ │ │ ├── freebsd │ │ │ │ │ │ └── chef_installed_test.rb │ │ │ │ │ ├── linux │ │ │ │ │ │ └── chef_installed_test.rb │ │ │ │ │ ├── omnios │ │ │ │ │ │ └── chef_installed_test.rb │ │ │ │ │ └── windows │ │ │ │ │ │ └── chef_installed_test.rb │ │ │ │ ├── command_builder_test.rb │ │ │ │ ├── config │ │ │ │ │ ├── base_runner_test.rb │ │ │ │ │ ├── base_test.rb │ │ │ │ │ ├── chef_apply_test.rb │ │ │ │ │ ├── chef_client_test.rb │ │ │ │ │ ├── chef_solo_test.rb │ │ │ │ │ └── chef_zero_test.rb │ │ │ │ ├── omnibus_test.rb │ │ │ │ └── provisioner │ │ │ │ │ ├── base_test.rb │ │ │ │ │ └── chef_solo_test.rb │ │ │ ├── container │ │ │ │ ├── client_test.rb │ │ │ │ └── config_test.rb │ │ │ ├── docker │ │ │ │ ├── config_test.rb │ │ │ │ ├── installer_test.rb │ │ │ │ ├── plugin_test.rb │ │ │ │ └── provisioner_test.rb │ │ │ ├── file │ │ │ │ ├── config_test.rb │ │ │ │ └── provisioner_test.rb │ │ │ ├── podman │ │ │ │ ├── config_test.rb │ │ │ │ ├── installer_test.rb │ │ │ │ └── provisioner_test.rb │ │ │ ├── puppet │ │ │ │ └── provisioner │ │ │ │ │ └── puppet_test.rb │ │ │ ├── salt │ │ │ │ ├── bootstrap_downloader_test.rb │ │ │ │ ├── config_test.rb │ │ │ │ └── provisioner_test.rb │ │ │ ├── shell │ │ │ │ ├── config_test.rb │ │ │ │ └── provisioner_test.rb │ │ │ └── support │ │ │ │ └── shared │ │ │ │ └── config.rb │ │ ├── pushes │ │ │ ├── atlas │ │ │ │ ├── config_test.rb │ │ │ │ └── push_test.rb │ │ │ ├── ftp │ │ │ │ ├── adapter_test.rb │ │ │ │ ├── config_test.rb │ │ │ │ └── push_test.rb │ │ │ ├── heroku │ │ │ │ ├── config_test.rb │ │ │ │ └── push_test.rb │ │ │ ├── local-exec │ │ │ │ ├── config_test.rb │ │ │ │ └── push_test.rb │ │ │ └── noop │ │ │ │ └── config_test.rb │ │ └── synced_folders │ │ │ ├── nfs │ │ │ ├── action_cleanup_test.rb │ │ │ └── config_test.rb │ │ │ ├── rsync │ │ │ ├── command │ │ │ │ ├── rsync_auto_test.rb │ │ │ │ └── rsync_test.rb │ │ │ ├── default_unix_cap_test.rb │ │ │ ├── helper_test.rb │ │ │ └── synced_folder_test.rb │ │ │ ├── smb │ │ │ ├── caps │ │ │ │ └── mount_options_test.rb │ │ │ └── synced_folder_test.rb │ │ │ └── unix_mount_helpers_test.rb │ ├── support │ │ ├── dummy_communicator.rb │ │ ├── dummy_provider.rb │ │ ├── isolated_environment.rb │ │ └── shared │ │ │ ├── action_synced_folders_context.rb │ │ │ ├── base_context.rb │ │ │ ├── capability_helpers_context.rb │ │ │ ├── plugin_command_context.rb │ │ │ └── virtualbox_context.rb │ ├── templates │ │ ├── commands │ │ │ └── init │ │ │ │ └── Vagrantfile.erb │ │ ├── guests │ │ │ ├── arch │ │ │ │ ├── default_network │ │ │ │ │ ├── network_dhcp_test.rb │ │ │ │ │ └── network_static_test.rb │ │ │ │ └── systemd_networkd │ │ │ │ │ ├── network_dhcp_test.rb │ │ │ │ │ └── network_static_test.rb │ │ │ ├── debian │ │ │ │ ├── network_dhcp_test.rb │ │ │ │ └── network_static_test.rb │ │ │ ├── freebsd │ │ │ │ ├── network_dhcp_test.rb │ │ │ │ └── network_static_test.rb │ │ │ ├── funtoo │ │ │ │ ├── network_dhcp_test.rb │ │ │ │ └── network_static_test.rb │ │ │ ├── gentoo │ │ │ │ ├── network_dhcp_test.rb │ │ │ │ ├── network_static_test.rb │ │ │ │ └── systemd_network_test.rb │ │ │ ├── netbsd │ │ │ │ ├── network_dhcp_test.rb │ │ │ │ └── network_static_test.rb │ │ │ ├── nixos │ │ │ │ └── network_test.rb │ │ │ ├── redhat │ │ │ │ ├── network_dhcp_test.rb │ │ │ │ └── network_static_test.rb │ │ │ └── suse │ │ │ │ ├── network_dhcp_test.rb │ │ │ │ ├── network_static6_test.rb │ │ │ │ └── network_static_test.rb │ │ └── nfs │ │ │ └── exports_darwin_test.rb │ ├── vagrant │ │ ├── action │ │ │ ├── builder_test.rb │ │ │ ├── builtin │ │ │ │ ├── box_add_test.rb │ │ │ │ ├── box_check_outdated_test.rb │ │ │ │ ├── box_remove_test.rb │ │ │ │ ├── call_test.rb │ │ │ │ ├── cleanup_disks_test.rb │ │ │ │ ├── cloud_init_setup_test.rb │ │ │ │ ├── cloud_init_wait_test.rb │ │ │ │ ├── confirm_test.rb │ │ │ │ ├── delayed_test.rb │ │ │ │ ├── disk_test.rb │ │ │ │ ├── env_set_test.rb │ │ │ │ ├── graceful_halt_test.rb │ │ │ │ ├── handle_box_test.rb │ │ │ │ ├── handle_forwarded_port_collisions_test.rb │ │ │ │ ├── has_provisioner_test.rb │ │ │ │ ├── is_env_set_test.rb │ │ │ │ ├── is_state_test.rb │ │ │ │ ├── lock_test.rb │ │ │ │ ├── message_test.rb │ │ │ │ ├── mixin_provisioners_test.rb │ │ │ │ ├── mixin_synced_folders_test.rb │ │ │ │ ├── provision_test.rb │ │ │ │ ├── provisioner_cleanup_test.rb │ │ │ │ ├── set_hostname_test.rb │ │ │ │ ├── ssh_exec_test.rb │ │ │ │ ├── ssh_run_test.rb │ │ │ │ ├── synced_folder_cleanup_test.rb │ │ │ │ ├── synced_folders_test.rb │ │ │ │ └── trigger_test.rb │ │ │ ├── general │ │ │ │ └── package_test.rb │ │ │ ├── hook_test.rb │ │ │ ├── runner_test.rb │ │ │ └── warden_test.rb │ │ ├── alias_test.rb │ │ ├── batch_action_test.rb │ │ ├── box_collection_test.rb │ │ ├── box_metadata_test.rb │ │ ├── box_test.rb │ │ ├── bundler_test.rb │ │ ├── capability_host_test.rb │ │ ├── cli_test.rb │ │ ├── config │ │ │ ├── loader_test.rb │ │ │ ├── v1 │ │ │ │ ├── dummy_config_test.rb │ │ │ │ ├── loader_test.rb │ │ │ │ └── root_test.rb │ │ │ └── v2 │ │ │ │ ├── dummy_config_test.rb │ │ │ │ ├── loader_test.rb │ │ │ │ ├── root_test.rb │ │ │ │ └── util_test.rb │ │ ├── config_test.rb │ │ ├── environment_test.rb │ │ ├── errors_test.rb │ │ ├── guest_test.rb │ │ ├── host_test.rb │ │ ├── machine │ │ │ └── remote_test.rb │ │ ├── machine_index_test.rb │ │ ├── machine_state_test.rb │ │ ├── machine_test.rb │ │ ├── plugin │ │ │ ├── manager_test.rb │ │ │ ├── state_file_test.rb │ │ │ ├── v1 │ │ │ │ ├── command_test.rb │ │ │ │ ├── communicator_test.rb │ │ │ │ ├── config_test.rb │ │ │ │ ├── host_test.rb │ │ │ │ ├── manager_test.rb │ │ │ │ ├── plugin_test.rb │ │ │ │ └── provider_test.rb │ │ │ └── v2 │ │ │ │ ├── command_test.rb │ │ │ │ ├── communicator_test.rb │ │ │ │ ├── components_test.rb │ │ │ │ ├── config_test.rb │ │ │ │ ├── host_test.rb │ │ │ │ ├── manager_test.rb │ │ │ │ ├── plugin_test.rb │ │ │ │ ├── provider_test.rb │ │ │ │ ├── synced_folder_test.rb │ │ │ │ └── trigger_test.rb │ │ ├── registry_test.rb │ │ ├── shared_helpers_test.rb │ │ ├── ui_test.rb │ │ ├── util │ │ │ ├── ansi_escape_code_remover_test.rb │ │ │ ├── caps_test.rb │ │ │ ├── checkpoint_client_test.rb │ │ │ ├── command_deprecation_test.rb │ │ │ ├── credential_scrubber_test.rb │ │ │ ├── curl_helper_test.rb │ │ │ ├── deep_merge_test.rb │ │ │ ├── directory_test.rb │ │ │ ├── downloader_test.rb │ │ │ ├── env_test.rb │ │ │ ├── experimental_test.rb │ │ │ ├── file_checksum_test.rb │ │ │ ├── file_mutex_test.rb │ │ │ ├── guest_hosts_test.rb │ │ │ ├── guest_inspection_test.rb │ │ │ ├── hash_with_indifferent_access_test.rb │ │ │ ├── install_cli_autocomplete_test.rb │ │ │ ├── io_test.rb │ │ │ ├── ipv4_interfaces_test.rb │ │ │ ├── is_port_open_test.rb │ │ │ ├── keypair_test.rb │ │ │ ├── line_buffer_test.rb │ │ │ ├── line_endings_helper_test.rb │ │ │ ├── map_command_options_test.rb │ │ │ ├── mime_test.rb │ │ │ ├── network_ip_test.rb │ │ │ ├── numeric_test.rb │ │ │ ├── platform_test.rb │ │ │ ├── powershell_test.rb │ │ │ ├── presence_test.rb │ │ │ ├── retryable_test.rb │ │ │ ├── safe_chdir_test.rb │ │ │ ├── scoped_hash_override_test.rb │ │ │ ├── shell_quote_test.rb │ │ │ ├── ssh_test.rb │ │ │ ├── string_block_editor_test.rb │ │ │ ├── subprocess_test.rb │ │ │ ├── uploader_test.rb │ │ │ └── which_test.rb │ │ └── vagrantfile_test.rb │ └── vagrant_test.rb └── vagrant-spec │ ├── .runner-vmware.sh │ ├── Vagrantfile.spec │ ├── boxes │ └── .keep │ ├── configs │ ├── vagrant-spec.config.docker.rb │ └── vagrant-spec.config.virtualbox.rb │ ├── readme.md │ └── scripts │ ├── centos-run.virtualbox.sh │ ├── centos-setup.virtualbox.sh │ ├── ubuntu-install-vagrant.sh │ ├── ubuntu-run.docker.sh │ ├── ubuntu-run.virtualbox.sh │ ├── ubuntu-setup.docker.sh │ ├── ubuntu-setup.virtualbox.sh │ ├── windows-run.virtualbox.ps1 │ └── windows-setup.virtualbox.ps1 ├── tools.go ├── vagrant-config.hcl ├── vagrant-spec.config.example.rb ├── vagrant.gemspec ├── version.txt └── website ├── .editorconfig ├── .env ├── .env.production ├── .eslintrc.js ├── .gitignore ├── .nvmrc ├── .stylelintrc.js ├── LICENSE.md ├── Makefile ├── README.md ├── content ├── docs │ ├── boxes │ │ ├── base.mdx │ │ ├── box_repository.mdx │ │ ├── format.mdx │ │ ├── index.mdx │ │ ├── info.mdx │ │ └── versioning.mdx │ ├── cli │ │ ├── aliases.mdx │ │ ├── box.mdx │ │ ├── cloud.mdx │ │ ├── connect.mdx │ │ ├── destroy.mdx │ │ ├── global-status.mdx │ │ ├── halt.mdx │ │ ├── index.mdx │ │ ├── init.mdx │ │ ├── login.mdx │ │ ├── machine-readable.mdx │ │ ├── non-primary.mdx │ │ ├── package.mdx │ │ ├── plugin.mdx │ │ ├── port.mdx │ │ ├── powershell.mdx │ │ ├── provision.mdx │ │ ├── rdp.mdx │ │ ├── reload.mdx │ │ ├── resume.mdx │ │ ├── rsync-auto.mdx │ │ ├── rsync.mdx │ │ ├── share.mdx │ │ ├── snapshot.mdx │ │ ├── ssh.mdx │ │ ├── ssh_config.mdx │ │ ├── status.mdx │ │ ├── suspend.mdx │ │ ├── up.mdx │ │ ├── upload.mdx │ │ ├── validate.mdx │ │ ├── version.mdx │ │ ├── winrm.mdx │ │ └── winrm_config.mdx │ ├── cloud-init │ │ ├── configuration.mdx │ │ ├── index.mdx │ │ └── usage.mdx │ ├── disks │ │ ├── configuration.mdx │ │ ├── hyperv │ │ │ ├── common-issues.mdx │ │ │ ├── index.mdx │ │ │ └── usage.mdx │ │ ├── index.mdx │ │ ├── usage.mdx │ │ ├── virtualbox │ │ │ ├── common-issues.mdx │ │ │ ├── index.mdx │ │ │ └── usage.mdx │ │ └── vmware │ │ │ ├── common-issues.mdx │ │ │ ├── index.mdx │ │ │ └── usage.mdx │ ├── experimental │ │ ├── index.mdx │ │ └── vagrant_go.mdx │ ├── index.mdx │ ├── installation │ │ ├── backwards-compatibility.mdx │ │ ├── index.mdx │ │ ├── source.mdx │ │ ├── uninstallation.mdx │ │ ├── upgrading-from-1-0.mdx │ │ └── upgrading.mdx │ ├── multi-machine.mdx │ ├── networking │ │ ├── basic_usage.mdx │ │ ├── forwarded_ports.mdx │ │ ├── index.mdx │ │ ├── private_network.mdx │ │ └── public_network.mdx │ ├── other │ │ ├── debugging.mdx │ │ ├── environmental-variables.mdx │ │ ├── index.mdx │ │ ├── macos-catalina.mdx │ │ └── wsl.mdx │ ├── plugins │ │ ├── action-hooks.mdx │ │ ├── commands.mdx │ │ ├── configuration.mdx │ │ ├── development-basics.mdx │ │ ├── go-plugins │ │ │ ├── guests.mdx │ │ │ └── index.mdx │ │ ├── guest-capabilities.mdx │ │ ├── guests.mdx │ │ ├── host-capabilities.mdx │ │ ├── hosts.mdx │ │ ├── index.mdx │ │ ├── packaging.mdx │ │ ├── providers.mdx │ │ ├── provisioners.mdx │ │ └── usage.mdx │ ├── providers │ │ ├── basic_usage.mdx │ │ ├── configuration.mdx │ │ ├── custom.mdx │ │ ├── default.mdx │ │ ├── docker │ │ │ ├── basics.mdx │ │ │ ├── boxes.mdx │ │ │ ├── commands.mdx │ │ │ ├── configuration.mdx │ │ │ ├── index.mdx │ │ │ └── networking.mdx │ │ ├── hyperv │ │ │ ├── boxes.mdx │ │ │ ├── configuration.mdx │ │ │ ├── index.mdx │ │ │ ├── limitations.mdx │ │ │ └── usage.mdx │ │ ├── index.mdx │ │ ├── installation.mdx │ │ ├── virtualbox │ │ │ ├── boxes.mdx │ │ │ ├── common-issues.mdx │ │ │ ├── configuration.mdx │ │ │ ├── index.mdx │ │ │ ├── networking.mdx │ │ │ └── usage.mdx │ │ └── vmware │ │ │ ├── boxes.mdx │ │ │ ├── configuration.mdx │ │ │ ├── faq.mdx │ │ │ ├── index.mdx │ │ │ ├── installation.mdx │ │ │ ├── known-issues.mdx │ │ │ ├── usage.mdx │ │ │ └── vagrant-vmware-utility.mdx │ ├── provisioning │ │ ├── ansible.mdx │ │ ├── ansible_common.mdx │ │ ├── ansible_intro.mdx │ │ ├── ansible_local.mdx │ │ ├── basic_usage.mdx │ │ ├── cfengine.mdx │ │ ├── chef_apply.mdx │ │ ├── chef_client.mdx │ │ ├── chef_common.mdx │ │ ├── chef_solo.mdx │ │ ├── chef_zero.mdx │ │ ├── docker.mdx │ │ ├── file.mdx │ │ ├── index.mdx │ │ ├── podman.mdx │ │ ├── puppet_agent.mdx │ │ ├── puppet_apply.mdx │ │ ├── salt.mdx │ │ └── shell.mdx │ ├── push │ │ ├── ftp.mdx │ │ ├── heroku.mdx │ │ ├── index.mdx │ │ └── local-exec.mdx │ ├── share │ │ ├── connect.mdx │ │ ├── http.mdx │ │ ├── index.mdx │ │ ├── provider.mdx │ │ ├── security.mdx │ │ └── ssh.mdx │ ├── synced-folders │ │ ├── basic_usage.mdx │ │ ├── index.mdx │ │ ├── nfs.mdx │ │ ├── rsync.mdx │ │ ├── smb.mdx │ │ └── virtualbox.mdx │ ├── triggers │ │ ├── configuration.mdx │ │ ├── index.mdx │ │ └── usage.mdx │ └── vagrantfile │ │ ├── index.mdx │ │ ├── machine_settings.mdx │ │ ├── ssh_settings.mdx │ │ ├── tips.mdx │ │ ├── vagrant_settings.mdx │ │ ├── vagrant_version.mdx │ │ ├── version.mdx │ │ ├── winrm_settings.mdx │ │ └── winssh_settings.mdx ├── intro │ ├── contributing-guide.mdx │ ├── index.mdx │ └── vs │ │ ├── cli-tools.mdx │ │ ├── docker.mdx │ │ ├── index.mdx │ │ └── terraform.mdx ├── vagrant-cloud │ ├── api │ │ ├── v1.mdx │ │ └── v2.mdx │ ├── boxes │ │ ├── architecture.mdx │ │ ├── catalog.mdx │ │ ├── create-version.mdx │ │ ├── create.mdx │ │ ├── distributing.mdx │ │ ├── index.mdx │ │ ├── lifecycle.mdx │ │ ├── private.mdx │ │ ├── release-workflow.mdx │ │ └── using.mdx │ ├── index.mdx │ ├── organizations │ │ ├── authentication-policy.mdx │ │ ├── create.mdx │ │ ├── index.mdx │ │ └── migrate.mdx │ ├── request-limits.mdx │ ├── support.mdx │ └── users │ │ ├── authentication.mdx │ │ ├── index.mdx │ │ └── recovery.mdx └── vmware │ └── index.mdx ├── data ├── alert-banner.js ├── docs-nav-data.json ├── intro-nav-data.json ├── metadata.js ├── subnav.js ├── vagrant-cloud-nav-data.json ├── version.json └── vmware-nav-data.json ├── jsconfig.json ├── package-lock.json ├── package.json ├── prettier.config.js ├── public ├── favicon.ico ├── files │ └── press-kit.zip ├── ie-warning.js └── img │ ├── favicons │ ├── android-chrome-192x192.png │ ├── android-chrome-512x512.png │ ├── apple-touch-icon.png │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon.ico │ ├── mstile-150x150.png │ └── safari-pinned-tab.svg │ ├── logo-hashicorp.svg │ ├── logo-text.svg │ ├── og-image.png │ ├── systems │ ├── apple.svg │ ├── linux.svg │ └── windows.svg │ ├── vagrant-trusted-by-logos.png │ ├── vagrant_parity.svg │ └── vmware.svg ├── redirects.js ├── scripts ├── should-build.sh ├── website-build.sh └── website-start.sh └── vercel.json /.ci/spec/notify-success.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright (c) HashiCorp, Inc. 3 | # SPDX-License-Identifier: BUSL-1.1 4 | 5 | 6 | csource="${BASH_SOURCE[0]}" 7 | while [ -h "$csource" ] ; do csource="$(readlink "$csource")"; done 8 | root="$( cd -P "$( dirname "$csource" )/../../" && pwd )" 9 | 10 | . "${root}/.ci/load-ci.sh" 11 | . "${root}/.ci/spec/env.sh" 12 | 13 | pushd "${root}" > "${output}" 14 | 15 | slack -m 'Tests have passed!' 16 | -------------------------------------------------------------------------------- /.copywrite.hcl: -------------------------------------------------------------------------------- 1 | schema_version = 1 2 | 3 | project { 4 | license = "BUSL-1.1" 5 | copyright_year = 2010 6 | 7 | header_ignore = [ 8 | "internal/pkg/defaults/**", 9 | "internal/pkg/spinner/**", 10 | "internal/server/bindata_ui.go", 11 | "internal/server/gen/**", 12 | "lib/vagrant/protobufs/**", 13 | "thirdparty/**", 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /.envrc: -------------------------------------------------------------------------------- 1 | # If we are a computer with nix-shell available, then use that to setup 2 | # the build environment with exactly what we need. 3 | if has nix-shell; then 4 | use flake 5 | fi 6 | 7 | export VAGRANT_SUPPRESS_GO_EXPERIMENTAL_WARNING=1 8 | export VAGRANT_I_KNOW_WHAT_IM_DOING_PLEASE_BE_QUIET=1 9 | -------------------------------------------------------------------------------- /.github/CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Code of Conduct 2 | 3 | HashiCorp Community Guidelines apply to you when interacting with the community here on GitHub and contributing code. 4 | 5 | Please read the full text at https://www.hashicorp.com/community-guidelines 6 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | contact_links: 5 | - name: Ask a Question 6 | url: https://discuss.hashicorp.com/c/vagrant 7 | about: If you have a question or are looking for advice, please post on our Discuss forum. 8 | -------------------------------------------------------------------------------- /.github/workflows/go-testing-skipped.yml: -------------------------------------------------------------------------------- 1 | on: 2 | pull_request: 3 | branches: 4 | - main 5 | ignored-paths: 6 | - 'builtin/**' 7 | - 'cmd/**' 8 | - 'internal/**' 9 | - 'go.mod' 10 | - 'go.sum' 11 | 12 | jobs: 13 | unit-tests-go: 14 | runs-on: ubuntu-latest 15 | strategy: 16 | matrix: 17 | ruby: ['3.0', '3.1', '3.2'] 18 | name: Vagrant unit tests on Go (Ruby ${{ matrix.ruby }}) 19 | steps: 20 | - name: Stubbed for skip 21 | run: "echo 'No testing required in changeset'" 22 | -------------------------------------------------------------------------------- /.github/workflows/lock.yml: -------------------------------------------------------------------------------- 1 | name: 'Lock Threads' 2 | 3 | on: 4 | schedule: 5 | - cron: '50 1 * * *' 6 | 7 | jobs: 8 | lock: 9 | runs-on: ubuntu-latest 10 | permissions: 11 | issues: write 12 | pull-requests: write 13 | steps: 14 | - uses: dessant/lock-threads@be8aa5be94131386884a6da4189effda9b14aa21 # v4.0.1 15 | with: 16 | github-token: ${{ github.token }} 17 | issue-inactive-days: '30' 18 | pr-inactive-days: '30' 19 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "api-common-protos"] 2 | path = thirdparty/proto/api-common-protos 3 | url = https://github.com/googleapis/api-common-protos 4 | -------------------------------------------------------------------------------- /.runner.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright (c) HashiCorp, Inc. 3 | # SPDX-License-Identifier: BUSL-1.1 4 | 5 | 6 | set -e 7 | 8 | mkdir -p assets 9 | gem build *.gemspec 10 | mv vagrant-*.gem assets/ 11 | -------------------------------------------------------------------------------- /.vimrc: -------------------------------------------------------------------------------- 1 | " tabstop settings 2 | set tabstop=2 3 | set softtabstop=2 4 | set shiftwidth=2 5 | set expandtab 6 | -------------------------------------------------------------------------------- /.yardopts: -------------------------------------------------------------------------------- 1 | -m markdown 2 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | source "https://rubygems.org" 5 | 6 | gemspec 7 | 8 | if File.exist?(File.expand_path("../../vagrant-spec", __FILE__)) 9 | gem 'vagrant-spec', path: "../vagrant-spec" 10 | else 11 | gem 'vagrant-spec', git: "https://github.com/hashicorp/vagrant-spec.git", branch: :main 12 | end 13 | -------------------------------------------------------------------------------- /builtin/README.md: -------------------------------------------------------------------------------- 1 | # Built-in Plugins 2 | 3 | This directory contains all the "built-in" plugins. These are real plugins, 4 | they dogfood the full plugin SDK, do not depend on any internal packages, 5 | and they are executed via subprocess just like a real plugin would be. 6 | 7 | The difference is that these plugins are linked directly into the single 8 | command binary. We do this currently for ease of development of the project. 9 | In future we will split these out into standalone repositories and 10 | binaries. 11 | -------------------------------------------------------------------------------- /builtin/httpdownloader/main.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) HashiCorp, Inc. 2 | // SPDX-License-Identifier: BUSL-1.1 3 | 4 | package httpdownloader 5 | 6 | import ( 7 | sdk "github.com/hashicorp/vagrant-plugin-sdk" 8 | "github.com/hashicorp/vagrant/builtin/httpdownloader/downloader" 9 | ) 10 | 11 | //go:generate stringer -type=HTTPMethod -linecomment ./downloader 12 | 13 | var PluginOptions = []sdk.Option{ 14 | sdk.WithComponents( 15 | &downloader.Downloader{}, 16 | ), 17 | sdk.WithName("httpdownloader"), 18 | } 19 | -------------------------------------------------------------------------------- /builtin/myplugin/locales/assets/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "dothing": "Tricked ya! I actually do nothing :P" 3 | } 4 | -------------------------------------------------------------------------------- /builtin/myplugin/locales/assets/es.json: -------------------------------------------------------------------------------- 1 | { 2 | "dothing": "¡Te engañé! en realidad no hago nada :P" 3 | } 4 | -------------------------------------------------------------------------------- /builtin/myplugin/mappers.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) HashiCorp, Inc. 2 | // SPDX-License-Identifier: BUSL-1.1 3 | 4 | package myplugin 5 | 6 | import ( 7 | pb "github.com/hashicorp/vagrant/builtin/myplugin/proto" 8 | "github.com/mitchellh/mapstructure" 9 | "google.golang.org/protobuf/types/known/structpb" 10 | ) 11 | 12 | func StructToCommunincatorOptions(in *structpb.Struct) (*pb.CommunicatorOptions, error) { 13 | var result pb.CommunicatorOptions 14 | return &result, mapstructure.Decode(in.AsMap(), &result) 15 | } 16 | -------------------------------------------------------------------------------- /builtin/myplugin/proto/plugin.proto: -------------------------------------------------------------------------------- 1 | // Copyright (c) HashiCorp, Inc. 2 | // SPDX-License-Identifier: BUSL-1.1 3 | 4 | syntax = "proto3"; 5 | 6 | package myplugin; 7 | 8 | option go_package = "vagrant-ruby/builtin/myplugin/proto"; 9 | 10 | message UpResult {} 11 | 12 | message CommunicatorOptions { 13 | string keep_alive = 1; 14 | int64 timeout = 2; 15 | } 16 | -------------------------------------------------------------------------------- /builtin/otherplugin/guest/cap/write_hello.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) HashiCorp, Inc. 2 | // SPDX-License-Identifier: BUSL-1.1 3 | 4 | package cap 5 | 6 | import ( 7 | "io/ioutil" 8 | 9 | plugincore "github.com/hashicorp/vagrant-plugin-sdk/core" 10 | ) 11 | 12 | func WriteHello(machine plugincore.Machine) (err error) { 13 | d1 := []byte("hello\ngo\n") 14 | ioutil.WriteFile("/tmp/dat1", d1, 0644) 15 | 16 | machine.ConnectionInfo() 17 | // TODO: write something to guest machine 18 | // need a communicator 19 | return 20 | } 21 | -------------------------------------------------------------------------------- /cmd/vagrant/main.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) HashiCorp, Inc. 2 | // SPDX-License-Identifier: BUSL-1.1 3 | 4 | package main 5 | 6 | import ( 7 | "os" 8 | "path/filepath" 9 | 10 | "github.com/hashicorp/vagrant/internal/cli" 11 | ) 12 | 13 | func main() { 14 | // Make args[0] just the name of the executable since it is used in logs. 15 | os.Args[0] = filepath.Base(os.Args[0]) 16 | 17 | os.Exit(cli.Main(os.Args)) 18 | } 19 | -------------------------------------------------------------------------------- /contrib/emacs/vagrant.el: -------------------------------------------------------------------------------- 1 | ;; Copyright (c) HashiCorp, Inc. 2 | ;; SPDX-License-Identifier: BUSL-1.1 3 | 4 | ;;-------------------------------------------------------------------- 5 | ;; Teach emacs to syntax highlight Vagrantfile as Ruby. 6 | ;; 7 | ;; Installation: Copy the line below into your emacs configuration, 8 | ;; or drop this file anywhere in your "~/.emacs.d" directory and be 9 | ;; sure to "load" it. 10 | ;;-------------------------------------------------------------------- 11 | (add-to-list 'auto-mode-alist '("Vagrantfile$" . ruby-mode)) 12 | -------------------------------------------------------------------------------- /contrib/st/Ruby.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "extensions": 3 | [ 4 | "Vagrantfile" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /contrib/sudoers/linux-suse: -------------------------------------------------------------------------------- 1 | Cmnd_Alias VAGRANT_CHOWN = /usr/bin/chown 0\:0 /tmp/vagrant[a-z0-9-]* 2 | Cmnd_Alias VAGRANT_MV = /usr/bin/mv -f /tmp/vagrant[a-z0-9-]* /etc/exports 3 | Cmnd_Alias VAGRANT_START = /usr/bin/systemctl start --no-pager nfs-server 4 | Cmnd_Alias VAGRANT_STATUS = /usr/bin/systemctl status --no-pager nfs-server 5 | Cmnd_Alias VAGRANT_APPLY = /usr/sbin/exportfs -ar 6 | %vagrant ALL=(root) NOPASSWD: VAGRANT_CHOWN, VAGRANT_MV, VAGRANT_START, VAGRANT_STATUS, VAGRANT_APPLY 7 | -------------------------------------------------------------------------------- /contrib/sudoers/linux-ubuntu: -------------------------------------------------------------------------------- 1 | # These work with Ubuntu - they might need tweaking for other distributions 2 | 3 | Cmnd_Alias VAGRANT_EXPORTS_CHOWN = /bin/chown 0\:0 /tmp/* 4 | Cmnd_Alias VAGRANT_EXPORTS_MV = /bin/mv -f /tmp/* /etc/exports 5 | Cmnd_Alias VAGRANT_NFSD_CHECK = /etc/init.d/nfs-kernel-server status 6 | Cmnd_Alias VAGRANT_NFSD_START = /etc/init.d/nfs-kernel-server start 7 | Cmnd_Alias VAGRANT_NFSD_APPLY = /usr/sbin/exportfs -ar 8 | %sudo ALL=(root) NOPASSWD: VAGRANT_EXPORTS_CHOWN, VAGRANT_EXPORTS_MV, VAGRANT_NFSD_CHECK, VAGRANT_NFSD_START, VAGRANT_NFSD_APPLY 9 | -------------------------------------------------------------------------------- /contrib/vim/vagrantfile.vim: -------------------------------------------------------------------------------- 1 | " Teach vim to syntax highlight Vagrantfile as ruby 2 | " 3 | " Install: $HOME/.vim/plugin/vagrant.vim 4 | " Author: Brandon Philips 5 | 6 | augroup vagrant 7 | au! 8 | au BufRead,BufNewFile Vagrantfile set filetype=ruby 9 | augroup END 10 | -------------------------------------------------------------------------------- /ext/vagrant/vagrant_ssl/vagrant_ssl.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) HashiCorp, Inc. 3 | * SPDX-License-Identifier: BUSL-1.1 4 | */ 5 | 6 | #if !defined(_VAGRANT_SSL_H_) 7 | #define _VAGRANT_SSL_H_ 8 | 9 | #include 10 | #if OPENSSL_VERSION_NUMBER >= (3 << 28) 11 | #define _VAGRANT_SSL_PROVIDER_ 12 | 13 | #include 14 | #include 15 | #endif 16 | 17 | void Init_vagrant_ssl(void); 18 | 19 | #endif 20 | -------------------------------------------------------------------------------- /flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "HashiCorp Vagrant project"; 3 | 4 | inputs = { 5 | nixpkgs.url = "github:nixos/nixpkgs/release-23.05"; 6 | flake-utils.url = "github:numtide/flake-utils"; 7 | }; 8 | 9 | outputs = { self, nixpkgs, flake-utils }: 10 | flake-utils.lib.eachDefaultSystem (system: 11 | let 12 | localOverlay = import ./nix/overlay.nix; 13 | pkgs = import nixpkgs { 14 | system = "${system}"; 15 | overlays = [ localOverlay ]; 16 | }; 17 | in { inherit (pkgs) devShells; }); 18 | } 19 | -------------------------------------------------------------------------------- /internal/assets/.gitignore: -------------------------------------------------------------------------------- 1 | ceb/ceb 2 | prod.go 3 | -------------------------------------------------------------------------------- /internal/client/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) HashiCorp, Inc. 2 | // SPDX-License-Identifier: BUSL-1.1 3 | 4 | // Package client contains the Vagrant client implementation. 5 | // 6 | // The Vagrant client exposes a slightly higher level of abstraction 7 | // than direct a API client for performing operations on an application. 8 | // The primary consumer of this package is the CLI. 9 | package client 10 | -------------------------------------------------------------------------------- /internal/clierrors/humanize.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) HashiCorp, Inc. 2 | // SPDX-License-Identifier: BUSL-1.1 3 | 4 | package clierrors 5 | 6 | import ( 7 | "github.com/mitchellh/go-wordwrap" 8 | "google.golang.org/grpc/status" 9 | ) 10 | 11 | func Humanize(err error) string { 12 | if err == nil { 13 | return "" 14 | } 15 | 16 | if IsCanceled(err) { 17 | return "operation canceled" 18 | } 19 | 20 | v := err.Error() 21 | if s, ok := status.FromError(err); ok { 22 | v = s.Message() 23 | } 24 | 25 | return wordwrap.WrapString(v, 80) 26 | } 27 | -------------------------------------------------------------------------------- /internal/config/funcs/testdata/filesystem/bare.tmpl: -------------------------------------------------------------------------------- 1 | ${val} -------------------------------------------------------------------------------- /internal/config/funcs/testdata/filesystem/func.tmpl: -------------------------------------------------------------------------------- 1 | The items are ${join(", ", list)} -------------------------------------------------------------------------------- /internal/config/funcs/testdata/filesystem/hello.tmpl: -------------------------------------------------------------------------------- 1 | Hello, ${name}! -------------------------------------------------------------------------------- /internal/config/funcs/testdata/filesystem/hello.txt: -------------------------------------------------------------------------------- 1 | Hello World -------------------------------------------------------------------------------- /internal/config/funcs/testdata/filesystem/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/internal/config/funcs/testdata/filesystem/icon.png -------------------------------------------------------------------------------- /internal/config/funcs/testdata/filesystem/list.tmpl: -------------------------------------------------------------------------------- 1 | %{ for x in list ~} 2 | - ${x} 3 | %{ endfor ~} 4 | -------------------------------------------------------------------------------- /internal/config/funcs/testdata/filesystem/recursive.tmpl: -------------------------------------------------------------------------------- 1 | ${templatefile("recursive.tmpl", {})} -------------------------------------------------------------------------------- /internal/config/funcs/testdata/git-commits/A: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /internal/config/funcs/testdata/git-commits/DOTgit/COMMIT_EDITMSG: -------------------------------------------------------------------------------- 1 | Commit two 2 | # Please enter the commit message for your changes. Lines starting 3 | # with '#' will be ignored, and an empty message aborts the commit. 4 | # 5 | # On branch master 6 | # Changes to be committed: 7 | # modified: A 8 | # 9 | -------------------------------------------------------------------------------- /internal/config/funcs/testdata/git-commits/DOTgit/HEAD: -------------------------------------------------------------------------------- 1 | ref: refs/heads/master 2 | -------------------------------------------------------------------------------- /internal/config/funcs/testdata/git-commits/DOTgit/config: -------------------------------------------------------------------------------- 1 | [core] 2 | repositoryformatversion = 0 3 | filemode = true 4 | bare = false 5 | logallrefupdates = true 6 | ignorecase = true 7 | precomposeunicode = true 8 | -------------------------------------------------------------------------------- /internal/config/funcs/testdata/git-commits/DOTgit/description: -------------------------------------------------------------------------------- 1 | Unnamed repository; edit this file 'description' to name the repository. 2 | -------------------------------------------------------------------------------- /internal/config/funcs/testdata/git-commits/DOTgit/hooks/post-update.sample: -------------------------------------------------------------------------------- 1 | #!/nix/store/ilgf30winx4zw3acm5pk79cvhzkjch0f-bash-4.4-p23/bin/bash 2 | # 3 | # An example hook script to prepare a packed repository for use over 4 | # dumb transports. 5 | # 6 | # To enable this hook, rename this file to "post-update". 7 | 8 | exec git update-server-info 9 | -------------------------------------------------------------------------------- /internal/config/funcs/testdata/git-commits/DOTgit/index: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/internal/config/funcs/testdata/git-commits/DOTgit/index -------------------------------------------------------------------------------- /internal/config/funcs/testdata/git-commits/DOTgit/info/exclude: -------------------------------------------------------------------------------- 1 | # git ls-files --others --exclude-from=.git/info/exclude 2 | # Lines that start with '#' are comments. 3 | # For a project mostly in C, the following would be a good set of 4 | # exclude patterns (uncomment them if you want to use them): 5 | # *.[oa] 6 | # *~ 7 | -------------------------------------------------------------------------------- /internal/config/funcs/testdata/git-commits/DOTgit/logs/HEAD: -------------------------------------------------------------------------------- 1 | 0000000000000000000000000000000000000000 b1a2dcd337f590a185a20f013721e7410764bab4 Mitchell Hashimoto 1597446600 -0700 commit (initial): Commit one 2 | b1a2dcd337f590a185a20f013721e7410764bab4 380afd697abe993b89bfa08d8dd8724d6a513ba1 Mitchell Hashimoto 1597446608 -0700 commit: Commit two 3 | -------------------------------------------------------------------------------- /internal/config/funcs/testdata/git-commits/DOTgit/logs/refs/heads/master: -------------------------------------------------------------------------------- 1 | 0000000000000000000000000000000000000000 b1a2dcd337f590a185a20f013721e7410764bab4 Mitchell Hashimoto 1597446600 -0700 commit (initial): Commit one 2 | b1a2dcd337f590a185a20f013721e7410764bab4 380afd697abe993b89bfa08d8dd8724d6a513ba1 Mitchell Hashimoto 1597446608 -0700 commit: Commit two 3 | -------------------------------------------------------------------------------- /internal/config/funcs/testdata/git-commits/DOTgit/objects/38/0afd697abe993b89bfa08d8dd8724d6a513ba1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/internal/config/funcs/testdata/git-commits/DOTgit/objects/38/0afd697abe993b89bfa08d8dd8724d6a513ba1 -------------------------------------------------------------------------------- /internal/config/funcs/testdata/git-commits/DOTgit/objects/45/9023a450b8e8aa344d230839d41e2f115d3d28: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/internal/config/funcs/testdata/git-commits/DOTgit/objects/45/9023a450b8e8aa344d230839d41e2f115d3d28 -------------------------------------------------------------------------------- /internal/config/funcs/testdata/git-commits/DOTgit/objects/7c/178d1296d8b87e83382c324aeb32e2def2a5af: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/internal/config/funcs/testdata/git-commits/DOTgit/objects/7c/178d1296d8b87e83382c324aeb32e2def2a5af -------------------------------------------------------------------------------- /internal/config/funcs/testdata/git-commits/DOTgit/objects/8b/137891791fe96927ad78e64b0aad7bded08bdc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/internal/config/funcs/testdata/git-commits/DOTgit/objects/8b/137891791fe96927ad78e64b0aad7bded08bdc -------------------------------------------------------------------------------- /internal/config/funcs/testdata/git-commits/DOTgit/objects/b1/a2dcd337f590a185a20f013721e7410764bab4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/internal/config/funcs/testdata/git-commits/DOTgit/objects/b1/a2dcd337f590a185a20f013721e7410764bab4 -------------------------------------------------------------------------------- /internal/config/funcs/testdata/git-commits/DOTgit/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/internal/config/funcs/testdata/git-commits/DOTgit/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 -------------------------------------------------------------------------------- /internal/config/funcs/testdata/git-commits/DOTgit/refs/heads/master: -------------------------------------------------------------------------------- 1 | 380afd697abe993b89bfa08d8dd8724d6a513ba1 2 | -------------------------------------------------------------------------------- /internal/config/funcs/testdata/git-remote/DOTgit/HEAD: -------------------------------------------------------------------------------- 1 | ref: refs/heads/master 2 | -------------------------------------------------------------------------------- /internal/config/funcs/testdata/git-remote/DOTgit/config: -------------------------------------------------------------------------------- 1 | [core] 2 | repositoryformatversion = 0 3 | filemode = true 4 | bare = false 5 | logallrefupdates = true 6 | ignorecase = true 7 | precomposeunicode = true 8 | [remote "origin"] 9 | url = https://github.com/hashicorp/example.git 10 | fetch = +refs/heads/*:refs/remotes/origin/* 11 | -------------------------------------------------------------------------------- /internal/config/funcs/testdata/git-remote/DOTgit/description: -------------------------------------------------------------------------------- 1 | Unnamed repository; edit this file 'description' to name the repository. 2 | -------------------------------------------------------------------------------- /internal/config/funcs/testdata/git-remote/DOTgit/hooks/post-update.sample: -------------------------------------------------------------------------------- 1 | #!/nix/store/ilgf30winx4zw3acm5pk79cvhzkjch0f-bash-4.4-p23/bin/bash 2 | # 3 | # An example hook script to prepare a packed repository for use over 4 | # dumb transports. 5 | # 6 | # To enable this hook, rename this file to "post-update". 7 | 8 | exec git update-server-info 9 | -------------------------------------------------------------------------------- /internal/config/funcs/testdata/git-remote/DOTgit/info/exclude: -------------------------------------------------------------------------------- 1 | # git ls-files --others --exclude-from=.git/info/exclude 2 | # Lines that start with '#' are comments. 3 | # For a project mostly in C, the following would be a good set of 4 | # exclude patterns (uncomment them if you want to use them): 5 | # *.[oa] 6 | # *~ 7 | -------------------------------------------------------------------------------- /internal/config/funcs/testdata/git-tag/A: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/internal/config/funcs/testdata/git-tag/A -------------------------------------------------------------------------------- /internal/config/funcs/testdata/git-tag/DOTgit/COMMIT_EDITMSG: -------------------------------------------------------------------------------- 1 | commit 2 | # Please enter the commit message for your changes. Lines starting 3 | # with '#' will be ignored, and an empty message aborts the commit. 4 | # 5 | # On branch master 6 | # 7 | # Initial commit 8 | # 9 | # Changes to be committed: 10 | # new file: A 11 | # 12 | -------------------------------------------------------------------------------- /internal/config/funcs/testdata/git-tag/DOTgit/HEAD: -------------------------------------------------------------------------------- 1 | ref: refs/heads/master 2 | -------------------------------------------------------------------------------- /internal/config/funcs/testdata/git-tag/DOTgit/config: -------------------------------------------------------------------------------- 1 | [core] 2 | repositoryformatversion = 0 3 | filemode = true 4 | bare = false 5 | logallrefupdates = true 6 | ignorecase = true 7 | precomposeunicode = true 8 | -------------------------------------------------------------------------------- /internal/config/funcs/testdata/git-tag/DOTgit/description: -------------------------------------------------------------------------------- 1 | Unnamed repository; edit this file 'description' to name the repository. 2 | -------------------------------------------------------------------------------- /internal/config/funcs/testdata/git-tag/DOTgit/hooks/post-update.sample: -------------------------------------------------------------------------------- 1 | #!/nix/store/ilgf30winx4zw3acm5pk79cvhzkjch0f-bash-4.4-p23/bin/bash 2 | # 3 | # An example hook script to prepare a packed repository for use over 4 | # dumb transports. 5 | # 6 | # To enable this hook, rename this file to "post-update". 7 | 8 | exec git update-server-info 9 | -------------------------------------------------------------------------------- /internal/config/funcs/testdata/git-tag/DOTgit/index: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/internal/config/funcs/testdata/git-tag/DOTgit/index -------------------------------------------------------------------------------- /internal/config/funcs/testdata/git-tag/DOTgit/info/exclude: -------------------------------------------------------------------------------- 1 | # git ls-files --others --exclude-from=.git/info/exclude 2 | # Lines that start with '#' are comments. 3 | # For a project mostly in C, the following would be a good set of 4 | # exclude patterns (uncomment them if you want to use them): 5 | # *.[oa] 6 | # *~ 7 | -------------------------------------------------------------------------------- /internal/config/funcs/testdata/git-tag/DOTgit/logs/HEAD: -------------------------------------------------------------------------------- 1 | 0000000000000000000000000000000000000000 e5bde566e1270e2ed44a9a5a01d51b4eb9c8850b Mitchell Hashimoto 1597446963 -0700 commit (initial): commit 2 | -------------------------------------------------------------------------------- /internal/config/funcs/testdata/git-tag/DOTgit/logs/refs/heads/master: -------------------------------------------------------------------------------- 1 | 0000000000000000000000000000000000000000 e5bde566e1270e2ed44a9a5a01d51b4eb9c8850b Mitchell Hashimoto 1597446963 -0700 commit (initial): commit 2 | -------------------------------------------------------------------------------- /internal/config/funcs/testdata/git-tag/DOTgit/objects/7c/178d1296d8b87e83382c324aeb32e2def2a5af: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/internal/config/funcs/testdata/git-tag/DOTgit/objects/7c/178d1296d8b87e83382c324aeb32e2def2a5af -------------------------------------------------------------------------------- /internal/config/funcs/testdata/git-tag/DOTgit/objects/e5/bde566e1270e2ed44a9a5a01d51b4eb9c8850b: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/internal/config/funcs/testdata/git-tag/DOTgit/objects/e5/bde566e1270e2ed44a9a5a01d51b4eb9c8850b -------------------------------------------------------------------------------- /internal/config/funcs/testdata/git-tag/DOTgit/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/internal/config/funcs/testdata/git-tag/DOTgit/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 -------------------------------------------------------------------------------- /internal/config/funcs/testdata/git-tag/DOTgit/refs/heads/master: -------------------------------------------------------------------------------- 1 | e5bde566e1270e2ed44a9a5a01d51b4eb9c8850b 2 | -------------------------------------------------------------------------------- /internal/config/funcs/testdata/git-tag/DOTgit/refs/tags/hello: -------------------------------------------------------------------------------- 1 | e5bde566e1270e2ed44a9a5a01d51b4eb9c8850b 2 | -------------------------------------------------------------------------------- /internal/config/hook.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) HashiCorp, Inc. 2 | // SPDX-License-Identifier: BUSL-1.1 3 | 4 | package config 5 | 6 | // Hook is the configuration for a hook that runs at specified times. 7 | type Hook struct { 8 | When string `hcl:"when,attr"` 9 | Command []string `hcl:"command,attr"` 10 | OnFailure string `hcl:"on_failure,optional"` 11 | } 12 | 13 | func (h *Hook) ContinueOnFailure() bool { 14 | return h.OnFailure == "continue" 15 | } 16 | -------------------------------------------------------------------------------- /internal/config/testdata/compare/app.hcl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | project = "foo" 5 | 6 | app "foo" { 7 | } 8 | -------------------------------------------------------------------------------- /internal/config/testdata/compare/app_labels.hcl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | project = "foo" 5 | 6 | app "bar" { 7 | path = "./bar" 8 | 9 | labels = { 10 | "pwd": path.pwd, 11 | "project": path.project, 12 | "app": path.app, 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /internal/config/testdata/compare/app_path_relative.hcl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | project = "foo" 5 | 6 | app "foo" { 7 | path = "./bar" 8 | } 9 | -------------------------------------------------------------------------------- /internal/config/testdata/compare/build.hcl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | project = "foo" 5 | 6 | app "test" { 7 | build { 8 | labels = { 9 | "foo" = "bar" 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /internal/config/testdata/compare/build_registry.hcl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | project = "foo" 5 | 6 | app "test" { 7 | build { 8 | labels = { 9 | "foo" = "bar" 10 | } 11 | 12 | registry { 13 | use "docker" {} 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /internal/config/testdata/compare/project.hcl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | project = "hello" 5 | -------------------------------------------------------------------------------- /internal/config/testdata/compare/project_function.hcl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | project = upper("hello") 5 | -------------------------------------------------------------------------------- /internal/config/testdata/compare/project_path_project.hcl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | project = path.project 5 | -------------------------------------------------------------------------------- /internal/config/testdata/compare/project_pwd.hcl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | project = path.pwd 5 | -------------------------------------------------------------------------------- /internal/config/testdata/plugins/explicit.hcl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | project = "hello" 5 | 6 | plugin "go1" { 7 | type { 8 | mapper = true 9 | } 10 | } 11 | 12 | plugin "go2" { 13 | type { 14 | registry = true 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /internal/config/testdata/plugins/implicit.hcl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | project = "hello" 5 | 6 | app "tubes" { 7 | build { 8 | use "docker" {} 9 | } 10 | 11 | deploy { 12 | use "nomad" {} 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /internal/config/testdata/plugins/implicit_registry.hcl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | project = "hello" 5 | 6 | app "tubes" { 7 | build { 8 | use "docker" {} 9 | 10 | registry { 11 | use "aws-ecr" {} 12 | } 13 | } 14 | 15 | deploy { 16 | use "nomad" {} 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /internal/config/testdata/plugins/mix.hcl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | project = "hello" 5 | 6 | plugin "docker" { 7 | type { 8 | deploy = true 9 | } 10 | } 11 | 12 | app "tubes" { 13 | build { 14 | use "docker" {} 15 | } 16 | 17 | deploy { 18 | use "nomad" {} 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /internal/config/testdata/plugins/none.hcl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | project = "hello" 5 | -------------------------------------------------------------------------------- /internal/config/testdata/validate/no_build.hcl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | project = "foo" 5 | 6 | app "foo" { 7 | deploy {} 8 | } 9 | -------------------------------------------------------------------------------- /internal/config/testdata/validate/valid.hcl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | project = "foo" 5 | -------------------------------------------------------------------------------- /internal/config/vagrant.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) HashiCorp, Inc. 2 | // SPDX-License-Identifier: BUSL-1.1 3 | 4 | package config 5 | 6 | import ( 7 | "github.com/hashicorp/hcl/v2" 8 | ) 9 | 10 | type Vagrant struct { 11 | Sensitive []string `hcl:"sensitive,optional"` 12 | Plugins []string `hcl:"plugins,optional"` 13 | Host string `hcl:"host,optional"` 14 | 15 | Body hcl.Body `hcl:",body"` 16 | Remain hcl.Body `hcl:",remain"` 17 | } 18 | -------------------------------------------------------------------------------- /internal/core/arg.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) HashiCorp, Inc. 2 | // SPDX-License-Identifier: BUSL-1.1 3 | 4 | package core 5 | 6 | import ( 7 | "github.com/hashicorp/go-argmapper" 8 | "google.golang.org/protobuf/types/known/anypb" 9 | ) 10 | 11 | // argNamedAny returns an argmapper.Arg that specifies the Any value 12 | // with the proper subtype. 13 | func argNamedAny(n string, v *anypb.Any) argmapper.Arg { 14 | if v == nil { 15 | return nil 16 | } 17 | 18 | msg := string(v.MessageName()) 19 | 20 | return argmapper.NamedSubtype(n, v, msg) 21 | } 22 | -------------------------------------------------------------------------------- /internal/datasource/testdata/git-noop/DOTgit/COMMIT_EDITMSG: -------------------------------------------------------------------------------- 1 | Update waypoint.hcl to vagrant-hcl 2 | -------------------------------------------------------------------------------- /internal/datasource/testdata/git-noop/DOTgit/HEAD: -------------------------------------------------------------------------------- 1 | ref: refs/heads/master 2 | -------------------------------------------------------------------------------- /internal/datasource/testdata/git-noop/DOTgit/config: -------------------------------------------------------------------------------- 1 | [core] 2 | repositoryformatversion = 0 3 | filemode = true 4 | bare = false 5 | logallrefupdates = true 6 | ignorecase = true 7 | precomposeunicode = true 8 | -------------------------------------------------------------------------------- /internal/datasource/testdata/git-noop/DOTgit/description: -------------------------------------------------------------------------------- 1 | Unnamed repository; edit this file 'description' to name the repository. 2 | -------------------------------------------------------------------------------- /internal/datasource/testdata/git-noop/DOTgit/hooks/post-update.sample: -------------------------------------------------------------------------------- 1 | #!/nix/store/ilgf30winx4zw3acm5pk79cvhzkjch0f-bash-4.4-p23/bin/bash 2 | # 3 | # An example hook script to prepare a packed repository for use over 4 | # dumb transports. 5 | # 6 | # To enable this hook, rename this file to "post-update". 7 | 8 | exec git update-server-info 9 | -------------------------------------------------------------------------------- /internal/datasource/testdata/git-noop/DOTgit/index: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/internal/datasource/testdata/git-noop/DOTgit/index -------------------------------------------------------------------------------- /internal/datasource/testdata/git-noop/DOTgit/info/exclude: -------------------------------------------------------------------------------- 1 | # git ls-files --others --exclude-from=.git/info/exclude 2 | # Lines that start with '#' are comments. 3 | # For a project mostly in C, the following would be a good set of 4 | # exclude patterns (uncomment them if you want to use them): 5 | # *.[oa] 6 | # *~ 7 | -------------------------------------------------------------------------------- /internal/datasource/testdata/git-noop/DOTgit/logs/HEAD: -------------------------------------------------------------------------------- 1 | 0000000000000000000000000000000000000000 1924b8606e1d56acb7e2059652ad059d4bac6f2e Mitchell Hashimoto 1597721732 -0700 commit (initial): Initial commit 2 | 1924b8606e1d56acb7e2059652ad059d4bac6f2e b6bf15100c570f2be6a231a095d395ed16dfed81 Mitchell Hashimoto 1597722255 -0700 commit: Fixes 3 | b6bf15100c570f2be6a231a095d395ed16dfed81 1dea92c978dfb5de0a2c4fd06b5d66aa94030a52 sophia 1626726228 -0500 commit: Update waypoint.hcl to vagrant-hcl 4 | -------------------------------------------------------------------------------- /internal/datasource/testdata/git-noop/DOTgit/objects/18/2027df9c3c65cf974c160987ebd15962a96b06: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/internal/datasource/testdata/git-noop/DOTgit/objects/18/2027df9c3c65cf974c160987ebd15962a96b06 -------------------------------------------------------------------------------- /internal/datasource/testdata/git-noop/DOTgit/objects/19/24b8606e1d56acb7e2059652ad059d4bac6f2e: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/internal/datasource/testdata/git-noop/DOTgit/objects/19/24b8606e1d56acb7e2059652ad059d4bac6f2e -------------------------------------------------------------------------------- /internal/datasource/testdata/git-noop/DOTgit/objects/1d/ea92c978dfb5de0a2c4fd06b5d66aa94030a52: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/internal/datasource/testdata/git-noop/DOTgit/objects/1d/ea92c978dfb5de0a2c4fd06b5d66aa94030a52 -------------------------------------------------------------------------------- /internal/datasource/testdata/git-noop/DOTgit/objects/42/e94293c5ab5c800ae0bb60708e23f146d70c7d: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/internal/datasource/testdata/git-noop/DOTgit/objects/42/e94293c5ab5c800ae0bb60708e23f146d70c7d -------------------------------------------------------------------------------- /internal/datasource/testdata/git-noop/DOTgit/objects/ae/22fcefd0d5d1ec4933de6a306e3628ebaf78c5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/internal/datasource/testdata/git-noop/DOTgit/objects/ae/22fcefd0d5d1ec4933de6a306e3628ebaf78c5 -------------------------------------------------------------------------------- /internal/datasource/testdata/git-noop/DOTgit/objects/b6/bf15100c570f2be6a231a095d395ed16dfed81: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/internal/datasource/testdata/git-noop/DOTgit/objects/b6/bf15100c570f2be6a231a095d395ed16dfed81 -------------------------------------------------------------------------------- /internal/datasource/testdata/git-noop/DOTgit/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/internal/datasource/testdata/git-noop/DOTgit/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 -------------------------------------------------------------------------------- /internal/datasource/testdata/git-noop/DOTgit/objects/f7/606d1f7258d9eb1ef0bc6cf34816a70bbd6f8d: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/internal/datasource/testdata/git-noop/DOTgit/objects/f7/606d1f7258d9eb1ef0bc6cf34816a70bbd6f8d -------------------------------------------------------------------------------- /internal/datasource/testdata/git-noop/DOTgit/refs/heads/master: -------------------------------------------------------------------------------- 1 | 1dea92c978dfb5de0a2c4fd06b5d66aa94030a52 2 | -------------------------------------------------------------------------------- /internal/datasource/testdata/git-noop/vagrant.hcl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | project = "test" 5 | -------------------------------------------------------------------------------- /internal/pkg/README.md: -------------------------------------------------------------------------------- 1 | # internal/pkg 2 | 3 | This folder contains packages that are not specific to this application. 4 | These packages could theoretically be extracted into standalone public 5 | packages if they provide utility. 6 | -------------------------------------------------------------------------------- /internal/pkg/defaults/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | -------------------------------------------------------------------------------- /internal/pkg/defaults/internal/fixture/test.go: -------------------------------------------------------------------------------- 1 | package fixture 2 | 3 | // Sample is a struct that contains 1 exported field and 1 unexported field 4 | type Sample struct { 5 | ExportedFeild int 6 | unexportedFeild int 7 | } 8 | -------------------------------------------------------------------------------- /internal/pkg/defaults/setter.go: -------------------------------------------------------------------------------- 1 | package defaults 2 | 3 | // Setter is an interface for setting default values 4 | type Setter interface { 5 | SetDefaults() 6 | } 7 | 8 | func callSetter(v interface{}) { 9 | if ds, ok := v.(Setter); ok { 10 | ds.SetDefaults() 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /internal/pkg/flag/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) HashiCorp, Inc. 2 | // SPDX-License-Identifier: BUSL-1.1 3 | 4 | // Package flag is a thin layer over the stdlib flag package that provides 5 | // some minimal features such as aliasing, autocompletion handling, improved 6 | // defaults, etc. It was created for mitchellh/cli but can work as a standalone 7 | // package. 8 | package flag 9 | -------------------------------------------------------------------------------- /internal/pkg/spinner/.gitignore: -------------------------------------------------------------------------------- 1 | # Created by .gitignore support plugin (hsz.mobi) 2 | ### Go template 3 | # Compiled Object files, Static and Dynamic libs (Shared Objects) 4 | *.o 5 | *.a 6 | *.so 7 | 8 | # Folders 9 | _obj 10 | _test 11 | 12 | # Architecture specific extensions/prefixes 13 | *.[568vq] 14 | [568vq].out 15 | 16 | *.cgo1.go 17 | *.cgo2.c 18 | _cgo_defun.c 19 | _cgo_gotypes.go 20 | _cgo_export.* 21 | 22 | _testmain.go 23 | 24 | *.exe 25 | *.test 26 | *.prof 27 | 28 | .idea 29 | *.iml 30 | -------------------------------------------------------------------------------- /internal/pkg/spinner/.travis.yml: -------------------------------------------------------------------------------- 1 | language: go 2 | go: 3 | - 1.13 4 | - 1.14.1 5 | env: 6 | - GOARCH: amd64 7 | - GOARCH: 386 8 | script: 9 | - go test -v 10 | notifications: 11 | email: 12 | recipients: 13 | - brian.downs@gmail.com 14 | on_success: change 15 | on_failure: always 16 | -------------------------------------------------------------------------------- /internal/pkg/spinner/Makefile: -------------------------------------------------------------------------------- 1 | GO = GO111MODULE=on GOFLAGS=-mod=vendor go 2 | 3 | .PHONY: deps 4 | deps: 5 | $(GO) mod download 6 | $(GO) mod vendor 7 | 8 | .PHONY: test 9 | test: 10 | $(GO) test -v -cover ./... 11 | 12 | .PHONY: check 13 | check: 14 | if [ -d vendor ]; then cp -r vendor/* ${GOPATH}/src/; fi 15 | 16 | .PHONY: clean 17 | clean: 18 | $(GO) clean 19 | -------------------------------------------------------------------------------- /internal/plugin/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) HashiCorp, Inc. 2 | // SPDX-License-Identifier: BUSL-1.1 3 | 4 | // Package plugin has the functions necessary for discovering and launching 5 | // plugins. This exposes both builtin plugins as well as external, custom 6 | // plugins. 7 | package plugin 8 | -------------------------------------------------------------------------------- /internal/plugin/testdata/pathA/vagrant-plugin-a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/internal/plugin/testdata/pathA/vagrant-plugin-a -------------------------------------------------------------------------------- /internal/plugin/testdata/pathB/vagrant-plugin-a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/internal/plugin/testdata/pathB/vagrant-plugin-a -------------------------------------------------------------------------------- /internal/plugin/testdata/pathB/vagrant-plugin-b: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/internal/plugin/testdata/pathB/vagrant-plugin-b -------------------------------------------------------------------------------- /internal/protocolversion/type.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) HashiCorp, Inc. 2 | // SPDX-License-Identifier: BUSL-1.1 3 | 4 | package protocolversion 5 | 6 | //go:generate stringer -type=Type -linecomment 7 | 8 | // Type is the enum of protocol version types. 9 | type Type uint8 10 | 11 | const ( 12 | Invalid Type = iota // invalid 13 | Api // api 14 | Entrypoint // entrypoint 15 | ) 16 | -------------------------------------------------------------------------------- /internal/runner/testdata/git-noop/DOTgit/COMMIT_EDITMSG: -------------------------------------------------------------------------------- 1 | Add Vagrantfile for testing 2 | -------------------------------------------------------------------------------- /internal/runner/testdata/git-noop/DOTgit/HEAD: -------------------------------------------------------------------------------- 1 | ref: refs/heads/master 2 | -------------------------------------------------------------------------------- /internal/runner/testdata/git-noop/DOTgit/config: -------------------------------------------------------------------------------- 1 | [core] 2 | repositoryformatversion = 0 3 | filemode = true 4 | bare = false 5 | logallrefupdates = true 6 | ignorecase = true 7 | precomposeunicode = true 8 | -------------------------------------------------------------------------------- /internal/runner/testdata/git-noop/DOTgit/description: -------------------------------------------------------------------------------- 1 | Unnamed repository; edit this file 'description' to name the repository. 2 | -------------------------------------------------------------------------------- /internal/runner/testdata/git-noop/DOTgit/hooks/post-update.sample: -------------------------------------------------------------------------------- 1 | #!/nix/store/ilgf30winx4zw3acm5pk79cvhzkjch0f-bash-4.4-p23/bin/bash 2 | # 3 | # An example hook script to prepare a packed repository for use over 4 | # dumb transports. 5 | # 6 | # To enable this hook, rename this file to "post-update". 7 | 8 | exec git update-server-info 9 | -------------------------------------------------------------------------------- /internal/runner/testdata/git-noop/DOTgit/index: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/internal/runner/testdata/git-noop/DOTgit/index -------------------------------------------------------------------------------- /internal/runner/testdata/git-noop/DOTgit/info/exclude: -------------------------------------------------------------------------------- 1 | # git ls-files --others --exclude-from=.git/info/exclude 2 | # Lines that start with '#' are comments. 3 | # For a project mostly in C, the following would be a good set of 4 | # exclude patterns (uncomment them if you want to use them): 5 | # *.[oa] 6 | # *~ 7 | -------------------------------------------------------------------------------- /internal/runner/testdata/git-noop/DOTgit/logs/HEAD: -------------------------------------------------------------------------------- 1 | 0000000000000000000000000000000000000000 1924b8606e1d56acb7e2059652ad059d4bac6f2e Mitchell Hashimoto 1597721732 -0700 commit (initial): Initial commit 2 | 1924b8606e1d56acb7e2059652ad059d4bac6f2e b6bf15100c570f2be6a231a095d395ed16dfed81 Mitchell Hashimoto 1597722255 -0700 commit: Fixes 3 | b6bf15100c570f2be6a231a095d395ed16dfed81 cfa0599445d5025a7798f8949c83da3899e953df sophia 1626733782 -0500 commit: Add Vagrantfile for testing 4 | -------------------------------------------------------------------------------- /internal/runner/testdata/git-noop/DOTgit/logs/refs/heads/master: -------------------------------------------------------------------------------- 1 | 0000000000000000000000000000000000000000 1924b8606e1d56acb7e2059652ad059d4bac6f2e Mitchell Hashimoto 1597721732 -0700 commit (initial): Initial commit 2 | 1924b8606e1d56acb7e2059652ad059d4bac6f2e b6bf15100c570f2be6a231a095d395ed16dfed81 Mitchell Hashimoto 1597722255 -0700 commit: Fixes 3 | b6bf15100c570f2be6a231a095d395ed16dfed81 cfa0599445d5025a7798f8949c83da3899e953df sophia 1626733782 -0500 commit: Add Vagrantfile for testing 4 | -------------------------------------------------------------------------------- /internal/runner/testdata/git-noop/DOTgit/objects/18/2027df9c3c65cf974c160987ebd15962a96b06: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/internal/runner/testdata/git-noop/DOTgit/objects/18/2027df9c3c65cf974c160987ebd15962a96b06 -------------------------------------------------------------------------------- /internal/runner/testdata/git-noop/DOTgit/objects/19/24b8606e1d56acb7e2059652ad059d4bac6f2e: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/internal/runner/testdata/git-noop/DOTgit/objects/19/24b8606e1d56acb7e2059652ad059d4bac6f2e -------------------------------------------------------------------------------- /internal/runner/testdata/git-noop/DOTgit/objects/42/e94293c5ab5c800ae0bb60708e23f146d70c7d: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/internal/runner/testdata/git-noop/DOTgit/objects/42/e94293c5ab5c800ae0bb60708e23f146d70c7d -------------------------------------------------------------------------------- /internal/runner/testdata/git-noop/DOTgit/objects/ae/22fcefd0d5d1ec4933de6a306e3628ebaf78c5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/internal/runner/testdata/git-noop/DOTgit/objects/ae/22fcefd0d5d1ec4933de6a306e3628ebaf78c5 -------------------------------------------------------------------------------- /internal/runner/testdata/git-noop/DOTgit/objects/b4/50d3da13b8f241226fca12ce3450b783d7038c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/internal/runner/testdata/git-noop/DOTgit/objects/b4/50d3da13b8f241226fca12ce3450b783d7038c -------------------------------------------------------------------------------- /internal/runner/testdata/git-noop/DOTgit/objects/b6/bf15100c570f2be6a231a095d395ed16dfed81: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/internal/runner/testdata/git-noop/DOTgit/objects/b6/bf15100c570f2be6a231a095d395ed16dfed81 -------------------------------------------------------------------------------- /internal/runner/testdata/git-noop/DOTgit/objects/cf/a0599445d5025a7798f8949c83da3899e953df: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/internal/runner/testdata/git-noop/DOTgit/objects/cf/a0599445d5025a7798f8949c83da3899e953df -------------------------------------------------------------------------------- /internal/runner/testdata/git-noop/DOTgit/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/internal/runner/testdata/git-noop/DOTgit/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 -------------------------------------------------------------------------------- /internal/runner/testdata/git-noop/DOTgit/objects/ea/2549d66602a0a588e69f033c48944de5b7a45c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/internal/runner/testdata/git-noop/DOTgit/objects/ea/2549d66602a0a588e69f033c48944de5b7a45c -------------------------------------------------------------------------------- /internal/runner/testdata/git-noop/DOTgit/refs/heads/master: -------------------------------------------------------------------------------- 1 | cfa0599445d5025a7798f8949c83da3899e953df 2 | -------------------------------------------------------------------------------- /internal/runner/testdata/git-noop/Vagrantfile: -------------------------------------------------------------------------------- 1 | Vagrant.configure("2") do |config| 2 | config.vm.box = "hashicorp/bionic64" 3 | end 4 | -------------------------------------------------------------------------------- /internal/runner/testdata/git-noop/vagrant.hcl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | project = "test" 5 | -------------------------------------------------------------------------------- /internal/server/execclient/sigwinch.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) HashiCorp, Inc. 2 | // SPDX-License-Identifier: BUSL-1.1 3 | 4 | // +build !windows 5 | 6 | package execclient 7 | 8 | import ( 9 | "os" 10 | "os/signal" 11 | 12 | "golang.org/x/sys/unix" 13 | ) 14 | 15 | func registerSigwinch(winchCh chan os.Signal) { 16 | signal.Notify(winchCh, unix.SIGWINCH) 17 | } 18 | -------------------------------------------------------------------------------- /internal/server/execclient/sigwinch_windows.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) HashiCorp, Inc. 2 | // SPDX-License-Identifier: BUSL-1.1 3 | 4 | // +build windows 5 | 6 | package execclient 7 | 8 | import "os" 9 | 10 | func registerSigwinch(chan os.Signal) { 11 | // NOTE(mitchellh): we should use Windows APIs to poll the window size 12 | } 13 | -------------------------------------------------------------------------------- /internal/server/gen/ruby/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/internal/server/gen/ruby/.keep -------------------------------------------------------------------------------- /internal/server/singleprocess/service_test.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) HashiCorp, Inc. 2 | // SPDX-License-Identifier: BUSL-1.1 3 | 4 | package singleprocess 5 | 6 | import ( 7 | "github.com/hashicorp/vagrant/internal/server/proto/vagrant_server" 8 | ) 9 | 10 | func testServiceImpl(impl vagrant_server.VagrantServer) *service { 11 | return impl.(*service) 12 | } 13 | -------------------------------------------------------------------------------- /internal/server/singleprocess/state/state_test.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) HashiCorp, Inc. 2 | // SPDX-License-Identifier: BUSL-1.1 3 | 4 | package state 5 | 6 | import ( 7 | "math/rand" 8 | "time" 9 | ) 10 | 11 | func init() { 12 | // Seed our test randomness 13 | rand.Seed(time.Now().UnixNano()) 14 | } 15 | -------------------------------------------------------------------------------- /internal/serverclient/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) HashiCorp, Inc. 2 | // SPDX-License-Identifier: BUSL-1.1 3 | 4 | // Package serverclient contains helpers for the server API client. 5 | package serverclient 6 | -------------------------------------------------------------------------------- /keys/vagrant.key.ed25519: -------------------------------------------------------------------------------- 1 | -----BEGIN OPENSSH PRIVATE KEY----- 2 | b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW 3 | QyNTUxOQAAACDdWHcQaTZc8Q6nycsP0CqMNRfsLxvYVxqKosrHyTp+WAAAAJj2TBMT9kwT 4 | EwAAAAtzc2gtZWQyNTUxOQAAACDdWHcQaTZc8Q6nycsP0CqMNRfsLxvYVxqKosrHyTp+WA 5 | AAAEAveRHRHSCjIxbNKHDRzezD0U3R3UEEmS7R33fzvPQAD91YdxBpNlzxDqfJyw/QKow1 6 | F+wvG9hXGoqiysfJOn5YAAAAEHNwb3hAdmFncmFudC1kZXYBAgMEBQ== 7 | -----END OPENSSH PRIVATE KEY----- 8 | -------------------------------------------------------------------------------- /keys/vagrant.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key 2 | ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN1YdxBpNlzxDqfJyw/QKow1F+wvG9hXGoqiysfJOn5Y vagrant insecure public key 3 | -------------------------------------------------------------------------------- /keys/vagrant.pub.ed25519: -------------------------------------------------------------------------------- 1 | ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN1YdxBpNlzxDqfJyw/QKow1F+wvG9hXGoqiysfJOn5Y vagrant insecure public key 2 | -------------------------------------------------------------------------------- /keys/vagrant.pub.rsa: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key 2 | -------------------------------------------------------------------------------- /lib/vagrant/config/v1.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module Vagrant 5 | module Config 6 | module V1 7 | autoload :DummyConfig, "vagrant/config/v1/dummy_config" 8 | autoload :Loader, "vagrant/config/v1/loader" 9 | autoload :Root, "vagrant/config/v1/root" 10 | end 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /lib/vagrant/config/v1/dummy_config.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module Vagrant 5 | module Config 6 | module V1 7 | # This is a configuration object that can have anything done 8 | # to it. Anything, and it just appears to keep working. 9 | class DummyConfig 10 | def method_missing(name, *args, &block) 11 | DummyConfig.new 12 | end 13 | end 14 | end 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /lib/vagrant/config/v2.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module Vagrant 5 | module Config 6 | module V2 7 | autoload :DummyConfig, "vagrant/config/v2/dummy_config" 8 | autoload :Loader, "vagrant/config/v2/loader" 9 | autoload :Root, "vagrant/config/v2/root" 10 | autoload :Util, "vagrant/config/v2/util" 11 | end 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /lib/vagrant/plugin.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module Vagrant 5 | module Plugin 6 | autoload :V1, "vagrant/plugin/v1" 7 | autoload :V2, "vagrant/plugin/v2" 8 | autoload :Remote, "vagrant/plugin/remote" 9 | autoload :Manager, "vagrant/plugin/manager" 10 | autoload :StateFile, "vagrant/plugin/state_file" 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /lib/vagrant/plugin/v1/errors.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | # This file contains all the errors that the V1 plugin interface 5 | # may throw. 6 | 7 | module Vagrant 8 | module Plugin 9 | module V1 10 | # Exceptions that can be thrown within the plugin interface all 11 | # inherit from this parent exception. 12 | class Error < StandardError; end 13 | 14 | # This is thrown when a command name given is invalid. 15 | class InvalidCommandName < Error; end 16 | end 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /lib/vagrant/plugin/v2/errors.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | # This file contains all the errors that the V2 plugin interface 5 | # may throw. 6 | 7 | module Vagrant 8 | module Plugin 9 | module V2 10 | # Exceptions that can be thrown within the plugin interface all 11 | # inherit from this parent exception. 12 | class Error < StandardError; end 13 | 14 | # This is thrown when a command name given is invalid. 15 | class InvalidCommandName < Error; end 16 | end 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /lib/vagrant/util/file_mode.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module Vagrant 5 | module Util 6 | class FileMode 7 | # This returns the file permissions as a string from 8 | # an octal number. 9 | def self.from_octal(octal) 10 | perms = sprintf("%o", octal) 11 | perms.reverse[0..2].reverse 12 | end 13 | end 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /lib/vagrant/util/ipv4_interfaces.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module Vagrant 5 | module Util 6 | module IPv4Interfaces 7 | def ipv4_interfaces 8 | Socket.getifaddrs.select do |ifaddr| 9 | ifaddr.addr && ifaddr.addr.ipv4? 10 | end.map do |ifaddr| 11 | [ifaddr.name, ifaddr.addr.ip_address] 12 | end 13 | end 14 | 15 | extend IPv4Interfaces 16 | end 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /lib/vagrant/util/line_ending_helpers.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module Vagrant 5 | module Util 6 | module LineEndingHelpers 7 | # Converts line endings to unix-style line endings in the 8 | # given string. 9 | # 10 | # @param [String] string Original string 11 | # @return [String] The fixed string 12 | def dos_to_unix(string) 13 | string.gsub("\r\n", "\n") 14 | end 15 | end 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /lib/vagrant/util/safe_env.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module Vagrant 5 | module Util 6 | class SafeEnv 7 | # This yields an environment hash to change and catches any issues 8 | # while changing the environment variables and raises a helpful error 9 | # to end users. 10 | def self.change_env 11 | yield ENV 12 | rescue Errno::EINVAL 13 | raise Errors::EnvInval 14 | end 15 | end 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /lib/vagrant/util/shell_quote.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module Vagrant 5 | module Util 6 | module ShellQuote 7 | # This will auto-escape the text with the given quote mark type. 8 | # 9 | # @param [String] text Text to escape 10 | # @param [String] quote The quote character, such as " 11 | def self.escape(text, quote) 12 | text.gsub(/#{quote}/) do |m| 13 | "#{m}\\#{m}#{m}" 14 | end 15 | end 16 | end 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /lib/vagrant/util/silence_warnings.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module Vagrant 5 | module Util 6 | module SilenceWarnings 7 | # This silences any Ruby warnings. 8 | def self.silence! 9 | original = $VERBOSE 10 | $VERBOSE = nil 11 | return yield 12 | ensure 13 | $VERBOSE = original 14 | end 15 | end 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /lib/vagrant/version.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module Vagrant 5 | # This will always be up to date with the current version of Vagrant, 6 | # since it is used to generate the gemspec and is also the source of 7 | # the version for `vagrant -v` 8 | VERSION = File.read( 9 | File.expand_path("../../../version.txt", __FILE__)).chomp 10 | end 11 | -------------------------------------------------------------------------------- /nix/go-changelog.nix: -------------------------------------------------------------------------------- 1 | { buildGoModule, fetchFromGitHub }: 2 | 3 | buildGoModule rec { 4 | pname = "go-changelog"; 5 | version = "56335215ce3a8676ba7153be7c444daadcb132c7"; 6 | 7 | src = fetchFromGitHub { 8 | owner = "hashicorp"; 9 | repo = "go-changelog"; 10 | rev = "56335215ce3a8676ba7153be7c444daadcb132c7"; 11 | sha256 = "0z6ysz4x1rim09g9knbc5x5mrasfk6mzsi0h7jn8q4i035y1gg2j"; 12 | }; 13 | 14 | vendorSha256 = "1pahh64ayr885kv9rd5i4vh4a6hi1w583wch9n1ncvnckznzsdbg"; 15 | 16 | subPackages = [ "cmd/changelog-build" ]; 17 | } 18 | -------------------------------------------------------------------------------- /nix/grpc-tools.nix: -------------------------------------------------------------------------------- 1 | { autoPatchelfHook, buildRubyGem, ruby }: 2 | 3 | buildRubyGem rec { 4 | inherit ruby; 5 | name = "${gemName}-${version}"; 6 | gemName = "grpc-tools"; 7 | version = "1.56.2"; 8 | source.sha256 = "sha256-DBufMPdsZ3Ae0/uT8fyBNajjUeRsP5+CuGyKf+IpAEk="; 9 | nativeBuildInputs = [ autoPatchelfHook ]; 10 | } 11 | -------------------------------------------------------------------------------- /nix/overlay.nix: -------------------------------------------------------------------------------- 1 | final: prev: rec { 2 | devShells.default = final.callPackage ./vagrant.nix { }; 3 | go-changelog = prev.callPackage ./go-changelog.nix { }; 4 | go-protobuf-json = prev.callPackage ./go-protobuf-json.nix { }; 5 | grpc-tools = prev.callPackage ./grpc-tools.nix { }; 6 | } 7 | -------------------------------------------------------------------------------- /plugins/README.md: -------------------------------------------------------------------------------- 1 | # Vagrant Core Plugins 2 | 3 | These are plugins that ship with Vagrant. Vagrant core uses its own 4 | plugin system to power a lot of the core pieces that ship with Vagrant. 5 | Each plugin will have its own README which explains its specific role. 6 | 7 | ## Generate proto 8 | 9 | ``` 10 | grpc_tools_ruby_protoc -I . --ruby_out=gen/plugin --grpc_out=gen/plugin ./plugin_server.proto 11 | ``` 12 | -------------------------------------------------------------------------------- /plugins/commands/box/plugin.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module CommandBox 8 | class Plugin < Vagrant.plugin("2") 9 | name "box command" 10 | description "The `box` command gives you a way to manage boxes." 11 | 12 | command("box") do 13 | require File.expand_path("../command/root", __FILE__) 14 | Command::Root 15 | end 16 | end 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /plugins/commands/cap/plugin.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module CommandCap 8 | class Plugin < Vagrant.plugin("2") 9 | name "cap command" 10 | description <<-DESC 11 | The `cap` command checks and executes arbitrary capabilities. 12 | DESC 13 | 14 | command("cap", primary: false) do 15 | require_relative "command" 16 | Command 17 | end 18 | end 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /plugins/commands/cloud/box/plugin.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module CloudCommand 8 | module BoxCommand 9 | class Plugin < Vagrant.plugin("2") 10 | name "vagrant cloud box" 11 | description <<-DESC 12 | Box life cycle commands for Vagrant Cloud 13 | DESC 14 | 15 | command(:box) do 16 | require_relative "root" 17 | Command::Root 18 | end 19 | end 20 | end 21 | end 22 | end 23 | -------------------------------------------------------------------------------- /plugins/commands/help/command.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require 'optparse' 5 | 6 | module VagrantPlugins 7 | module CommandHelp 8 | class Command < Vagrant.plugin("2", :command) 9 | def self.synopsis 10 | "shows the help for a subcommand" 11 | end 12 | 13 | def execute 14 | return @env.cli([]) if @argv.empty? 15 | @env.cli([@argv[0], "-h"]) 16 | end 17 | end 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /plugins/commands/help/plugin.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module CommandHelp 8 | class Plugin < Vagrant.plugin("2") 9 | name "help command" 10 | description <<-DESC 11 | The `help` command shows help for the given command. 12 | DESC 13 | 14 | command("help") do 15 | require File.expand_path("../command", __FILE__) 16 | Command 17 | end 18 | end 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /plugins/commands/powershell/scripts/reset_trustedhosts.ps1: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | Param( 5 | [string]$hostname 6 | ) 7 | 8 | $trustedHosts = ( 9 | Get-Item "wsman:\localhost\client\trustedhosts").Value.Replace( 10 | $hostname, '') 11 | $trustedHosts = $trustedHosts.Replace(",,","") 12 | if($trustedHosts.EndsWith(",")){ 13 | $trustedHosts = $trustedHosts.Substring(0,$trustedHosts.length-1) 14 | } 15 | Set-Item "wsman:\localhost\client\trustedhosts" -Value $trustedHosts -Force -------------------------------------------------------------------------------- /plugins/commands/push/plugin.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module CommandPush 8 | class Plugin < Vagrant.plugin("2") 9 | name "push command" 10 | description <<-DESC 11 | The `push` command deploys code in this environment. 12 | DESC 13 | 14 | command("push") do 15 | require File.expand_path("../command", __FILE__) 16 | Command 17 | end 18 | end 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /plugins/commands/resume/plugin.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module CommandResume 8 | class Plugin < Vagrant.plugin("2") 9 | name "resume command" 10 | description <<-DESC 11 | The `resume` command resumes a suspend virtual machine. 12 | DESC 13 | 14 | command("resume") do 15 | require File.expand_path("../command", __FILE__) 16 | Command 17 | end 18 | end 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /plugins/commands/serve/client/core_plugin_manager.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module CommandServe 6 | class Client 7 | class CorePluginManager < Client 8 | def get_plugin(type) 9 | resp = client.get_plugin( 10 | SDK::CorePluginManager::GetPluginRequest.new( 11 | type: type 12 | ) 13 | ) 14 | mapper.map(resp.plugin, broker) 15 | end 16 | end 17 | end 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /plugins/commands/serve/constants.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module CommandServe 6 | # Simple constant aliases to reduce namespace typing 7 | SDK = Hashicorp::Vagrant::Sdk 8 | SRV = Hashicorp::Vagrant 9 | Empty = ::Google::Protobuf::Empty 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /plugins/commands/serve/mappers/internal.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module CommandServe 6 | class Mappers 7 | module Internal 8 | autoload :Graph, Vagrant.source_root.join("plugins/commands/serve/mappers/internal/graph").to_s 9 | end 10 | end 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /plugins/commands/serve/mappers/internal/graph/vertex/root.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module CommandServe 6 | class Mappers 7 | module Internal 8 | class Graph 9 | # Represents a root vertex within the graph 10 | class Vertex 11 | class Root < Vertex 12 | end 13 | end 14 | end 15 | end 16 | end 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /plugins/commands/serve/plugin.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module CommandServe 8 | class Plugin < Vagrant.plugin("2") 9 | name "start Vagrant server" 10 | description <<-DESC 11 | Start Vagrant in server mode 12 | DESC 13 | 14 | command("serve") do 15 | require File.expand_path("../command", __FILE__) 16 | Command 17 | end 18 | end 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /plugins/commands/serve/type/boolean.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module CommandServe 6 | class Type 7 | class Boolean < Type 8 | 9 | def initialize(value:) 10 | super(value: !!value) 11 | end 12 | end 13 | end 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /plugins/commands/serve/type/communicator_command_arguments.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module CommandServe 6 | class Type 7 | class CommunicatorCommandArguments < Type 8 | end 9 | end 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /plugins/commands/serve/type/direct.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module CommandServe 6 | class Type 7 | class Direct < Type 8 | attr_accessor :args 9 | 10 | def initialize(arguments: nil, value: nil) 11 | value = arguments if value.nil? 12 | super(value: value) 13 | @args = value 14 | end 15 | 16 | def arguments 17 | @args 18 | end 19 | end 20 | end 21 | end 22 | end 23 | -------------------------------------------------------------------------------- /plugins/commands/serve/type/duration.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module CommandServe 6 | class Type 7 | class Duration < Type 8 | end 9 | end 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /plugins/commands/serve/type/folders.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module CommandServe 6 | class Type 7 | class Folders < Type 8 | 9 | def initialize(value:) 10 | super(value: value) 11 | end 12 | end 13 | end 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /plugins/commands/serve/type/named_argument.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module CommandServe 6 | class Type 7 | class NamedArgument < Type 8 | attr_reader :name 9 | def initialize(name:, value:) 10 | @name = name 11 | super(value: value) 12 | end 13 | end 14 | end 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /plugins/commands/serve/type/options.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | #require "ostruct" 5 | 6 | module VagrantPlugins 7 | module CommandServe 8 | class Type 9 | class Options < Type 10 | def initialize(value:) 11 | if !value.is_a?(Hash) 12 | raise TypeError, 13 | "Expected type `Hash' but received `#{value.class}'" 14 | end 15 | super(value: value) 16 | end 17 | end 18 | end 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /plugins/commands/serve/type/ssh_info.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module CommandServe 6 | class Type 7 | class SSHInfo < Type 8 | end 9 | end 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /plugins/commands/serve/type/winrm_info.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module CommandServe 6 | class Type 7 | class WinrmInfo < Type 8 | end 9 | end 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /plugins/commands/serve/util/has_logger.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module CommandServe 6 | module Util 7 | # Creates a new logger instance and provides method 8 | # to access it 9 | module HasLogger 10 | def logger 11 | if !@logger 12 | @logger = Log4r::Logger.factory(self.class.name.to_s.downcase) 13 | end 14 | @logger 15 | end 16 | end 17 | end 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /plugins/commands/snapshot/plugin.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module CommandSnapshot 8 | class Plugin < Vagrant.plugin("2") 9 | name "snapshot command" 10 | description "The `snapshot` command gives you a way to manage snapshots." 11 | 12 | command("snapshot") do 13 | require_relative "command/root" 14 | Command::Root 15 | end 16 | end 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /plugins/commands/ssh/plugin.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module CommandSSH 8 | class Plugin < Vagrant.plugin("2") 9 | name "ssh command" 10 | description <<-DESC 11 | The `ssh` command allows you to SSH in to your running virtual machine. 12 | DESC 13 | 14 | command("ssh") do 15 | require File.expand_path("../command", __FILE__) 16 | Command 17 | end 18 | end 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /plugins/commands/upload/plugin.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module CommandUpload 8 | class Plugin < Vagrant.plugin("2") 9 | name "upload command" 10 | description <<-DESC 11 | The `upload` command uploads files to guest via communicator 12 | DESC 13 | 14 | command("upload") do 15 | require File.expand_path("../command", __FILE__) 16 | Command 17 | end 18 | end 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /plugins/commands/validate/plugin.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module CommandValidate 8 | class Plugin < Vagrant.plugin("2") 9 | name "validate command" 10 | description <<-DESC 11 | The `validate` command validates the Vagrantfile. 12 | DESC 13 | 14 | command("validate") do 15 | require File.expand_path("../command", __FILE__) 16 | Command 17 | end 18 | end 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /plugins/commands/winrm/plugin.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module CommandWinRM 8 | class Plugin < Vagrant.plugin("2") 9 | name "winrm command" 10 | description <<-DESC 11 | The `winrm` command executes commands on a machine via WinRM 12 | DESC 13 | 14 | command("winrm") do 15 | require File.expand_path("../command", __FILE__) 16 | Command 17 | end 18 | end 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /plugins/guests/alma/guest.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require_relative "../linux/guest" 5 | 6 | module VagrantPlugins 7 | module GuestAlma 8 | class Guest < VagrantPlugins::GuestLinux::Guest 9 | # Name used for guest detection 10 | GUEST_DETECTION_NAME = "almalinux".freeze 11 | end 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /plugins/guests/alpine/cap/rsync.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestAlpine 6 | module Cap 7 | class RSync 8 | def self.rsync_installed(machine) 9 | machine.communicate.test('test -f /usr/bin/rsync') 10 | end 11 | 12 | def self.rsync_install(machine) 13 | machine.communicate.tap do |comm| 14 | comm.sudo('apk add --update-cache rsync') 15 | end 16 | end 17 | end 18 | end 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /plugins/guests/alpine/cap/smb.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestAlpine 6 | module Cap 7 | class SMB 8 | def self.smb_install(machine) 9 | machine.communicate.tap do |comm| 10 | comm.sudo('apk add cifs-utils') 11 | end 12 | end 13 | end 14 | end 15 | end 16 | end -------------------------------------------------------------------------------- /plugins/guests/alpine/guest.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require 'vagrant' 5 | 6 | module VagrantPlugins 7 | module GuestAlpine 8 | class Guest < Vagrant.plugin('2', :guest) 9 | def detect?(machine) 10 | machine.communicate.test('cat /etc/alpine-release') 11 | end 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /plugins/guests/alt/cap/network_scripts_dir.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestALT 6 | module Cap 7 | class NetworkScriptsDir 8 | def self.network_scripts_dir(machine) 9 | "/etc/net" 10 | end 11 | end 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /plugins/guests/alt/cap/rsync.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestALT 6 | module Cap 7 | class RSync 8 | def self.rsync_install(machine) 9 | machine.communicate.sudo <<-EOH.gsub(/^ {12}/, '') 10 | apt-get install -y -qq install rsync 11 | EOH 12 | end 13 | end 14 | end 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /plugins/guests/alt/guest.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestALT 6 | class Guest < Vagrant.plugin("2", :guest) 7 | def detect?(machine) 8 | machine.communicate.test("cat /etc/altlinux-release") 9 | end 10 | end 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /plugins/guests/amazon/cap/flavor.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestAmazon 6 | module Cap 7 | class Flavor 8 | def self.flavor(machine) 9 | # Amazon AMI is a frankenstien RHEL, mainly based on 6 10 | # Maybe in the future if they incorporate RHEL 7 elements 11 | # this should be extended to read /etc/os-release or similar 12 | return :rhel 13 | end 14 | end 15 | end 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /plugins/guests/amazon/guest.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestAmazon 6 | class Guest < Vagrant.plugin("2", :guest) 7 | def detect?(machine) 8 | machine.communicate.test("grep 'Amazon Linux' /etc/os-release") 9 | end 10 | end 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /plugins/guests/arch/cap/change_host_name.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require_relative '../../linux/cap/change_host_name' 5 | 6 | module VagrantPlugins 7 | module GuestArch 8 | module Cap 9 | class ChangeHostName 10 | extend VagrantPlugins::GuestLinux::Cap::ChangeHostName 11 | 12 | def self.change_name_command(name) 13 | "hostnamectl set-hostname '#{name.split(".", 2).first}'" 14 | end 15 | end 16 | end 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /plugins/guests/arch/cap/rsync.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestArch 6 | module Cap 7 | class RSync 8 | def self.rsync_install(machine) 9 | comm = machine.communicate 10 | comm.sudo <<-EOH.gsub(/^ {12}/, '') 11 | pacman -Sy --noconfirm 12 | pacman -S --noconfirm rsync 13 | exit $? 14 | EOH 15 | end 16 | end 17 | end 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /plugins/guests/arch/guest.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module GuestArch 8 | class Guest < Vagrant.plugin("2", :guest) 9 | def detect?(machine) 10 | machine.communicate.test("cat /etc/arch-release") 11 | end 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /plugins/guests/atomic/cap/change_host_name.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require_relative '../../linux/cap/change_host_name' 5 | 6 | module VagrantPlugins 7 | module GuestAtomic 8 | module Cap 9 | class ChangeHostName 10 | extend VagrantPlugins::GuestLinux::Cap::ChangeHostName 11 | 12 | def self.change_name_command(name) 13 | "hostnamectl set-hostname '#{name.split(".", 2).first}'" 14 | end 15 | end 16 | end 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /plugins/guests/atomic/cap/docker.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestAtomic 6 | module Cap 7 | module Docker 8 | def self.docker_daemon_running(machine) 9 | machine.communicate.test("test -S /run/docker.sock") 10 | end 11 | end 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /plugins/guests/atomic/guest.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module GuestAtomic 8 | class Guest < Vagrant.plugin("2", :guest) 9 | def detect?(machine) 10 | machine.communicate.test("grep 'ostree=.*atomic' /proc/cmdline") 11 | end 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /plugins/guests/bsd/guest.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestBSD 6 | class Guest < Vagrant.plugin("2", :guest) 7 | def detect?(machine) 8 | machine.communicate.test("uname -s | grep -i 'BSD'") 9 | end 10 | end 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /plugins/guests/centos/guest.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | require_relative '../linux/guest' 6 | 7 | module VagrantPlugins 8 | module GuestCentos 9 | class Guest < VagrantPlugins::GuestLinux::Guest 10 | # Name used for guest detection 11 | GUEST_DETECTION_NAME = "centos".freeze 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /plugins/guests/coreos/cap/docker.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestCoreOS 6 | module Cap 7 | module Docker 8 | def self.docker_daemon_running(machine) 9 | machine.communicate.test("test -S /run/docker.sock") 10 | end 11 | end 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /plugins/guests/coreos/guest.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module GuestCoreOS 8 | class Guest < Vagrant.plugin("2", :guest) 9 | def detect?(machine) 10 | machine.communicate.test("(cat /etc/os-release | grep ID=coreos) || (cat /etc/os-release | grep -E 'ID_LIKE=.*coreos.*')") 11 | end 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /plugins/guests/darwin/cap/rsync.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require_relative "../../../synced_folders/rsync/default_unix_cap" 5 | 6 | module VagrantPlugins 7 | module GuestDarwin 8 | module Cap 9 | class RSync 10 | extend VagrantPlugins::SyncedFolderRSync::DefaultUnixCap 11 | end 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /plugins/guests/darwin/cap/verify_vmware_hgfs.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestDarwin 6 | module Cap 7 | class VerifyVmwareHgfs 8 | def self.verify_vmware_hgfs(machine) 9 | kext_bundle_id = "com.vmware.kext.vmhgfs" 10 | machine.communicate.test("kextstat -b #{kext_bundle_id} -l | grep #{kext_bundle_id}") 11 | end 12 | end 13 | end 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /plugins/guests/debian/cap/nfs.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestDebian 6 | module Cap 7 | class NFS 8 | def self.nfs_client_install(machine) 9 | comm = machine.communicate 10 | comm.sudo <<-EOH.gsub(/^ {12}/, '') 11 | apt-get -yqq update 12 | apt-get -yqq install nfs-common portmap 13 | exit $? 14 | EOH 15 | end 16 | end 17 | end 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /plugins/guests/debian/cap/rsync.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestDebian 6 | module Cap 7 | class RSync 8 | def self.rsync_install(machine) 9 | comm = machine.communicate 10 | comm.sudo <<-EOH.gsub(/^ {14}/, '') 11 | apt-get -yqq update 12 | apt-get -yqq install rsync 13 | EOH 14 | end 15 | end 16 | end 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /plugins/guests/debian/guest.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require_relative '../linux/guest' 5 | 6 | module VagrantPlugins 7 | module GuestDebian 8 | class Guest < VagrantPlugins::GuestLinux::Guest 9 | # Name used for guest detection 10 | GUEST_DETECTION_NAME = "debian".freeze 11 | end 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /plugins/guests/dragonflybsd/guest.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestDragonFlyBSD 6 | class Guest < Vagrant.plugin("2", :guest) 7 | def detect?(machine) 8 | machine.communicate.test("uname -s | grep -i 'DragonFly'") 9 | end 10 | end 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /plugins/guests/dragonflybsd/plugin.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module GuestDragonFlyBSD 8 | class Plugin < Vagrant.plugin("2") 9 | name "DragonFly BSD guest" 10 | description "DragonFly BSD guest support." 11 | 12 | guest(:dragonflybsd, :freebsd) do 13 | require_relative "guest" 14 | Guest 15 | end 16 | end 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /plugins/guests/elementary/guest.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require_relative '../linux/guest' 5 | 6 | module VagrantPlugins 7 | module GuestElementary 8 | class Guest < VagrantPlugins::GuestLinux::Guest 9 | # Name used for guest detection 10 | GUEST_DETECTION_NAME = "elementary".freeze 11 | end 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /plugins/guests/elementary/plugin.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module GuestElementary 8 | class Plugin < Vagrant.plugin("2") 9 | name "Elementary guest" 10 | description "Elementary guest support." 11 | 12 | guest(:elementary, :ubuntu) do 13 | require_relative "guest" 14 | Guest 15 | end 16 | end 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /plugins/guests/esxi/cap/change_host_name.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestEsxi 6 | module Cap 7 | class ChangeHostName 8 | def self.change_host_name(machine, name) 9 | if !machine.communicate.test("localcli system hostname get | grep '#{name}'") 10 | machine.communicate.execute("localcli system hostname set -H '#{name}'") 11 | end 12 | end 13 | end 14 | end 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /plugins/guests/esxi/cap/halt.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestEsxi 6 | module Cap 7 | class Halt 8 | def self.halt(machine) 9 | begin 10 | machine.communicate.execute("/bin/halt -d 0") 11 | rescue IOError, Vagrant::Errors::SSHDisconnected 12 | # Ignore, this probably means connection closed because it 13 | # shut down. 14 | end 15 | end 16 | end 17 | end 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /plugins/guests/esxi/guest.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module GuestEsxi 8 | class Guest < Vagrant.plugin("2", :guest) 9 | def detect?(machine) 10 | machine.communicate.test("uname -s | grep VMkernel") 11 | end 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /plugins/guests/fedora/guest.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | require_relative '../linux/guest' 6 | 7 | module VagrantPlugins 8 | module GuestFedora 9 | class Guest < VagrantPlugins::GuestLinux::Guest 10 | # Name used for guest detection 11 | GUEST_DETECTION_NAME = "fedora".freeze 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /plugins/guests/freebsd/cap/rsync.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require_relative "../../../synced_folders/rsync/default_unix_cap" 5 | 6 | module VagrantPlugins 7 | module GuestFreeBSD 8 | module Cap 9 | class RSync 10 | extend VagrantPlugins::SyncedFolderRSync::DefaultUnixCap 11 | 12 | def self.rsync_install(machine) 13 | machine.communicate.sudo("pkg install -y rsync") 14 | end 15 | end 16 | end 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /plugins/guests/freebsd/guest.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require 'vagrant/util/template_renderer' 5 | 6 | module VagrantPlugins 7 | module GuestFreeBSD 8 | # A general Vagrant system implementation for "freebsd". 9 | # 10 | # Contributed by Kenneth Vestergaard 11 | class Guest < Vagrant.plugin("2", :guest) 12 | def detect?(machine) 13 | machine.communicate.test("uname -s | grep 'FreeBSD'", {shell: "sh"}) 14 | end 15 | end 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /plugins/guests/funtoo/guest.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestFuntoo 6 | class Guest < Vagrant.plugin("2", :guest) 7 | def detect?(machine) 8 | machine.communicate.test("grep Funtoo /etc/gentoo-release") 9 | end 10 | end 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /plugins/guests/gentoo/guest.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestGentoo 6 | class Guest < Vagrant.plugin("2", :guest) 7 | def detect?(machine) 8 | machine.communicate.test("grep Gentoo /etc/gentoo-release") 9 | end 10 | end 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /plugins/guests/haiku/cap/halt.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestHaiku 6 | module Cap 7 | class Halt 8 | def self.halt(machine) 9 | begin 10 | machine.communicate.execute("/bin/shutdown") 11 | rescue IOError, Vagrant::Errors::SSHDisconnected 12 | # Ignore, this probably means connection closed because it 13 | # shut down. 14 | end 15 | end 16 | end 17 | end 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /plugins/guests/haiku/guest.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module GuestHaiku 8 | class Guest < Vagrant.plugin("2", :guest) 9 | def detect?(machine) 10 | machine.communicate.test("uname -o | grep 'Haiku'") 11 | end 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /plugins/guests/kali/guest.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require_relative '../linux/guest' 5 | 6 | module VagrantPlugins 7 | module GuestKali 8 | class Guest < VagrantPlugins::GuestLinux::Guest 9 | # Name used for guest detection 10 | GUEST_DETECTION_NAME = "kali".freeze 11 | end 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /plugins/guests/kali/plugin.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module GuestKali 8 | class Plugin < Vagrant.plugin("2") 9 | name "Kali guest" 10 | description "Kali guest support." 11 | 12 | guest(:kali, :debian) do 13 | require_relative "guest" 14 | Guest 15 | end 16 | end 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /plugins/guests/linux/cap/port.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestLinux 6 | module Cap 7 | class Port 8 | def self.port_open_check(machine, port) 9 | machine.communicate.test("nc -z -w2 127.0.0.1 #{port}") 10 | end 11 | end 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /plugins/guests/linux/cap/rsync.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require_relative "../../../synced_folders/rsync/default_unix_cap" 5 | 6 | module VagrantPlugins 7 | module GuestLinux 8 | module Cap 9 | class RSync 10 | extend VagrantPlugins::SyncedFolderRSync::DefaultUnixCap 11 | end 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /plugins/guests/mint/guest.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require_relative '../linux/guest' 5 | 6 | module VagrantPlugins 7 | module GuestMint 8 | class Guest < VagrantPlugins::GuestLinux::Guest 9 | # Name used for guest detection 10 | GUEST_DETECTION_NAME = "Linux Mint".freeze 11 | end 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /plugins/guests/mint/plugin.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module GuestMint 8 | class Plugin < Vagrant.plugin("2") 9 | name "Mint guest" 10 | description "Mint guest support." 11 | 12 | guest(:mint, :ubuntu) do 13 | require_relative "guest" 14 | Guest 15 | end 16 | end 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /plugins/guests/netbsd/guest.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module GuestNetBSD 8 | class Guest < Vagrant.plugin("2", :guest) 9 | def detect?(machine) 10 | machine.communicate.test("uname -s | grep NetBSD") 11 | end 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /plugins/guests/nixos/cap/nfs_client.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestNixos 6 | module Cap 7 | class NFSClient 8 | def self.nfs_client_installed(machine) 9 | machine.communicate.test("test -x /run/current-system/sw/sbin/mount.nfs") 10 | end 11 | end 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /plugins/guests/omnios/cap/rsync.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestOmniOS 6 | module Cap 7 | class RSync 8 | def self.rsync_install(machine) 9 | machine.communicate.sudo("pkg install rsync") 10 | end 11 | end 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /plugins/guests/omnios/guest.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestOmniOS 6 | class Guest < Vagrant.plugin("2", :guest) 7 | def detect?(machine) 8 | machine.communicate.test("cat /etc/release | grep -i OmniOS") 9 | end 10 | end 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /plugins/guests/openbsd/guest.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module GuestOpenBSD 8 | class Guest < Vagrant.plugin("2", :guest) 9 | def detect?(machine) 10 | machine.communicate.test("uname -s | grep 'OpenBSD'") 11 | end 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /plugins/guests/openwrt/cap/halt.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestOpenWrt 6 | module Cap 7 | class Halt 8 | def self.halt(machine) 9 | begin 10 | machine.communicate.execute("halt") 11 | rescue IOError, Vagrant::Errors::SSHDisconnected 12 | # Ignore, this probably means connection closed because it 13 | # shut down. 14 | end 15 | end 16 | end 17 | end 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /plugins/guests/photon/cap/docker.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestPhoton 6 | module Cap 7 | module Docker 8 | def self.docker_daemon_running(machine) 9 | machine.communicate.test('test -S /run/docker.sock') 10 | end 11 | end 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /plugins/guests/photon/guest.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestPhoton 6 | class Guest < Vagrant.plugin("2", :guest) 7 | def detect?(machine) 8 | machine.communicate.test("cat /etc/photon-release | grep 'VMware Photon'") 9 | end 10 | end 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /plugins/guests/pld/cap/flavor.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestPld 6 | module Cap 7 | class Flavor 8 | def self.flavor(machine) 9 | return :pld 10 | end 11 | end 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /plugins/guests/pld/cap/network_scripts_dir.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestPld 6 | module Cap 7 | class NetworkScriptsDir 8 | def self.network_scripts_dir(machine) 9 | "/etc/sysconfig/interfaces" 10 | end 11 | end 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /plugins/guests/pld/guest.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestPld 6 | class Guest < Vagrant.plugin("2", :guest) 7 | def detect?(machine) 8 | machine.communicate.test("cat /etc/pld-release") 9 | end 10 | end 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /plugins/guests/redhat/cap/network_scripts_dir.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestRedHat 6 | module Cap 7 | class NetworkScriptsDir 8 | def self.network_scripts_dir(machine) 9 | "/etc/sysconfig/network-scripts" 10 | end 11 | end 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /plugins/guests/redhat/cap/rsync.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestRedHat 6 | module Cap 7 | class RSync 8 | def self.rsync_install(machine) 9 | machine.communicate.sudo <<-EOH.gsub(/^ {12}/, '') 10 | if command -v dnf; then 11 | dnf -y install rsync 12 | else 13 | yum -y install rsync 14 | fi 15 | EOH 16 | end 17 | end 18 | end 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /plugins/guests/redhat/guest.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestRedHat 6 | class Guest < Vagrant.plugin("2", :guest) 7 | def detect?(machine) 8 | machine.communicate.test("cat /etc/redhat-release") 9 | end 10 | end 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /plugins/guests/rocky/guest.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require_relative "../linux/guest" 5 | 6 | module VagrantPlugins 7 | module GuestRocky 8 | class Guest < VagrantPlugins::GuestLinux::Guest 9 | # Name used for guest detection 10 | GUEST_DETECTION_NAME = "rocky".freeze 11 | end 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /plugins/guests/slackware/guest.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestSlackware 6 | class Guest < Vagrant.plugin("2", :guest) 7 | def detect?(machine) 8 | machine.communicate.test("cat /etc/slackware-version") 9 | end 10 | end 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /plugins/guests/smartos/config.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestSmartos 6 | class Config < Vagrant.plugin("2", :config) 7 | # This sets the command to use to execute items as a superuser. 8 | # @default sudo 9 | attr_accessor :suexec_cmd 10 | attr_accessor :device 11 | 12 | def initialize 13 | @suexec_cmd = 'pfexec' 14 | @device = "e1000g" 15 | end 16 | end 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /plugins/guests/smartos/guest.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module GuestSmartos 8 | class Guest < Vagrant.plugin("2", :guest) 9 | def detect?(machine) 10 | machine.communicate.test("cat /etc/release | grep -i SmartOS") 11 | end 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /plugins/guests/solaris/guest.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module GuestSolaris 8 | # A general Vagrant system implementation for "solaris". 9 | # 10 | # Contributed by Blake Irvin 11 | class Guest < Vagrant.plugin("2", :guest) 12 | def detect?(machine) 13 | machine.communicate.test("uname -sr | grep SunOS | grep -v 5.11") 14 | end 15 | end 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /plugins/guests/suse/cap/network_scripts_dir.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestSUSE 6 | module Cap 7 | class NetworkScriptsDir 8 | def self.network_scripts_dir(machine) 9 | "/etc/sysconfig/network" 10 | end 11 | end 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /plugins/guests/suse/cap/nfs_client.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestSUSE 6 | module Cap 7 | class NFSClient 8 | def self.nfs_client_install(machine) 9 | machine.communicate.sudo <<-EOH.gsub(/^ {12}/, '') 10 | zypper -n install nfs-client 11 | /usr/bin/systemctl restart rpcbind 12 | /usr/bin/systemctl restart nfs-client.target 13 | EOH 14 | end 15 | end 16 | end 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /plugins/guests/suse/cap/rsync.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestSUSE 6 | module Cap 7 | class RSync 8 | def self.rsync_installed(machine) 9 | machine.communicate.test("test -f /usr/bin/rsync") 10 | end 11 | 12 | def self.rsync_install(machine) 13 | machine.communicate.sudo("zypper -n install rsync") 14 | end 15 | end 16 | end 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /plugins/guests/suse/guest.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestSUSE 6 | class Guest < Vagrant.plugin("2", :guest) 7 | def detect?(machine) 8 | machine.communicate.test("test -f /etc/SuSE-release || grep -q SUSE /etc/os-release") 9 | end 10 | end 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /plugins/guests/tinycore/cap/change_host_name.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestTinyCore 6 | module Cap 7 | class ChangeHostName 8 | def self.change_host_name(machine, name) 9 | if !machine.communicate.test("hostname | grep '^#{name}$'") 10 | machine.communicate.sudo("/usr/bin/sethostname #{name}") 11 | end 12 | end 13 | end 14 | end 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /plugins/guests/tinycore/guest.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require_relative '../linux/guest' 5 | 6 | module VagrantPlugins 7 | module GuestTinyCore 8 | class Guest < VagrantPlugins::GuestLinux::Guest 9 | # Name used for guest detection 10 | GUEST_DETECTION_NAME = "Core Linux".freeze 11 | end 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /plugins/guests/trisquel/guest.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestTrisquel 6 | class Guest < Vagrant.plugin("2", :guest) 7 | def detect?(machine) 8 | machine.communicate.test("[ -x /usr/bin/lsb_release ] && /usr/bin/lsb_release -i 2>/dev/null | grep Trisquel") 9 | end 10 | end 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /plugins/guests/trisquel/plugin.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module GuestTrisquel 8 | class Plugin < Vagrant.plugin("2") 9 | name "Trisquel guest" 10 | description "Trisquel guest support." 11 | 12 | guest(:trisquel, :ubuntu) do 13 | require_relative "guest" 14 | Guest 15 | end 16 | end 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /plugins/guests/ubuntu/guest.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require_relative '../linux/guest' 5 | 6 | module VagrantPlugins 7 | module GuestUbuntu 8 | class Guest < VagrantPlugins::GuestLinux::Guest 9 | # Name used for guest detection 10 | GUEST_DETECTION_NAME = "ubuntu".freeze 11 | end 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /plugins/guests/ubuntu/plugin.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module GuestUbuntu 8 | class Plugin < Vagrant.plugin("2") 9 | name "Ubuntu guest" 10 | description "Ubuntu guest support." 11 | 12 | guest(:ubuntu, :debian) do 13 | require_relative "guest" 14 | Guest 15 | end 16 | end 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /plugins/guests/windows/guest.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module GuestWindows 6 | class Guest < Vagrant.plugin("2", :guest) 7 | def detect?(machine) 8 | # See if the Windows directory is present. 9 | machine.communicate.test("test -d $Env:SystemRoot") 10 | end 11 | end 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /plugins/guests/windows/scripts/set_work_network.ps1: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | # Get network connections 5 | $networkListManager = [Activator]::CreateInstance([Type]::GetTypeFromCLSID([Guid]"{DCB00C01-570F-4A9B-8D69-199FDBA5723B}")) 6 | $connections = $networkListManager.GetNetworkConnections() 7 | 8 | # Set network location to Private for all networks 9 | $connections | % {$_.GetNetwork().SetCategory(1)} 10 | -------------------------------------------------------------------------------- /plugins/hosts/alt/host.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module HostALT 8 | class Host < Vagrant.plugin("2", :host) 9 | def detect?(env) 10 | File.exist?("/etc/altlinux-release") 11 | end 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /plugins/hosts/arch/host.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module HostArch 8 | class Host < Vagrant.plugin("2", :host) 9 | def detect?(env) 10 | File.exist?("/etc/arch-release") && !File.exist?("/etc/artix-release") 11 | end 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /plugins/hosts/bsd/cap/path.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module HostBSD 6 | module Cap 7 | class Path 8 | def self.resolve_host_path(env, path) 9 | path 10 | end 11 | end 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /plugins/hosts/bsd/cap/ssh.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module HostBSD 6 | module Cap 7 | class SSH 8 | # Set the ownership and permissions for SSH 9 | # private key 10 | # 11 | # @param [Vagrant::Environment] env 12 | # @param [Pathname] key_path 13 | def self.set_ssh_key_permissions(env, key_path) 14 | key_path.chmod(0600) 15 | end 16 | end 17 | end 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /plugins/hosts/bsd/host.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module HostBSD 8 | # Represents a BSD host, such as FreeBSD. 9 | class Host < Vagrant.plugin("2", :host) 10 | def detect?(env) 11 | Vagrant::Util::Platform.darwin? 12 | end 13 | end 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /plugins/hosts/darwin/cap/nfs.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module HostDarwin 6 | module Cap 7 | class NFS 8 | def self.nfs_exports_template(environment) 9 | "nfs/exports_darwin" 10 | end 11 | end 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /plugins/hosts/darwin/host.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant/util/platform" 5 | 6 | module VagrantPlugins 7 | module HostDarwin 8 | class Host < Vagrant.plugin("2", :host) 9 | def detect?(env) 10 | Vagrant::Util::Platform.darwin? 11 | end 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /plugins/hosts/darwin/scripts/install_virtualbox.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Copyright (c) HashiCorp, Inc. 3 | # SPDX-License-Identifier: BUSL-1.1 4 | 5 | set -e 6 | 7 | hdiutil attach $1 8 | cd /Volumes/VirtualBox/ 9 | sudo installer -pkg VirtualBox.pkg -target "/" 10 | cd /tmp 11 | flag=1 12 | while [ $flag -ne 0 ]; do 13 | sleep 1 14 | set +e 15 | hdiutil detach /Volumes/VirtualBox/ 16 | flag=$? 17 | set -e 18 | done 19 | -------------------------------------------------------------------------------- /plugins/hosts/freebsd/host.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | require 'vagrant/util/platform' 6 | 7 | module VagrantPlugins 8 | module HostFreeBSD 9 | class Host < Vagrant.plugin("2", :host) 10 | def detect?(env) 11 | Vagrant::Util::Platform.freebsd? 12 | end 13 | end 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /plugins/hosts/gentoo/host.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module HostGentoo 8 | class Host < Vagrant.plugin("2", :host) 9 | def detect?(env) 10 | File.exist?("/etc/gentoo-release") 11 | end 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /plugins/hosts/linux/cap/ssh.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module HostLinux 6 | module Cap 7 | class SSH 8 | # Set the ownership and permissions for SSH 9 | # private key 10 | # 11 | # @param [Vagrant::Environment] env 12 | # @param [Pathname] key_path 13 | def self.set_ssh_key_permissions(env, key_path) 14 | key_path.chmod(0600) 15 | end 16 | end 17 | end 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /plugins/hosts/linux/host.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module HostLinux 8 | # Represents a Linux based host, such as Ubuntu. 9 | class Host < Vagrant.plugin("2", :host) 10 | def detect?(env) 11 | Vagrant::Util::Platform.linux? 12 | end 13 | end 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /plugins/hosts/null/host.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module HostNull 8 | class Host < Vagrant.plugin("2", :host) 9 | def detect?(env) 10 | # This host can only be explicitly chosen. 11 | false 12 | end 13 | end 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /plugins/hosts/null/plugin.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module HostNull 8 | class Plugin < Vagrant.plugin("2") 9 | name "null host" 10 | description "A host that implements no capabilities." 11 | 12 | host("null") do 13 | require_relative "host" 14 | Host 15 | end 16 | end 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /plugins/hosts/slackware/cap/nfs.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module HostSlackware 6 | module Cap 7 | class NFS 8 | def self.nfs_check_command(env) 9 | "/sbin/pidof nfsd >/dev/null" 10 | end 11 | 12 | def self.nfs_start_command(env) 13 | "/etc/rc.d/rc.nfsd start" 14 | end 15 | end 16 | end 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /plugins/hosts/slackware/host.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module HostSlackware 8 | class Host < Vagrant.plugin("2", :host) 9 | def detect?(env) 10 | return File.exist?("/etc/slackware-version") || 11 | !Dir.glob("/usr/lib/setup/Plamo-*").empty? 12 | end 13 | end 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /plugins/hosts/windows/cap/nfs.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module HostWindows 6 | module Cap 7 | class NFS 8 | def self.nfs_installed(env) 9 | false 10 | end 11 | end 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /plugins/hosts/windows/scripts/set_ssh_key_permissions.ps1: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | #Requires -Modules VagrantSSH 5 | 6 | param( 7 | [Parameter(Mandatory=$true)] 8 | [string] $KeyPath, 9 | [Parameter(Mandatory=$false)] 10 | [string] $Principal=$null 11 | ) 12 | 13 | $ErrorActionPreference = "Stop" 14 | 15 | try { 16 | Set-SSHKeyPermissions -SSHKeyPath $KeyPath -Principal $Principal 17 | } catch { 18 | Write-Error "Failed to set permissions on key: ${PSItem}" 19 | exit 1 20 | } 21 | -------------------------------------------------------------------------------- /plugins/hosts/windows/scripts/unset_share.ps1: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | ForEach ($share_name in $args) { 5 | $result = net share $share_name /DELETE /YES 6 | if ($LastExitCode -ne 0) { 7 | Write-Output "share name: ${share_name}" 8 | Write-Error "error - ${result}" 9 | exit 1 10 | } 11 | } 12 | Write-Output "share removal completed" 13 | exit 0 14 | -------------------------------------------------------------------------------- /plugins/kernel_v1/config/package.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module Kernel_V1 8 | class PackageConfig < Vagrant.plugin("1", :config) 9 | attr_accessor :name 10 | 11 | def initialize 12 | @name = UNSET_VALUE 13 | end 14 | 15 | def upgrade(new) 16 | new.package.name = @name if @name != UNSET_VALUE 17 | end 18 | end 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /plugins/kernel_v2/config/package.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module Kernel_V2 8 | class PackageConfig < Vagrant.plugin("2", :config) 9 | attr_accessor :name 10 | 11 | def initialize 12 | @name = UNSET_VALUE 13 | end 14 | 15 | def finalize! 16 | @name = nil if @name == UNSET_VALUE 17 | end 18 | 19 | def to_s 20 | "Package" 21 | end 22 | end 23 | end 24 | end 25 | -------------------------------------------------------------------------------- /plugins/providers/docker/action/is_build.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module DockerProvider 6 | module Action 7 | class IsBuild 8 | def initialize(app, env) 9 | @app = app 10 | end 11 | 12 | def call(env) 13 | env[:result] = (!!env[:machine].provider_config.build_dir || !!env[:machine].provider_config.git_repo) 14 | @app.call(env) 15 | end 16 | end 17 | end 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /plugins/providers/docker/cap/has_communicator.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module DockerProvider 6 | module Cap 7 | module HasCommunicator 8 | def self.has_communicator(machine) 9 | return machine.provider_config.has_ssh 10 | end 11 | end 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /plugins/providers/docker/cap/proxy_machine.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module DockerProvider 6 | module Cap 7 | module ProxyMachine 8 | def self.proxy_machine(machine) 9 | return nil if !machine.provider.host_vm? 10 | machine.provider.host_vm 11 | end 12 | end 13 | end 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /plugins/providers/docker/hostmachine/Vagrantfile: -------------------------------------------------------------------------------- 1 | Vagrant.configure("2") do |config| 2 | config.vm.box = "hashicorp/boot2docker" 3 | end 4 | -------------------------------------------------------------------------------- /plugins/providers/hyperv/action/is_windows.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module HyperV 6 | module Action 7 | class IsWindows 8 | def initialize(app, env) 9 | @app = app 10 | end 11 | 12 | def call(env) 13 | env[:result] = env[:machine].config.vm.guest == :windows 14 | @app.call(env) 15 | end 16 | end 17 | end 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /plugins/providers/hyperv/action/resume_vm.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module HyperV 6 | module Action 7 | class ResumeVM 8 | def initialize(app, env) 9 | @app = app 10 | end 11 | 12 | def call(env) 13 | env[:ui].info("Resuming the machine...") 14 | env[:machine].provider.driver.resume 15 | @app.call(env) 16 | end 17 | end 18 | end 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /plugins/providers/hyperv/action/start_instance.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module HyperV 6 | module Action 7 | class StartInstance 8 | def initialize(app, env) 9 | @app = app 10 | end 11 | 12 | def call(env) 13 | env[:ui].output('Starting the machine...') 14 | env[:machine].provider.driver.start 15 | @app.call(env) 16 | end 17 | end 18 | end 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /plugins/providers/hyperv/action/stop_instance.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module HyperV 6 | module Action 7 | class StopInstance 8 | def initialize(app, env) 9 | @app = app 10 | end 11 | 12 | def call(env) 13 | env[:ui].info("Stopping the machine...") 14 | env[:machine].provider.driver.stop 15 | @app.call(env) 16 | end 17 | end 18 | end 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /plugins/providers/hyperv/action/suspend_vm.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module HyperV 6 | module Action 7 | class SuspendVM 8 | def initialize(app, env) 9 | @app = app 10 | end 11 | 12 | def call(env) 13 | env[:ui].info("Suspending the machine...") 14 | env[:machine].provider.driver.suspend 15 | @app.call(env) 16 | end 17 | end 18 | end 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /plugins/providers/hyperv/cap/public_address.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module HyperV 6 | module Cap 7 | module PublicAddress 8 | def self.public_address(machine) 9 | return nil if machine.state.id != :running 10 | 11 | ssh_info = machine.ssh_info 12 | return nil if !ssh_info 13 | ssh_info[:host] 14 | end 15 | end 16 | end 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /plugins/providers/hyperv/cap/snapshot_list.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module HyperV 6 | module Cap 7 | module SnapshotList 8 | def self.snapshot_list(machine) 9 | machine.provider.driver.list_snapshots 10 | end 11 | end 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /plugins/providers/hyperv/scripts/check_hyperv.ps1: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | #Requires -Modules VagrantMessages 5 | 6 | $check = $(-Not (-Not (Get-Command "Hyper-V\Get-VMSwitch" -ErrorAction SilentlyContinue))) 7 | $result = @{ 8 | result = $check 9 | } 10 | 11 | Write-OutputMessage $(ConvertTo-Json $result) 12 | -------------------------------------------------------------------------------- /plugins/providers/hyperv/scripts/check_hyperv_access.ps1: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | #Requires -Modules VagrantMessages, VagrantVM 5 | 6 | param( 7 | [parameter (Mandatory=$true)] 8 | [string] $Path 9 | ) 10 | 11 | $check = Check-VagrantHyperVAccess -Path $Path 12 | $result = @{ 13 | root_dir = ($Path -split '\\')[0,1] -join '\'; 14 | result = $check 15 | } 16 | 17 | Write-OutputMessage $(ConvertTo-Json $result) 18 | -------------------------------------------------------------------------------- /plugins/providers/hyperv/scripts/clone_vhd.ps1: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | #Requires -Modules VagrantMessages 5 | 6 | param( 7 | [Parameter(Mandatory=$true)] 8 | [string]$Source, 9 | 10 | [Parameter(Mandatory=$true)] 11 | [string]$Destination 12 | ) 13 | 14 | $ErrorActionPreference = "Stop" 15 | 16 | try { 17 | Hyper-V\New-VHD -Path $Destination -ParentPath $Source 18 | } catch { 19 | Write-ErrorMessage "Failed to clone drive: ${PSItem}" 20 | exit 1 21 | } 22 | -------------------------------------------------------------------------------- /plugins/providers/hyperv/scripts/delete_snapshot.ps1: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | #Requires -Modules VagrantMessages 5 | 6 | param( 7 | [Parameter(Mandatory=$true)] 8 | [string]$VmId, 9 | [string]$SnapName 10 | ) 11 | 12 | $ErrorActionPreference = "Stop" 13 | 14 | try { 15 | $VM = Hyper-V\Get-VM -Id $VmId 16 | Hyper-V\Remove-VMSnapshot $VM -Name $SnapName 17 | } catch { 18 | Write-ErrorMessage "Failed to delete snapshot: ${PSItem}" 19 | } 20 | -------------------------------------------------------------------------------- /plugins/providers/hyperv/scripts/dismount_vhd.ps1: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | #Requires -Modules VagrantMessages 5 | 6 | param( 7 | [Parameter(Mandatory=$true)] 8 | [string]$DiskFilePath 9 | ) 10 | 11 | try { 12 | Hyper-V\Dismount-VHD -path $DiskFilePath 13 | } catch { 14 | Write-ErrorMessage "Failed to dismount disk info from disk file path ${DiskFilePath}: ${PSItem}" 15 | exit 1 16 | } 17 | -------------------------------------------------------------------------------- /plugins/providers/hyperv/scripts/get_switches.ps1: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | #Requires -Modules VagrantMessages 5 | # This will have a SwitchType property. As far as I know the values are: 6 | # 7 | # 0 - Private 8 | # 1 - Internal 9 | # 10 | 11 | $Switches = @(Hyper-V\Get-VMSwitch ` 12 | | Select-Object Name,SwitchType,NetAdapterInterfaceDescription,Id) 13 | Write-OutputMessage $(ConvertTo-JSON $Switches) 14 | -------------------------------------------------------------------------------- /plugins/providers/hyperv/scripts/get_vhd.ps1: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | #Requires -Modules VagrantMessages 5 | 6 | param( 7 | [Parameter(Mandatory=$true)] 8 | [string]$DiskFilePath 9 | ) 10 | 11 | try { 12 | $Disk = Hyper-V\Get-VHD -path $DiskFilePath 13 | } catch { 14 | Write-ErrorMessage "Failed to retrieve disk info from disk file path ${DiskFilePath}: ${PSItem}" 15 | exit 1 16 | } 17 | 18 | $result = ConvertTo-json $Disk 19 | Write-OutputMessage $result 20 | -------------------------------------------------------------------------------- /plugins/providers/hyperv/scripts/has_vmcx_support.ps1: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | #Requires -Modules VagrantMessages 5 | 6 | # Windows version 10 and up have support for binary format 7 | $check = [System.Environment]::OSVersion.Version.Major -ge 10 8 | $result = @{ 9 | result = $check 10 | } 11 | 12 | Write-OutputMessage $(ConvertTo-Json $result) 13 | -------------------------------------------------------------------------------- /plugins/providers/hyperv/scripts/list_hdds.ps1: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | #Requires -Modules VagrantMessages 5 | 6 | param( 7 | [Parameter(Mandatory=$true)] 8 | [string]$VmId 9 | ) 10 | 11 | try { 12 | $VM = Hyper-V\Get-VM -Id $VmId 13 | $Disks = @(Hyper-V\Get-VMHardDiskDrive -VMName $VM.Name) 14 | } catch { 15 | Write-ErrorMessage "Failed to retrieve all disk info from ${VM}: ${PSItem}" 16 | exit 1 17 | } 18 | 19 | $result = ConvertTo-json $Disks 20 | Write-OutputMessage $result 21 | -------------------------------------------------------------------------------- /plugins/providers/hyperv/scripts/restore_snapshot.ps1: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | #Requires -Modules VagrantMessages 5 | 6 | param( 7 | [Parameter(Mandatory=$true)] 8 | [string]$VmId, 9 | [string]$SnapName 10 | ) 11 | 12 | $ErrorActionPreference = "Stop" 13 | 14 | try { 15 | $VM = Hyper-V\Get-VM -Id $VmId 16 | Hyper-V\Restore-VMSnapshot $VM -Name $SnapName -Confirm:$false 17 | } catch { 18 | Write-ErrorMessage "Failed to restore snapshot: ${PSItem}" 19 | exit 1 20 | } 21 | -------------------------------------------------------------------------------- /plugins/providers/hyperv/scripts/resume_vm.ps1: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | #Requires -Modules VagrantMessages 5 | 6 | param( 7 | [Parameter(Mandatory=$true)] 8 | [string]$VmId 9 | ) 10 | 11 | $ErrorActionPreference = "Stop" 12 | 13 | try { 14 | $VM = Hyper-V\Get-VM -Id $VmId 15 | Hyper-V\Resume-VM $VM 16 | } catch { 17 | Write-ErrorMessage "Failed to resume VM: ${PSItem}" 18 | exit 1 19 | } 20 | -------------------------------------------------------------------------------- /plugins/providers/hyperv/scripts/set_network_vlan.ps1: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | #Requires -Modules VagrantMessages 5 | 6 | param ( 7 | [parameter (Mandatory=$true)] 8 | [string]$VmId, 9 | [parameter (Mandatory=$true)] 10 | [int]$VlanId 11 | ) 12 | 13 | try { 14 | $vm = Hyper-V\Get-VM -Id $VmId -ErrorAction "stop" 15 | Hyper-V\Set-VMNetworkAdapterVlan $vm -Access -Vlanid $VlanId 16 | } 17 | catch { 18 | Write-ErrorMessage "Failed to set VM's Vlan ID $_" 19 | } 20 | -------------------------------------------------------------------------------- /plugins/providers/hyperv/scripts/stop_vm.ps1: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | #Requires -Modules VagrantMessages 5 | 6 | Param( 7 | [Parameter(Mandatory=$true)] 8 | [string]$VmId 9 | ) 10 | 11 | $ErrorActionPreference = "Stop" 12 | 13 | try{ 14 | # Shuts down virtual machine regardless of any unsaved application data 15 | $VM = Hyper-V\Get-VM -Id $VmId 16 | Hyper-V\Stop-VM $VM -Force 17 | } catch { 18 | Write-ErrorMessage "Failed to stop VM: ${PSItem}" 19 | exit 1 20 | } 21 | -------------------------------------------------------------------------------- /plugins/providers/hyperv/scripts/suspend_vm.ps1: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | #Requires -Modules VagrantMessages 5 | 6 | param( 7 | [Parameter(Mandatory=$true)] 8 | [string]$VmId 9 | ) 10 | 11 | $ErrorActionPreference = "Stop" 12 | 13 | try{ 14 | $VM = Hyper-V\Get-VM -Id $VmId 15 | Hyper-V\Suspend-VM $VM 16 | } catch { 17 | Write-ErrorMessage "Failed to suspend VM: ${PSItem}" 18 | exit 1 19 | } 20 | -------------------------------------------------------------------------------- /plugins/providers/virtualbox/action/message_already_running.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module ProviderVirtualBox 6 | module Action 7 | class MessageAlreadyRunning 8 | def initialize(app, env) 9 | @app = app 10 | end 11 | 12 | def call(env) 13 | env[:ui].info I18n.t("vagrant.commands.common.vm_already_running") 14 | @app.call(env) 15 | end 16 | end 17 | end 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /plugins/providers/virtualbox/action/message_not_created.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module ProviderVirtualBox 6 | module Action 7 | class MessageNotCreated 8 | def initialize(app, env) 9 | @app = app 10 | end 11 | 12 | def call(env) 13 | env[:ui].info I18n.t("vagrant.commands.common.vm_not_created") 14 | @app.call(env) 15 | end 16 | end 17 | end 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /plugins/providers/virtualbox/action/message_not_running.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module ProviderVirtualBox 6 | module Action 7 | class MessageNotRunning 8 | def initialize(app, env) 9 | @app = app 10 | end 11 | 12 | def call(env) 13 | env[:ui].info I18n.t("vagrant.commands.common.vm_not_running") 14 | @app.call(env) 15 | end 16 | end 17 | end 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /plugins/providers/virtualbox/cap/public_address.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module ProviderVirtualBox 6 | module Cap 7 | module PublicAddress 8 | def self.public_address(machine) 9 | return nil if machine.state.id != :running 10 | 11 | ssh_info = machine.ssh_info 12 | return nil if !ssh_info 13 | ssh_info[:host] 14 | end 15 | end 16 | end 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /plugins/providers/virtualbox/driver/version_5_1.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require File.expand_path("../version_5_0", __FILE__) 5 | 6 | module VagrantPlugins 7 | module ProviderVirtualBox 8 | module Driver 9 | # Driver for VirtualBox 5.1.x 10 | class Version_5_1 < Version_5_0 11 | def initialize(uuid) 12 | super 13 | 14 | @logger = Log4r::Logger.new("vagrant::provider::virtualbox_5_1") 15 | end 16 | end 17 | end 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /plugins/providers/virtualbox/driver/version_5_2.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require File.expand_path("../version_5_0", __FILE__) 5 | 6 | module VagrantPlugins 7 | module ProviderVirtualBox 8 | module Driver 9 | # Driver for VirtualBox 5.2.x 10 | class Version_5_2 < Version_5_0 11 | def initialize(uuid) 12 | super 13 | 14 | @logger = Log4r::Logger.new("vagrant::provider::virtualbox_5_2") 15 | end 16 | end 17 | end 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /plugins/provisioners/ansible/constants.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | 5 | module VagrantPlugins 6 | module Ansible 7 | COMPATIBILITY_MODE_AUTO = "auto".freeze 8 | COMPATIBILITY_MODE_V1_8 = "1.8".freeze 9 | COMPATIBILITY_MODE_V2_0 = "2.0".freeze 10 | SAFE_COMPATIBILITY_MODE = COMPATIBILITY_MODE_V1_8 11 | COMPATIBILITY_MODES = [ 12 | COMPATIBILITY_MODE_AUTO, 13 | COMPATIBILITY_MODE_V1_8, 14 | COMPATIBILITY_MODE_V2_0, 15 | ].freeze 16 | end 17 | end -------------------------------------------------------------------------------- /plugins/provisioners/cfengine/cap/linux/cfengine_installed.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module CFEngine 6 | module Cap 7 | module Linux 8 | module CFEngineInstalled 9 | def self.cfengine_installed(machine) 10 | machine.communicate.test( 11 | "test -d /var/cfengine && test -x /var/cfengine/bin/cf-agent", sudo: true) 12 | end 13 | end 14 | end 15 | end 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /plugins/provisioners/container/installer.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module ContainerProvisioner 6 | class Installer 7 | def initialize(machine) 8 | @machine = machine 9 | end 10 | 11 | def ensure_installed 12 | # nothing to do 13 | end 14 | end 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /plugins/provisioners/docker/cap/debian/docker_start_service.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module DockerProvisioner 6 | module Cap 7 | module Debian 8 | module DockerStartService 9 | def self.docker_start_service(machine) 10 | machine.communicate.sudo("service docker start") 11 | end 12 | end 13 | end 14 | end 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /plugins/provisioners/docker/cap/linux/docker_daemon_running.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module DockerProvisioner 6 | module Cap 7 | module Linux 8 | module DockerDaemonRunning 9 | def self.docker_daemon_running(machine) 10 | machine.communicate.test("test -f /var/run/docker.pid") 11 | end 12 | end 13 | end 14 | end 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /plugins/provisioners/docker/cap/windows/docker_daemon_running.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module DockerProvisioner 6 | module Cap 7 | module Windows 8 | module DockerDaemonRunning 9 | def self.docker_daemon_running(machine) 10 | machine.communicate.test("tasklist | find \"`\"dockerd`\"\"") 11 | end 12 | end 13 | end 14 | end 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /plugins/provisioners/podman/cap/linux/podman_installed.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module PodmanProvisioner 6 | module Cap 7 | module Linux 8 | module PodmanInstalled 9 | def self.podman_installed(machine) 10 | machine.communicate.test("command -v podman") 11 | end 12 | end 13 | end 14 | end 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /plugins/provisioners/podman/client.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require_relative "../container/client" 5 | 6 | module VagrantPlugins 7 | module PodmanProvisioner 8 | class Client < VagrantPlugins::ContainerProvisioner::Client 9 | def initialize(machine) 10 | super(machine, "podman") 11 | @container_command = "podman" 12 | end 13 | end 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /plugins/provisioners/salt/errors.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant" 5 | 6 | module VagrantPlugins 7 | module Salt 8 | module Errors 9 | class SaltError < Vagrant::Errors::VagrantError 10 | error_namespace("vagrant.provisioners.salt") 11 | end 12 | 13 | class InvalidShasumError < SaltError 14 | error_key(:salt_invalid_shasum_error) 15 | end 16 | end 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /plugins/pushes/atlas/errors.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module AtlasPush 6 | module Errors 7 | class Error < Vagrant::Errors::VagrantError 8 | error_namespace("atlas_push.errors") 9 | end 10 | 11 | class UploaderNotFound < Error 12 | error_key(:uploader_not_found) 13 | end 14 | end 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /plugins/pushes/ftp/errors.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module FTPPush 6 | module Errors 7 | class Error < Vagrant::Errors::VagrantError 8 | error_namespace("ftp_push.errors") 9 | end 10 | 11 | class TooManyFiles < Error 12 | error_key(:too_many_files) 13 | end 14 | end 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /plugins/pushes/local-exec/errors.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module LocalExecPush 6 | module Errors 7 | class Error < Vagrant::Errors::VagrantError 8 | error_namespace("local_exec_push.errors") 9 | end 10 | 11 | class CommandFailed < Error 12 | error_key(:command_failed) 13 | end 14 | end 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /plugins/pushes/noop/config.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module NoopDeploy 6 | class Config < Vagrant.plugin("2", :config) 7 | def initialize 8 | end 9 | 10 | def finalize! 11 | end 12 | 13 | def validate(machine) 14 | errors = _detected_errors 15 | { "Noop push" => errors } 16 | end 17 | end 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /plugins/pushes/noop/push.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module NoopDeploy 6 | class Push < Vagrant.plugin("2", :push) 7 | def push 8 | puts "pushed" 9 | end 10 | end 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /plugins/synced_folders/smb/cap/default_fstab_modification.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | module VagrantPlugins 5 | module SyncedFolderSMB 6 | module Cap 7 | module DefaultFstabModification 8 | def self.default_fstab_modification(machine) 9 | return false 10 | end 11 | end 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /scripts/install_rvm: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | export DEBIAN_FRONTEND=noninteractive 4 | 5 | if ! rvm --version 6 | then 7 | # https://github.com/rvm/ubuntu_rvm#install 8 | apt-add-repository -y ppa:rael-gc/rvm && 9 | apt-get update -y && 10 | apt-get install -y rvm || { 11 | echo 'Failed to install rvm' >&2 12 | exit 1 13 | } 14 | fi 15 | 16 | usermod -a -G rvm vagrant || { 17 | echo 'Failed to add vagrant to the rvm group' >&2 18 | exit 1 19 | } 20 | -------------------------------------------------------------------------------- /shell.nix: -------------------------------------------------------------------------------- 1 | ( 2 | import (fetchTarball https://github.com/edolstra/flake-compat/archive/master.tar.gz) { 3 | src = builtins.fetchGit ./.; 4 | } 5 | ).shellNix 6 | -------------------------------------------------------------------------------- /tasks/bundler.rake: -------------------------------------------------------------------------------- 1 | # This installs the tasks that help with gem creation and 2 | # publishing. 3 | Bundler::GemHelper.install_tasks 4 | -------------------------------------------------------------------------------- /tasks/test.rake: -------------------------------------------------------------------------------- 1 | require 'rake/testtask' 2 | require 'rspec/core/rake_task' 3 | 4 | namespace :test do 5 | RSpec::Core::RakeTask.new(:unit) do |t| 6 | t.pattern = "test/unit/**/*_test.rb" 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /templates/commands/init/Vagrantfile.min.erb: -------------------------------------------------------------------------------- 1 | # -*- mode: ruby -*- 2 | # vi: set ft=ruby : 3 | 4 | Vagrant.configure("2") do |config| 5 | config.vm.box = "<%= box_name %>" 6 | <% if box_version -%> 7 | config.vm.box_version = "<%= box_version %>" 8 | <% end -%> 9 | <% if box_url -%> 10 | config.vm.box_url = "<%= box_url %>" 11 | <% end -%> 12 | end 13 | -------------------------------------------------------------------------------- /templates/commands/winrm_config/config.erb: -------------------------------------------------------------------------------- 1 | Host <%= host_key %> 2 | HostName <%= winrm_host %> 3 | User <%= winrm_user %> 4 | Password <%= winrm_password %> 5 | Port <%= winrm_port %> 6 | <% if rdp_port -%> 7 | RDPHostName <%= rdp_host %> 8 | RDPPort <%= rdp_port %> 9 | RDPUser <%= rdp_user %> 10 | RDPPassword <%= rdp_pass %> 11 | <% end -%> 12 | -------------------------------------------------------------------------------- /templates/config/messages.erb: -------------------------------------------------------------------------------- 1 | <% if !warnings.empty? -%> 2 | Warnings: 3 | <% warnings.each do |warning| -%> 4 | * <%= warning %> 5 | <% end -%> 6 | 7 | <% end -%> 8 | <% if !errors.empty? -%> 9 | Errors: 10 | <% errors.each do |error| -%> 11 | * <%= error %> 12 | <% end -%> 13 | 14 | <% end -%> 15 | -------------------------------------------------------------------------------- /templates/config/validation_failed.erb: -------------------------------------------------------------------------------- 1 | <% errors.each do |section, list| -%> 2 | <%= section %>: 3 | <% list.each do |error| -%> 4 | * <%= error %> 5 | <% end -%> 6 | 7 | <% end -%> 8 | -------------------------------------------------------------------------------- /templates/guests/alpine/network_dhcp.erb: -------------------------------------------------------------------------------- 1 | #VAGRANT-BEGIN 2 | # The contents below are automatically generated by Vagrant. Do not modify. 3 | auto eth<%= options[:interface] %> 4 | iface eth<%= options[:interface] %> inet dhcp 5 | <% if !options[:use_dhcp_assigned_default_route] %> 6 | post-up route del default dev $IFACE || true 7 | <% else %> 8 | # We need to disable eth0, see GH-2648 9 | post-up route del default dev eth0 10 | post-up dhclient $IFACE 11 | pre-down route add default dev eth0 12 | <% end %> 13 | #VAGRANT-END 14 | -------------------------------------------------------------------------------- /templates/guests/alpine/network_static.erb: -------------------------------------------------------------------------------- 1 | #VAGRANT-BEGIN 2 | # The contents below are automatically generated by Vagrant. Do not modify. 3 | auto eth<%= options[:interface] %> 4 | iface eth<%= options[:interface] %> inet static 5 | address <%= options[:ip] %> 6 | netmask <%= options[:netmask] %> 7 | #VAGRANT-END 8 | -------------------------------------------------------------------------------- /templates/guests/alt/network_dhcp.erb: -------------------------------------------------------------------------------- 1 | #VAGRANT-BEGIN 2 | # The contents below are automatically generated by Vagrant. Do not modify. 3 | TYPE=eth 4 | NM_CONTROLLED=<%= options.fetch(:nm_controlled, "no") %> 5 | BOOTPROTO=dhcp 6 | ONBOOT=yes 7 | #VAGRANT-END 8 | -------------------------------------------------------------------------------- /templates/guests/alt/network_ipv4address.erb: -------------------------------------------------------------------------------- 1 | #VAGRANT-BEGIN 2 | <%= options[:ip] %>/<%= options[:netmask] %> 3 | #VAGRANT-END 4 | -------------------------------------------------------------------------------- /templates/guests/alt/network_ipv4route.erb: -------------------------------------------------------------------------------- 1 | #VAGRANT-BEGIN 2 | <% if options[:gateway] %> 3 | default via <%= options[:gateway] %> 4 | <% end %> 5 | #VAGRANT-END 6 | -------------------------------------------------------------------------------- /templates/guests/alt/network_static.erb: -------------------------------------------------------------------------------- 1 | #VAGRANT-BEGIN 2 | # The contents below are automatically generated by Vagrant. Do not modify. 3 | TYPE=eth 4 | NM_CONTROLLED=<%= options.fetch(:nm_controlled, "no") %> 5 | BOOTPROTO=static 6 | ONBOOT=yes 7 | #VAGRANT-END 8 | -------------------------------------------------------------------------------- /templates/guests/arch/default_network/network_dhcp.erb: -------------------------------------------------------------------------------- 1 | Description='A basic dhcp ethernet connection' 2 | Interface=<%= options[:device] %> 3 | Connection=ethernet 4 | IP=dhcp 5 | -------------------------------------------------------------------------------- /templates/guests/arch/default_network/network_static.erb: -------------------------------------------------------------------------------- 1 | Connection=ethernet 2 | Description='A basic static ethernet connection' 3 | Interface=<%= options[:device] %> 4 | IP=static 5 | Address=('<%= options[:ip]%>/<%= options[:netmask] %>') 6 | <% if options[:gateway] -%> 7 | Gateway='<%= options[:gateway] %>' 8 | <% end -%> 9 | -------------------------------------------------------------------------------- /templates/guests/arch/default_network/network_static6.erb: -------------------------------------------------------------------------------- 1 | Connection=ethernet 2 | Description='A basic IPv6 ethernet connection' 3 | Interface=<%= options[:device] %> 4 | IP6=static 5 | Address6=('<%= options[:ip]%>/<%= options[:netmask] %>') 6 | <% if options[:gateway] -%> 7 | Gateway6='<%= options[:gateway] %>' 8 | <% end -%> 9 | -------------------------------------------------------------------------------- /templates/guests/arch/systemd_networkd/network_dhcp.erb: -------------------------------------------------------------------------------- 1 | [Match] 2 | Name=<%= options[:device] %> 3 | 4 | [Network] 5 | Description=A basic DHCP ethernet connection 6 | DHCP=ipv4 7 | -------------------------------------------------------------------------------- /templates/guests/arch/systemd_networkd/network_static.erb: -------------------------------------------------------------------------------- 1 | [Match] 2 | Name=<%= options[:device] %> 3 | 4 | [Network] 5 | Description=A basic static ethernet connection 6 | Address=<%= options[:ip]%>/<%= options[:netmask] %> 7 | <% if options[:gateway] -%> 8 | Gateway=<%= options[:gateway] %> 9 | <% end -%> 10 | -------------------------------------------------------------------------------- /templates/guests/arch/systemd_networkd/network_static6.erb: -------------------------------------------------------------------------------- 1 | [Match] 2 | Name=<%= options[:device] %> 3 | 4 | [Network] 5 | Description=A basic static ethernet connection 6 | Address=<%= options[:ip]%>/<%= options[:netmask] %> 7 | <% if options[:gateway] -%> 8 | Gateway=<%= options[:gateway] %> 9 | <% end -%> 10 | -------------------------------------------------------------------------------- /templates/guests/coreos/etcd.service.erb: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Clustered etcd 3 | #After=docker.service 4 | 5 | [Service] 6 | Restart=always 7 | ExecStart=/usr/bin/etcd -c 4001 -s 7001 -h <%= options[:my_ip] %> <% if options[:connection_string] %>-C <%= options[:connection_string] %><% end %> -d /home/core/etcd 8 | 9 | [Install] 10 | WantedBy=local.target 11 | -------------------------------------------------------------------------------- /templates/guests/debian/network_static.erb: -------------------------------------------------------------------------------- 1 | #VAGRANT-BEGIN 2 | # The contents below are automatically generated by Vagrant. Do not modify. 3 | auto <%= options[:device] %> 4 | iface <%= options[:device] %> inet static 5 | address <%= options[:ip] %> 6 | netmask <%= options[:netmask] %> 7 | <% if options[:gateway] %> 8 | gateway <%= options[:gateway] %> 9 | <% end %> 10 | #VAGRANT-END 11 | -------------------------------------------------------------------------------- /templates/guests/debian/network_static6.erb: -------------------------------------------------------------------------------- 1 | #VAGRANT-BEGIN 2 | # The contents below are automatically generated by Vagrant. Do not modify. 3 | auto <%= options[:device] %> 4 | iface <%= options[:device] %> inet6 static 5 | address <%= options[:ip] %> 6 | netmask <%= options[:netmask] %> 7 | <% if options[:gateway] %> 8 | gateway <%= options[:gateway] %> 9 | <% end %> 10 | #VAGRANT-END 11 | -------------------------------------------------------------------------------- /templates/guests/freebsd/network_dhcp.erb: -------------------------------------------------------------------------------- 1 | #VAGRANT-BEGIN 2 | ifconfig_<%= options[:device] %>="DHCP" 3 | synchronous_dhclient="YES" 4 | #VAGRANT-END 5 | -------------------------------------------------------------------------------- /templates/guests/freebsd/network_static.erb: -------------------------------------------------------------------------------- 1 | #VAGRANT-BEGIN 2 | ifconfig_<%= options[:device] %>="inet <%= options[:ip] %> netmask <%= options[:netmask] %>" 3 | <% if options[:gateway] %> 4 | defaultrouter="<%= options[:gateway] %>" 5 | <% end %> 6 | #VAGRANT-END 7 | -------------------------------------------------------------------------------- /templates/guests/freebsd/network_static6.erb: -------------------------------------------------------------------------------- 1 | #VAGRANT-BEGIN 2 | ifconfig_<%= options[:device] %>_ipv6="inet6 <%= options[:ip] %> prefixlen <%= options[:netmask] %>" 3 | <% if options[:gateway] %> 4 | ipv6_defaultrouter="<%= options[:gateway] %>" 5 | <% end %> 6 | #VAGRANT-END 7 | -------------------------------------------------------------------------------- /templates/guests/funtoo/network_dhcp.erb: -------------------------------------------------------------------------------- 1 | #VAGRANT-BEGIN 2 | # The contents below are automatically generated by Vagrant. Do not modify. 3 | template='dhcp' 4 | #VAGRANT-END 5 | -------------------------------------------------------------------------------- /templates/guests/funtoo/network_static.erb: -------------------------------------------------------------------------------- 1 | #VAGRANT-BEGIN 2 | # The contents below are automatically generated by Vagrant. Do not modify. 3 | template='interface' 4 | ipaddr='<%= options[:ip] %>/<%= options[:netmask] %>' 5 | <% [:gateway, :nameservers, :domain, :route, :gateway6, :route6, :mtu].each do |key| %> 6 | <% if options[key] %> 7 | <%= key %>='<%= options[key] %>' 8 | <% end %> 9 | <% end %> 10 | #VAGRANT-END 11 | -------------------------------------------------------------------------------- /templates/guests/funtoo/network_static6.erb: -------------------------------------------------------------------------------- 1 | #VAGRANT-BEGIN 2 | template='interface' 3 | ipaddr='<%= options[:ip] %>/<%= options[:netmask] %>' 4 | <% [:gateway, :nameservers, :domain, :route, :gateway6, :route6, :mtu].each do |key| %> 5 | <% if options[key] %> 6 | <%= key %>='<%= options[key] %>' 7 | <% end %> 8 | <% end %> 9 | #VAGRANT-END 10 | -------------------------------------------------------------------------------- /templates/guests/gentoo/network_dhcp.erb: -------------------------------------------------------------------------------- 1 | #VAGRANT-BEGIN 2 | # The contents below are automatically generated by Vagrant. Do not modify. 3 | config_<%= options[:device] %>="dhcp" 4 | #VAGRANT-END 5 | -------------------------------------------------------------------------------- /templates/guests/gentoo/network_static.erb: -------------------------------------------------------------------------------- 1 | #VAGRANT-BEGIN 2 | # The contents below are automatically generated by Vagrant. Do not modify. 3 | config_<%= options[:device] %>=("<%= options[:ip] %> netmask <%= options[:netmask] %>") 4 | modules_<%= options[:device] %>=("!plug") 5 | <% if options[:gateway] -%> 6 | gateways_<%= options[:device] %>="<%= options[:gateway] %>" 7 | <% end -%> 8 | #VAGRANT-END 9 | -------------------------------------------------------------------------------- /templates/guests/gentoo/network_static6.erb: -------------------------------------------------------------------------------- 1 | #VAGRANT-BEGIN 2 | # The contents below are automatically generated by Vagrant. Do not modify. 3 | config_<%= options[:device] %>="<%= options[:ip] %>/<%= options[:netmask] %>" 4 | modules_<%= options[:device] %>="!plug" 5 | <% if options[:gateway] -%> 6 | gateways_<%= options[:device] %>="<%= options[:gateway] %>" 7 | <% end -%> 8 | #VAGRANT-END 9 | -------------------------------------------------------------------------------- /templates/guests/gentoo/network_systemd.erb: -------------------------------------------------------------------------------- 1 | [Match] 2 | Name=<%= networks[0][:device] %> 3 | 4 | [Network] 5 | <%- gateway = nil %> 6 | <%- networks.each do |net| %> 7 | <%- if net[:type] == 'dhcp' %> 8 | DHCP=yes 9 | <%- elsif net[:ip] %> 10 | Address=<%= net[:ip] %>/<%= net[:netmask] %> 11 | <%- end %> 12 | <%- gateway ||= net[:gateway] %> 13 | <%- end %> 14 | <%- if gateway %> 15 | Gateway=<%= gateway %> 16 | <%- end %> 17 | -------------------------------------------------------------------------------- /templates/guests/linux/etc_fstab.erb: -------------------------------------------------------------------------------- 1 | #VAGRANT-BEGIN 2 | # The contents below are automatically generated by Vagrant. Do not modify. 3 | <% folders.each do |opts| %> 4 | <%= opts[:name] %> <%= opts[:mount_point] %> <%= opts[:mount_type] %> <%= opts[:mount_options] || 'default' %> <%= opts[:dump] || 0 %> <%= opts[:fsck] || 0 %> 5 | <%end%> 6 | #VAGRANT-END -------------------------------------------------------------------------------- /templates/guests/netbsd/network_dhcp.erb: -------------------------------------------------------------------------------- 1 | #VAGRANT-BEGIN 2 | ifconfig_wm<%= options[:interface] %>=dhcp 3 | #VAGRANT-END 4 | -------------------------------------------------------------------------------- /templates/guests/netbsd/network_static.erb: -------------------------------------------------------------------------------- 1 | #VAGRANT-BEGIN 2 | ifconfig_wm<%= options[:interface] %>="media autoselect up;inet <%= options[:ip] %> netmask <%= options[:netmask] %>" 3 | #VAGRANT-END 4 | -------------------------------------------------------------------------------- /templates/guests/nixos/hostname.erb: -------------------------------------------------------------------------------- 1 | { config, pkgs, ... }: 2 | { 3 | <% if name %> 4 | networking.hostName = "<%= name %>"; 5 | <% end %> 6 | } 7 | -------------------------------------------------------------------------------- /templates/guests/nixos/network.erb: -------------------------------------------------------------------------------- 1 | { config, pkgs, ... }: 2 | { 3 | networking.interfaces = { 4 | <% networks.select {|n| n[:device]}.each do |network| %> 5 | <%= network[:device] %>.ipv4.addresses = [{ 6 | <% if network[:type] == :static %> 7 | address = "<%= network[:ip] %>"; 8 | <% end %> 9 | <% if network[:prefix_length] %> 10 | prefixLength = <%= network[:prefix_length] %>; 11 | <% end %> 12 | }]; 13 | <% end %> 14 | }; 15 | } 16 | -------------------------------------------------------------------------------- /templates/guests/openbsd/network_dhcp.erb: -------------------------------------------------------------------------------- 1 | dhcp 2 | -------------------------------------------------------------------------------- /templates/guests/openbsd/network_static.erb: -------------------------------------------------------------------------------- 1 | inet <%= options[:ip] %> <%= options[:netmask] %> NONE 2 | -------------------------------------------------------------------------------- /templates/guests/openbsd/network_static6.erb: -------------------------------------------------------------------------------- 1 | inet6 <%= options[:ip] %> <%= options[:netmask] %> NONE 2 | -------------------------------------------------------------------------------- /templates/guests/redhat/network_dhcp.erb: -------------------------------------------------------------------------------- 1 | #VAGRANT-BEGIN 2 | # The contents below are automatically generated by Vagrant. Do not modify. 3 | BOOTPROTO=dhcp 4 | ONBOOT=yes 5 | DEVICE=<%= options[:device] %> 6 | NM_CONTROLLED=<%= options.fetch(:nm_controlled, "no") %> 7 | #VAGRANT-END 8 | -------------------------------------------------------------------------------- /templates/guests/redhat/network_static.erb: -------------------------------------------------------------------------------- 1 | #VAGRANT-BEGIN 2 | # The contents below are automatically generated by Vagrant. Do not modify. 3 | NM_CONTROLLED=<%= options.fetch(:nm_controlled, "no") %> 4 | BOOTPROTO=none 5 | ONBOOT=yes 6 | IPADDR=<%= options[:ip] %> 7 | NETMASK=<%= options[:netmask] %> 8 | DEVICE=<%= options[:device] %> 9 | <% if options[:gateway] %> 10 | GATEWAY=<%= options[:gateway] %> 11 | <% end %> 12 | <% if options[:mac_address] %> 13 | HWADDR=<%= options[:mac_address] %> 14 | <% end %> 15 | PEERDNS=no 16 | #VAGRANT-END 17 | -------------------------------------------------------------------------------- /templates/guests/redhat/network_static6.erb: -------------------------------------------------------------------------------- 1 | #VAGRANT-BEGIN 2 | # The contents below are automatically generated by Vagrant. Do not modify. 3 | NM_CONTROLLED=<%= options.fetch(:nm_controlled, "no") %> 4 | BOOTPROTO=static 5 | ONBOOT=yes 6 | DEVICE=<%= options[:device] %> 7 | IPV6INIT=yes 8 | IPV6ADDR=<%= options[:ip] %>/<%= options[:netmask] %> 9 | <% if options[:gateway] -%> 10 | IPV6_DEFAULTGW=<%= options[:gateway] %> 11 | <% end %> 12 | #VAGRANT-END 13 | -------------------------------------------------------------------------------- /templates/guests/slackware/network_dhcp.erb: -------------------------------------------------------------------------------- 1 | #VAGRANT-BEGIN 2 | # Config for eth<%= i %> 3 | USE_DHCP[<%= i %>]="yes" 4 | DHCP_HOSTNAME[<%= i %>]="" 5 | 6 | <% if options[:gateway] -%> 7 | GATEWAY="<%= options[:gateway] %>" 8 | <% end -%> 9 | 10 | DEBUG_ETH_UP="no" 11 | #VAGRANT-END 12 | -------------------------------------------------------------------------------- /templates/guests/slackware/network_static.erb: -------------------------------------------------------------------------------- 1 | #VAGRANT-BEGIN 2 | # Config for eth<%= i %> 3 | IPADDR[<%= i %>]="<%= options[:ip] %>" 4 | NETMASK[<%= i %>]="<%= options[:ip] %>" 5 | USE_DHCP[<%= i %>]="" 6 | DHCP_HOSTNAME[<%= i %>]="" 7 | 8 | <% if options[:gateway] -%> 9 | GATEWAY="<%= options[:gateway] %>" 10 | <% end -%> 11 | 12 | DEBUG_ETH_UP="no" 13 | #VAGRANT-END 14 | -------------------------------------------------------------------------------- /templates/guests/suse/network_dhcp.erb: -------------------------------------------------------------------------------- 1 | #VAGRANT-BEGIN 2 | # The contents below are automatically generated by Vagrant. Do not modify. 3 | BOOTPROTO='dhcp' 4 | STARTMODE='auto' 5 | DEVICE='<%= options[:device] %>' 6 | #VAGRANT-END 7 | -------------------------------------------------------------------------------- /templates/guests/suse/network_static.erb: -------------------------------------------------------------------------------- 1 | #VAGRANT-BEGIN 2 | # The contents below are automatically generated by Vagrant. Do not modify. 3 | BOOTPROTO='static' 4 | IPADDR='<%= options[:ip] %>' 5 | NETMASK='<%= options[:netmask] %>' 6 | DEVICE='<%= options[:device] %>' 7 | <% if options[:gateway] -%> 8 | GATEWAY='<%= options[:gateway] %>' 9 | <% end -%> 10 | PEERDNS='no' 11 | STARTMODE='auto' 12 | USERCONTROL='no' 13 | #VAGRANT-END 14 | -------------------------------------------------------------------------------- /templates/guests/suse/network_static6.erb: -------------------------------------------------------------------------------- 1 | #VAGRANT-BEGIN 2 | # The contents below are automatically generated by Vagrant. Do not modify. 3 | STARTMODE='auto' 4 | BOOTPROTO='static' 5 | IPADDR=<%= options[:ip] %> 6 | <% if options[:netmask] -%> 7 | NETMASK=<%= options[:netmask] %> 8 | <% end -%> 9 | DEVICE=<%= options[:device] %> 10 | <% if options[:gateway] -%> 11 | GATEWAY=<%= options[:gateway] %> 12 | <% end -%> 13 | <% if options[:prefix_length] -%> 14 | PREFIXLEN=<%= options[:prefix_length] %> 15 | <% end -%> 16 | #VAGRANT-END 17 | -------------------------------------------------------------------------------- /templates/nfs/exports_bsd.erb: -------------------------------------------------------------------------------- 1 | # VAGRANT-BEGIN: <%= user %> <%= uuid %> 2 | <% folders.each do |dirs, opts| %> 3 | <%= dirs.map { |d| "#{d}" }.join(" ") %> <%=opts[:bsd__compiled_nfs_options] %> <%= ips.join(" ") %> 4 | <% end %> 5 | # VAGRANT-END: <%= user %> <%= uuid %> 6 | -------------------------------------------------------------------------------- /templates/nfs/exports_darwin.erb: -------------------------------------------------------------------------------- 1 | # VAGRANT-BEGIN: <%= user %> <%= uuid %> 2 | <% folders.each do |dirs, opts| %> 3 | <% dirs.each do |d| %> 4 | "<%= d %>" <%=opts[:bsd__compiled_nfs_options] %> <%= ips.join(" ") %> 5 | <% end %> 6 | <% end %> 7 | # VAGRANT-END: <%= user %> <%= uuid %> 8 | -------------------------------------------------------------------------------- /templates/nfs/exports_linux.erb: -------------------------------------------------------------------------------- 1 | # VAGRANT-BEGIN: <%= user %> <%= uuid %> 2 | <% ips.each do |ip| %> 3 | <% folders.each do |name, opts| %> 4 | "<%= opts[:hostpath] %>" <%= ip %>(<%= opts[:linux__nfs_options].join(",") %>) 5 | <% end %> 6 | <% end %> 7 | # VAGRANT-END: <%= user %> <%= uuid %> 8 | -------------------------------------------------------------------------------- /templates/rgloader.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | # This file loads the proper rgloader/loader.rb file that comes packaged 5 | # with Vagrant so that encoded files can properly run with Vagrant. 6 | 7 | if ENV["VAGRANT_INSTALLER_EMBEDDED_DIR"] 8 | require File.expand_path( 9 | "rgloader/loader", ENV["VAGRANT_INSTALLER_EMBEDDED_DIR"]) 10 | else 11 | raise "Encoded files can't be read outside of the Vagrant installer." 12 | end 13 | -------------------------------------------------------------------------------- /test/acceptance/base.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require "vagrant-spec/acceptance" 5 | require_relative "shared/context_virtualbox" 6 | -------------------------------------------------------------------------------- /test/acceptance/shared/context_virtualbox.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | shared_context "provider-context/virtualbox" do 5 | let(:extra_env) {{ 6 | "VBOX_USER_HOME" => "{{homedir}}", 7 | }} 8 | end 9 | -------------------------------------------------------------------------------- /test/acceptance/skeletons/basic_docker/Vagrantfile: -------------------------------------------------------------------------------- 1 | Vagrant.configure("2") do |config| 2 | config.vm.define "dockertest" do |c| 3 | c.vm.provider "docker" do |d| 4 | d.image = ENV["VAGRANT_SPEC_DOCKER_IMAGE"] 5 | d.remains_running = true 6 | end 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /test/acceptance/skeletons/linked_clone/Vagrantfile: -------------------------------------------------------------------------------- 1 | Vagrant.configure('2') do |config| 2 | config.vm.box = 'basic' 3 | 4 | config.vm.provider 'virtualbox' do |v| 5 | v.linked_clone = true 6 | end 7 | end 8 | -------------------------------------------------------------------------------- /test/acceptance/skeletons/network_intnet/Vagrantfile: -------------------------------------------------------------------------------- 1 | Vagrant.configure("2") do |config| 2 | config.vm.box = "box" 3 | config.vm.network "private_network", 4 | ip: "192.168.50.4", 5 | virtualbox__intnet: true 6 | end 7 | -------------------------------------------------------------------------------- /test/config/acceptance_boxes.yml: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | # This is the list of required boxes for acceptance tests, and 5 | # their locations. The locations are used to download the boxes 6 | # on the fly, if necessary. Additionally, a SHA1 checksum is 7 | # given to determine if the box needs to be updated. 8 | - name: default 9 | url: http://files.vagrantup.com/test/boxes/default.box 10 | checksum: 1b0a7eb6e152c5b43f45485654ff4965a7f9f604 11 | -------------------------------------------------------------------------------- /test/unit/plugins/guests/openwrt/guest_test.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | -------------------------------------------------------------------------------- /test/unit/plugins/hosts/bsd/cap/path_test.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require_relative "../../../../base" 5 | require_relative "../../../../../../plugins/hosts/bsd/cap/path" 6 | 7 | describe VagrantPlugins::HostBSD::Cap::Path do 8 | describe ".resolve_host_path" do 9 | let(:env) { double("environment") } 10 | let(:path) { double("path") } 11 | 12 | it "should return the path object provided" do 13 | expect(described_class.resolve_host_path(env, path)).to eq(path) 14 | end 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /test/unit/plugins/kernel_v2/config/package_test.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require File.expand_path("../../../../base", __FILE__) 5 | 6 | require Vagrant.source_root.join("plugins/kernel_v2/config/package") 7 | 8 | describe VagrantPlugins::Kernel_V2::PackageConfig do 9 | subject { described_class.new } 10 | 11 | describe "#name" do 12 | it "defaults to nil" do 13 | subject.finalize! 14 | expect(subject.name).to be_nil 15 | end 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /test/unit/plugins/providers/virtualbox/base.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | # base test helper for virtualbox unit tests 5 | 6 | require_relative "../../../base" 7 | require_relative "support/shared/virtualbox_driver_version_4_x_examples" 8 | require_relative "support/shared/virtualbox_driver_version_5_x_examples" 9 | require_relative "support/shared/virtualbox_driver_version_6_x_examples" 10 | -------------------------------------------------------------------------------- /test/unit/plugins/providers/virtualbox/driver/version_4_0_test.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require_relative "../base" 5 | 6 | describe VagrantPlugins::ProviderVirtualBox::Driver::Version_4_0 do 7 | include_context "virtualbox" 8 | let(:vbox_version) { "4.0.0" } 9 | subject { VagrantPlugins::ProviderVirtualBox::Driver::Meta.new(uuid) } 10 | 11 | it_behaves_like "a version 4.x virtualbox driver" 12 | end 13 | -------------------------------------------------------------------------------- /test/unit/plugins/providers/virtualbox/driver/version_4_1_test.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require_relative "../base" 5 | 6 | describe VagrantPlugins::ProviderVirtualBox::Driver::Version_4_1 do 7 | include_context "virtualbox" 8 | let(:vbox_version) { "4.1.0" } 9 | subject { VagrantPlugins::ProviderVirtualBox::Driver::Meta.new(uuid) } 10 | 11 | it_behaves_like "a version 4.x virtualbox driver" 12 | end 13 | -------------------------------------------------------------------------------- /test/unit/plugins/providers/virtualbox/driver/version_4_2_test.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require_relative "../base" 5 | 6 | describe VagrantPlugins::ProviderVirtualBox::Driver::Version_4_2 do 7 | include_context "virtualbox" 8 | let(:vbox_version) { "4.2.0" } 9 | subject { VagrantPlugins::ProviderVirtualBox::Driver::Meta.new(uuid) } 10 | 11 | it_behaves_like "a version 4.x virtualbox driver" 12 | end 13 | -------------------------------------------------------------------------------- /test/unit/plugins/providers/virtualbox/driver/version_4_3_test.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require_relative "../base" 5 | 6 | describe VagrantPlugins::ProviderVirtualBox::Driver::Version_4_3 do 7 | include_context "virtualbox" 8 | 9 | let(:vbox_version) { "4.3.0" } 10 | 11 | subject { VagrantPlugins::ProviderVirtualBox::Driver::Meta.new(uuid) } 12 | 13 | it_behaves_like "a version 4.x virtualbox driver" 14 | end 15 | -------------------------------------------------------------------------------- /test/unit/plugins/providers/virtualbox/support/shared/virtualbox_driver_version_6_x_examples.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | shared_examples "a version 6.x virtualbox driver" do |options| 5 | before do 6 | raise ArgumentError, "Need virtualbox context to use these shared examples." if !(defined? vbox_context) 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /test/unit/plugins/pushes/noop/config_test.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require_relative "../../../base" 5 | 6 | require Vagrant.source_root.join("plugins/pushes/noop/config") 7 | 8 | describe VagrantPlugins::NoopDeploy::Config do 9 | include_context "unit" 10 | 11 | subject { described_class.new } 12 | 13 | let(:machine) { double("machine") } 14 | 15 | describe "#validate" do 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /test/unit/support/shared/plugin_command_context.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | shared_context "command plugin helpers" do 5 | def command_lambda(name, result, **opts) 6 | lambda do 7 | Class.new(Vagrant.plugin("2", "command")) do 8 | define_method(:execute) do 9 | raise opts[:exception] if opts[:exception] 10 | result 11 | end 12 | end 13 | end 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /test/unit/vagrant/plugin/v1/communicator_test.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require File.expand_path("../../../../base", __FILE__) 5 | 6 | describe Vagrant::Plugin::V1::Communicator do 7 | let(:machine) { Object.new } 8 | 9 | it "should not match by default" do 10 | expect(described_class.match?(machine)).not_to be 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /test/unit/vagrant/plugin/v1/host_test.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require File.expand_path("../../../../base", __FILE__) 5 | 6 | describe Vagrant::Plugin::V1::Host do 7 | # No tests. 8 | end 9 | -------------------------------------------------------------------------------- /test/unit/vagrant/plugin/v2/communicator_test.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require File.expand_path("../../../../base", __FILE__) 5 | 6 | describe Vagrant::Plugin::V2::Communicator do 7 | end 8 | -------------------------------------------------------------------------------- /test/unit/vagrant/plugin/v2/host_test.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require File.expand_path("../../../../base", __FILE__) 5 | 6 | describe Vagrant::Plugin::V2::Host do 7 | # No tests. 8 | end 9 | -------------------------------------------------------------------------------- /test/unit/vagrant/util/ansi_escape_code_remover_test.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require File.expand_path("../../../base", __FILE__) 5 | 6 | require "vagrant/util/ansi_escape_code_remover" 7 | 8 | describe Vagrant::Util::ANSIEscapeCodeRemover do 9 | let(:klass) do 10 | Class.new do 11 | extend Vagrant::Util::ANSIEscapeCodeRemover 12 | end 13 | end 14 | 15 | it "should remove ANSI escape codes" do 16 | expect(klass.remove_ansi_escape_codes("\e[Hyo")).to eq("yo") 17 | end 18 | end 19 | 20 | -------------------------------------------------------------------------------- /test/unit/vagrant/util/curl_helper_test.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require File.expand_path("../../../base", __FILE__) 5 | 6 | require "vagrant/util/curl_helper" 7 | 8 | describe Vagrant::Util::CurlHelper do 9 | end 10 | -------------------------------------------------------------------------------- /test/unit/vagrant/util/line_endings_helper_test.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require File.expand_path("../../../base", __FILE__) 5 | 6 | require "vagrant/util/line_ending_helpers" 7 | 8 | describe Vagrant::Util::LineEndingHelpers do 9 | let(:klass) do 10 | Class.new do 11 | extend Vagrant::Util::LineEndingHelpers 12 | end 13 | end 14 | 15 | it "should convert DOS to unix-style line endings" do 16 | expect(klass.dos_to_unix("foo\r\nbar\r\n")).to eq("foo\nbar\n") 17 | end 18 | end 19 | 20 | -------------------------------------------------------------------------------- /test/unit/vagrant/util/shell_quote_test.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require File.expand_path("../../../base", __FILE__) 5 | 6 | require "vagrant/util/shell_quote" 7 | 8 | describe Vagrant::Util::ShellQuote do 9 | subject { described_class } 10 | 11 | it "quotes properly" do 12 | expected = "foo '\\''bar'\\''" 13 | expect(subject.escape("foo 'bar'", "'")).to eql(expected) 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /test/vagrant-spec/boxes/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/test/vagrant-spec/boxes/.keep -------------------------------------------------------------------------------- /test/vagrant-spec/scripts/centos-run.virtualbox.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Copyright (c) HashiCorp, Inc. 3 | # SPDX-License-Identifier: BUSL-1.1 4 | 5 | set -x 6 | 7 | export VAGRANT_EXPERIMENTAL="${VAGRANT_EXPERIMENTAL:-1}" 8 | export VAGRANT_SPEC_BOX="${VAGRANT_SPEC_BOX}" 9 | vagrant-spec ${VAGRANT_SPEC_ARGS} --config /vagrant/test/vagrant-spec/configs/vagrant-spec.config.virtualbox.rb 10 | result=$? 11 | 12 | exit $result 13 | -------------------------------------------------------------------------------- /test/vagrant-spec/scripts/ubuntu-setup.docker.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Copyright (c) HashiCorp, Inc. 3 | # SPDX-License-Identifier: BUSL-1.1 4 | 5 | set -e 6 | 7 | apt-get update -q 8 | apt-get install -qq -y --force-yes curl apt-transport-https 9 | apt-get purge -qq -y lxc-docker* || true 10 | curl -sSL https://get.docker.com/ | sh 11 | 12 | /bin/bash /vagrant/test/vagrant-spec/scripts/ubuntu-install-vagrant.sh 13 | 14 | -------------------------------------------------------------------------------- /test/vagrant-spec/scripts/ubuntu-setup.virtualbox.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Copyright (c) HashiCorp, Inc. 3 | # SPDX-License-Identifier: BUSL-1.1 4 | 5 | set -e 6 | 7 | export DEBIAN_FRONTEND=noninteractive 8 | apt-get update -q 9 | apt-get install -qqy linux-headers-$(uname -r) 10 | apt-get install -qqy virtualbox 11 | apt-get install -qqy nfs-kernel-server 12 | 13 | /bin/bash /vagrant/test/vagrant-spec/scripts/ubuntu-install-vagrant.sh 14 | 15 | 16 | -------------------------------------------------------------------------------- /test/vagrant-spec/scripts/windows-run.virtualbox.ps1: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | cd /vagrant 5 | vagrant plugin install ./vagrant-spec.gem 6 | 7 | if ( $env:VAGRANT_EXPERIMENTAL -eq "" ) { 8 | $env:VAGRANT_EXPERIMENTAL="1" 9 | } 10 | vagrant vagrant-spec $Env:VAGRANT_SPEC_ARGS /vagrant/test/vagrant-spec/configs/vagrant-spec.config.virtualbox.rb 11 | -------------------------------------------------------------------------------- /tools.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) HashiCorp, Inc. 2 | // SPDX-License-Identifier: MPL-2.0 3 | 4 | //go:build tools 5 | 6 | package tools 7 | 8 | import ( 9 | _ "github.com/randall77/makefat" 10 | ) 11 | -------------------------------------------------------------------------------- /vagrant-config.hcl: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | -------------------------------------------------------------------------------- /vagrant-spec.config.example.rb: -------------------------------------------------------------------------------- 1 | # Copyright (c) HashiCorp, Inc. 2 | # SPDX-License-Identifier: BUSL-1.1 3 | 4 | require_relative "test/acceptance/base" 5 | 6 | Vagrant::Spec::Acceptance.configure do |c| 7 | c.component_paths << File.expand_path("../test/acceptance", __FILE__) 8 | c.skeleton_paths << File.expand_path("../test/acceptance/skeletons", __FILE__) 9 | 10 | c.provider "virtualbox", 11 | box: "", 12 | contexts: ["provider-context/virtualbox"] 13 | end 14 | -------------------------------------------------------------------------------- /version.txt: -------------------------------------------------------------------------------- 1 | 2.4.1.dev 2 | -------------------------------------------------------------------------------- /website/.editorconfig: -------------------------------------------------------------------------------- 1 | # This file is for unifying the coding style for different editors and IDEs 2 | # editorconfig.org 3 | 4 | root = true 5 | 6 | [*] 7 | end_of_line = lf 8 | charset = utf-8 9 | insert_final_newline = true 10 | trim_trailing_whitespace = true 11 | indent_style = space 12 | indent_size = 2 13 | 14 | [Makefile] 15 | indent_style = tab 16 | 17 | [{*.md,*.json}] 18 | max_line_length = null 19 | -------------------------------------------------------------------------------- /website/.env: -------------------------------------------------------------------------------- 1 | NEXT_PUBLIC_ALGOLIA_APP_ID=YY0FFNI7MF 2 | NEXT_PUBLIC_ALGOLIA_INDEX=product_VAGRANT 3 | NEXT_PUBLIC_ALGOLIA_SEARCH_ONLY_API_KEY=c4c3e690f46940fa3ba9624da4d7fc0c 4 | -------------------------------------------------------------------------------- /website/.env.production: -------------------------------------------------------------------------------- 1 | HASHI_ENV=production 2 | -------------------------------------------------------------------------------- /website/.eslintrc.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) HashiCorp, Inc. 3 | * SPDX-License-Identifier: BUSL-1.1 4 | */ 5 | 6 | module.exports = { 7 | ...require('@hashicorp/platform-cli/config/.eslintrc'), 8 | ignorePatterns: ['public/'], 9 | } 10 | -------------------------------------------------------------------------------- /website/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | .next 4 | out 5 | .mdx-data 6 | 7 | # As per Next.js conventions (https://nextjs.org/docs/basic-features/environment-variables#default-environment-variables) 8 | !.env 9 | .env*.local 10 | 11 | website-preview 12 | -------------------------------------------------------------------------------- /website/.nvmrc: -------------------------------------------------------------------------------- 1 | v14 2 | -------------------------------------------------------------------------------- /website/.stylelintrc.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) HashiCorp, Inc. 3 | * SPDX-License-Identifier: BUSL-1.1 4 | */ 5 | 6 | module.exports = { 7 | ...require('@hashicorp/platform-cli/config/stylelint.config'), 8 | } 9 | -------------------------------------------------------------------------------- /website/LICENSE.md: -------------------------------------------------------------------------------- 1 | # Proprietary License 2 | 3 | This license is temporary while a more official one is drafted. However, 4 | this should make it clear: 5 | 6 | The text contents of this website are MPL 2.0 licensed. 7 | 8 | The design contents of this website are proprietary and may not be reproduced 9 | or reused in any way other than to run the website locally. The license for 10 | the design is owned solely by HashiCorp, Inc. 11 | -------------------------------------------------------------------------------- /website/content/docs/cli/validate.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | layout: docs 3 | page_title: vagrant validate - Command-Line Interface 4 | description: The "vagrant validate" command is used to validate your Vagrantfile. 5 | --- 6 | 7 | # Validate 8 | 9 | **Command: `vagrant validate`** 10 | 11 | This command validates your [Vagrantfile](/vagrant/docs/vagrantfile/). 12 | 13 | ## Options 14 | 15 | - `--ignore-provider` - Ignores provider config options. 16 | 17 | ## Examples 18 | 19 | ```shell-session 20 | $ vagrant validate 21 | Vagrantfile validated successfully. 22 | ``` 23 | -------------------------------------------------------------------------------- /website/content/docs/cloud-init/index.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | layout: docs 3 | page_title: Cloud-Init 4 | description: Introduction to using cloud-init with Vagrant 5 | --- 6 | 7 | # Vagrant cloud-init 8 | 9 | For examples on how to achieve this, among other use cases, please refer to the [usage](/vagrant/docs/cloud-init/usage) 10 | guide for more information! 11 | 12 | For more information about what options are available for configuring cloud-init, see the 13 | [configuration section](/vagrant/docs/cloud-init/configuration). 14 | -------------------------------------------------------------------------------- /website/content/docs/other/index.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | layout: docs 3 | page_title: Other 4 | description: |- 5 | This page covers Vagrant information that does not quite fit under the other 6 | categories. 7 | --- 8 | 9 | # Other 10 | 11 | This section covers other information that does not quite fit under the 12 | other categories. 13 | 14 | - [Debugging](/vagrant/docs/other/debugging) 15 | - [Environment Variables](/vagrant/docs/other/environmental-variables) 16 | -------------------------------------------------------------------------------- /website/content/docs/providers/custom.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | layout: docs 3 | page_title: Custom Provider - Providers 4 | description: |- 5 | To learn how to make your own custom Vagrant providers, read the Vagrant 6 | plugin development guide on creating custom providers. 7 | --- 8 | 9 | # Custom Provider 10 | 11 | To learn how to make your own custom Vagrant providers, read the Vagrant plugin 12 | development guide on [creating custom providers](/vagrant/docs/plugins/providers). 13 | -------------------------------------------------------------------------------- /website/content/vagrant-cloud/users/index.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | layout: vagrant-cloud 3 | page_title: User Accounts 4 | description: "Users are the main identity system in Vagrant Cloud." 5 | --- 6 | 7 | # User Accounts 8 | 9 | Users are the main identity system in Vagrant Cloud. A user can be a 10 | member of multiple [organizations](/vagrant/vagrant-cloud/organizations), 11 | as well as individually collaborate on various resources. 12 | -------------------------------------------------------------------------------- /website/content/vagrant-cloud/users/recovery.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | layout: vagrant-cloud 3 | page_title: Account Recovery 4 | description: "Reset your Vagrant Cloud password with the reset link in the UI." 5 | --- 6 | 7 | # Account Recovery 8 | 9 | If you have lost access to your Vagrant Cloud account, use the reset 10 | password form on the login page to send yourself a link to reset your password. 11 | 12 | If an email is unknown, [contact us](mailto:support+vagrantcloud@hashicorp.com) 13 | for further help. 14 | -------------------------------------------------------------------------------- /website/content/vmware/index.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | layout: vmware 3 | page_title: VMware 4 | description: This is a placeholder page. 5 | --- 6 | 7 | See [/docs/providers/vmware](/vagrant/docs/providers/vmware) 8 | -------------------------------------------------------------------------------- /website/data/metadata.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) HashiCorp, Inc. 3 | * SPDX-License-Identifier: BUSL-1.1 4 | */ 5 | 6 | export const productName = 'Vagrant' 7 | export const productSlug = 'vagrant' 8 | -------------------------------------------------------------------------------- /website/data/subnav.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) HashiCorp, Inc. 3 | * SPDX-License-Identifier: BUSL-1.1 4 | */ 5 | 6 | export default [ 7 | { 8 | text: 'Intro', 9 | url: '/intro', 10 | type: 'inbound', 11 | }, 12 | { 13 | text: 'Docs', 14 | url: '/docs', 15 | type: 'inbound', 16 | }, 17 | { 18 | text: 'Community', 19 | url: '/community', 20 | type: 'inbound', 21 | }, 22 | ] 23 | -------------------------------------------------------------------------------- /website/data/version.json: -------------------------------------------------------------------------------- 1 | { 2 | "VERSION": "2.4.0", 3 | "VMWARE_UTILITY_VERSION": "1.0.22" 4 | } 5 | -------------------------------------------------------------------------------- /website/data/vmware-nav-data.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "title": "Privacy Policy", 4 | "href": "https://www.hashicorp.com/privacy" 5 | } 6 | ] 7 | -------------------------------------------------------------------------------- /website/jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": "." 4 | }, 5 | "exclude": ["node_modules", ".next", "out"] 6 | } 7 | -------------------------------------------------------------------------------- /website/prettier.config.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) HashiCorp, Inc. 3 | * SPDX-License-Identifier: BUSL-1.1 4 | */ 5 | 6 | module.exports = { 7 | ...require('@hashicorp/platform-cli/config/prettier.config'), 8 | } 9 | -------------------------------------------------------------------------------- /website/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/website/public/favicon.ico -------------------------------------------------------------------------------- /website/public/files/press-kit.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/website/public/files/press-kit.zip -------------------------------------------------------------------------------- /website/public/img/favicons/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/website/public/img/favicons/android-chrome-192x192.png -------------------------------------------------------------------------------- /website/public/img/favicons/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/website/public/img/favicons/android-chrome-512x512.png -------------------------------------------------------------------------------- /website/public/img/favicons/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/website/public/img/favicons/apple-touch-icon.png -------------------------------------------------------------------------------- /website/public/img/favicons/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/website/public/img/favicons/favicon-16x16.png -------------------------------------------------------------------------------- /website/public/img/favicons/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/website/public/img/favicons/favicon-32x32.png -------------------------------------------------------------------------------- /website/public/img/favicons/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/website/public/img/favicons/favicon.ico -------------------------------------------------------------------------------- /website/public/img/favicons/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/website/public/img/favicons/mstile-150x150.png -------------------------------------------------------------------------------- /website/public/img/og-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/website/public/img/og-image.png -------------------------------------------------------------------------------- /website/public/img/systems/windows.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /website/public/img/vagrant-trusted-by-logos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hc-github-team-es-release-engineering/vagrant/f33ac0bc98bdbcb421331d62fba42ba39d1aff85/website/public/img/vagrant-trusted-by-logos.png -------------------------------------------------------------------------------- /website/vercel.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 2, 3 | "public": true, 4 | "github": { 5 | "silent": true 6 | } 7 | } 8 | --------------------------------------------------------------------------------