Go to file
djpbessems 28b6ae7444
Some checks failed
continuous-integration/drone/push Build is failing
Add payload Server2019;Add intermediate template
2021-02-12 16:44:39 +01:00
.assets Add XML excerpt and screenshots to documentation 2021-02-04 12:09:29 +01:00
packer Add payload Server2019;Add intermediate template 2021-02-12 16:44:39 +01:00
scripts Add two DeploymentOptions w/ distinct vApp props 2021-02-03 12:55:17 +01:00
.drone.yml Delete commit history (containing proprietary code) 2021-01-23 15:59:06 +01:00
.drone.yml.backup Delete commit history (containing proprietary code) 2021-01-23 15:59:06 +01:00
README.md Housekeeping;Match packer template w/ prod pipeline 2021-02-10 10:04:04 +01:00

Packer.Images Build Status

This OVA appliance allows deploying a Windows Server fully automated; either as a domain member or stand-alone server.

The included .ovf file has the following XML contents (simplified for clarity) to facilitate the different DeploymentOptions:

<Envelope [...]>
  [...]
  <DeploymentOptionSection>
    <Info>Deployment Type</Info>
    <Configuration ovf:id="domainmember">
      <Label>Domain member</Label>
      <Description>Windows Server joined to an Active Directory domain</Description>
    </Configuration>
    <Configuration ovf:id="standalone">
      <Label>Stand-alone</Label>
      <Description>Stand-alone Windows Server</Description>
    </Configuration>
  </DeploymentOptionSection>
  <VirtualSystem ovf:id="[...]">
    [...]
    <ProductSection>
      [...]
      <Category>1) Operating System</Category>
      <Property ovf:configuration="domainmember standalone" ovf:key="guestinfo.hostname" [...]>
        <Label>Hostname*</Label>
      </Property>
      <Property ovf:configuration="standalone" ovf:key="guestinfo.administratorpw" [...]>
        <Label>Local administrator password*</Label>
      </Property>
      [...]
      <Category>3) Active Directory membership</Category>
      <Property ovf:configuration="domainmember" ovf:key="addsconfig.domainname" [...]>
        <Label>Domain name*</Label>
      </Property>
      <Property ovf:configuration="domainmember" ovf:key="addsconfig.username" [...]>
        <Label>Domain account username*</Label>
      </Property>
      <Property ovf:configuration="domainmember" ovf:key="addsconfig.password" [...]>
        <Label>Domain account password*</Label>
      </Property>
    </ProductSection>
  </VirtualSystem>
</Envelope>

When provisioning the appliance through the vCenter 'Deploy OVF template...' wizard, or through vApp-compatible Infrastructure as code tooling (e.g. HashiCorp Terraform), it is possible to provide all relevant configuration through vApp properties.

vSphere 'Deploy OVF template...' wizard HashiCorp Terraform vSphere provider
vApp properties
vApp properties
  vapp {
    properties = {
      # "deployment.type"           = "domainmember"

      "guestinfo.hostname"        = "SRV01"
      # "guestinfo.administratorpw" = var.vm_adminpassword
      # "guestinfo.ntpserver"       = "0.pool.ntp.org,1.pool.ntp.org,2.pool.ntp.org"
      "guestinfo.ipaddress"       = "10.0.0.42"
      "guestinfo.prefixlength"    = "24"
      "guestinfo.dnsserver"       = "10.0.0.21"
      "guestinfo.gateway"         = "10.0.0.1"

      "addsconfig.domainname"     = "contoso.com"
      "addsconfig.username"       = "CONTOSO\\domainjoin"
      "addsconfig.password"       = var.adds_password
    }
  }

On first boot, the appliance will start configuring itself without any further user-input, by performing the following steps:

  • Change hostname
  • Configure network
  • Join Active Directory domain -OR- Set password for local administrator
  • Iterate through any payload scripts