Documentation for Windows Provisioner
- About the Project
- Key Features
- Roadmap
- Provider Support
- Built With
- Contributing
- License
- Contact
- Acknowledgements
Windows Provisioner is a provisioner package that provisions a Windows Server guest from a STARTcloud Windows box, prepared with the Windows roles of the startcloud.startcloud_roles collection. It is part of the STARTcloud ecosystem, riding on the Core Provisioner driver (fetched automatically from the release pinned in driver.version) and the startcloud.startcloud_roles and startcloud.hcl_roles Ansible collections.
- Role Management: Offers a comprehensive set of Ansible roles for various aspects of VM preparation and configuration.
- Technology Installation: Automates the installation of services such as Chocolatey, OpenSSH, Sysmon, Winlogbeat and Telegraf from the startcloud_roles collection and the HCL Notes client from the hcl_roles collection, simplifying the deployment process.
- Service Configuration: Simplifies the setup of necessary services on VMs, streamlining the deployment process.
- Dependency Installation: Handles the installation of required dependencies, reducing manual setup efforts.
Releases are built by release-please from conventional commits: every release
carries an immutable windows_provisioner-<version>.tar.gz (plus
a mutable windows_provisioner.tar.gz "latest" alias) with
.sha256 sidecars — the registry-shaped artifact contract the provisioner
catalog uses. See RELEASE.md for how releases are produced.
For plain vagrant use, clone this repository, copy examples/Hosts.yml to
Hosts.yml at the repository root, place the collection releases pinned in
collections/*.version under provisioners/ansible_collections/, and run
vagrant up — the pinned core driver bootstraps itself on first run.
To integrate Windows Provisioner with the Core Provisioner, specifically with the Hosts.yml and Hosts.rb files, follow these steps:
Windows Provisioner enhances the provisioning process by automating the configuration of VMs. To utilize these roles effectively, they need to be referenced within the Hosts.yml for the Core Provisioner Hosts.rb.
-
Reference Roles in
Hosts.yml: Within theHosts.ymlfile, you can specify which roles should be applied to a particular host. This is done by including the role names under theroleskey for each host configuration. For example:hosts: all roles: - startcloud.startcloud_roles.ssl - startcloud.startcloud_roles.windows_privacy
This configuration indicates that the
sslandwindows_privacyroles from thestartcloud.startcloud_rolescollection should be applied to all hosts viaall. -
Execution in
Hosts.rb: TheHosts.rbscript is responsible for interpreting theHosts.ymlfile and generating the necessary Vagrant configurations. When theHosts.rbscript encounters a host configuration that includes roles, it automatically applies these roles during the provisioning process. There's no need for additional modifications inHosts.rbfor this purpose, as the script is designed to handle role application based on theHosts.ymlconfigurations.
By following these steps, you can seamlessly integrate Windows Provisioner with the Core Provisioner, leveraging the power of Ansible roles to automate the configuration and security of your VMs. This approach enhances the flexibility and extensibility of your provisioning process, allowing for a more declarative and manageable setup.
See the open issues for a list of proposed features (and known issues).
| Provider | Supported by Windows Provisioner |
|---|---|
| VirtualBox | Yes |
| Bhyve/Zones | Yes |
| VMware Fusion | No |
| Hyper-V | No |
| Parallels | No |
| AWS EC2 | Yes |
| Google Cloud | No |
| Azure | No |
| DigitalOcean | No |
| Linode | No |
| Vultr | No |
| Oracle Cloud | No |
| OpenStack | No |
| Rackspace | No |
| Alibaba Cloud | No |
| Aiven | No |
| Packet | No |
| Scaleway | No |
| OVH | No |
| Exoscale | No |
| Hetzner Cloud | No |
| KVM | Yes |
| QEMU | Yes |
| Docker Desktop | No |
| HyperKit | No |
| WSL2 | No |
- Vagrant - Portable Development Environment Suite.
- VirtualBox - Hypervisor.
- Ansible - Virtual Machine Automation Management.
- Core Provisioner - Core Provisioner.
Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.
- Joel Anderson - Initial work - JoelProminic
- Justin Hill - Initial work - JustinProminic
- Mark Gilbert - Refactor - MarkProminic
See also the list of contributors who participated in this project.
This project is licensed under the Apache License 2.0 - see the LICENSE.md file for details
- Hat tip to anyone whose code was used — see ACKNOWLEDGMENTS.md