Foreman Baremetal Windows Provisioning Basics

I cant find any meaningful documentation on this process so I guess I have
a few questions on how this works at a high level. I'm also entirely new to
Foreman but it's something that our admins use for Linux deployments.
However they have not done any Windows deployments from Foreman before and
may not know in detail how the process works from a Windows standpoint. I
am fairly experienced with SCCM and MDT, but would like to use Foreman
since it's already set up and configured in our environment. Forgive me for
my green-ness.

The end goal is to be able to do a bare-metal deployment to a machine using
Foreman, have it join the domain using the host name and IP specified in
Foreman, and perform configuration management.

Questions

  1. I followed a guide
    (http://www.puppetblog.nl/installation/the-foreman-windows-deployment/) to
    allow booting to WDS but doesnt really go into detail on what happens
    after. How does the install get settings like hostname and IP address from
    what was entered into Foreman?

  2. Does the deployment process in WDS some how get an unattend.xml file
    that's generated per machine from foreman (I think i read something similar
    in another thread here:
    https://groups.google.com/forum/#!topic/foreman-users/5qLzib8Z0w8)? Would
    this unattend file contain the hostname designated in Foreman, etc.?

  3. Would it be possible to boot to something like WDS+MDT that can manage
    driver injection during the imaging process so we can just use a single
    image for physical deployments? If i can make the LTI process in MDT
    essentially fully automated what does it need to do at the end of the
    imaging process to get settings like host name, join the domain, install
    puppet, etc.?

Hello,

> I cant find any meaningful documentation on this process so I guess I have
> a few questions on how this works at a high level. I'm also entirely new to
> Foreman but it's something that our admins use for Linux deployments.
> However they have not done any Windows deployments from Foreman before and
> may not know in detail how the process works from a Windows standpoint. I
> am fairly experienced with SCCM and MDT, but would like to use Foreman
> since it's already set up and configured in our environment. Forgive me for
> my green-ness.
>
> The end goal is to be able to do a bare-metal deployment to a machine using
> Foreman, have it join the domain using the host name and IP specified in
> Foreman, and perform configuration management.

Short answer: you can do all of this; but it seems to be less common. No need for WDS at all; though you can use it to prepare the images.

IMHO currently the best alternative right now is to use wimboot and wimaging [1].

Please note, I am currently in the process to heavily modify / rewrite wimagaging; so you might want to checkout my fork [2] (make sure to
checkout the wimanging-ng branch). I mainly removed the need for smb and added the foreman templates. It yet needs safe mode in foreman
disabled! So disable it in your settings.

I did not yet finish documentation (in the process) but the basic idea:

  1. Install wimboot in foreman
  2. prepare a boot.wim from windows PE; inject tools
  3. Download windows updates, add them to install.wim
  4. put everything in place on a http/ftp server
  5. Add templates to foreman
  6. Add parameters
  7. Deploy hosts

In or small shop, I am able to use the full foreman pipeline to provision windows hosts; starting with discovery, finishing with domain join
and puppet install. I recently removed WDS completely (never really worked for me).

  1. wimboot boots winpe
  2. winpe downloads foreman_url('script'); executes it
  3. partition drive 0; mount it
  4. download / apply install.wim
  5. download / apply unattend.xml foreman_url('provision')
  6. download / add drivers
  7. download / arm foreman_url('finish')
  8. reboot to new os and execute finish script:
  9. set time server; sync time
  10. domain join
  11. execute extra scripts (in my case, install puppet)
  12. cleanup and reboot

Right now, I can only verify the process works with windows 6.3 (so, 8.1 and 2012r2). I have yet to test windows 10 and 2016 and probably
will never test windows 6.1/6.2.

Stay tuned for complete setup steps.

You are very welcome to test it, please open issues directly on githup and contact me if you need help.

[1] https://github.com/kireevco/wimaging
[2] https://github.com/helge000/wimaging/tree/wimaging-ng

··· On 25.09.2015 03:22, Ryan Yee wrote:

Questions

  1. I followed a guide
    (http://www.puppetblog.nl/installation/the-foreman-windows-deployment/) to
    allow booting to WDS but doesnt really go into detail on what happens
    after. How does the install get settings like hostname and IP address from
    what was entered into Foreman?

  2. Does the deployment process in WDS some how get an unattend.xml file
    that’s generated per machine from foreman (I think i read something similar
    in another thread here:
    https://groups.google.com/forum/#!topic/foreman-users/5qLzib8Z0w8)? Would
    this unattend file contain the hostname designated in Foreman, etc.?

  3. Would it be possible to boot to something like WDS+MDT that can manage
    driver injection during the imaging process so we can just use a single
    image for physical deployments? If i can make the LTI process in MDT
    essentially fully automated what does it need to do at the end of the
    imaging process to get settings like host name, join the domain, install
    puppet, etc.?


Daniel Helgenberger
Schivelbeiner Str. 46
10439 Berlin

Just updating this thread, I managed to find a solution combining Foreman
and MDT 2013 Update 1. MDT 2013 Update 1 has a "web service" feature that
will import data from a website with variables presented in XML format. I
kinda came upon this on accident reading through Foreman documentation
(TemplateWriting - Foreman). I
never really understood how foreman presented data until I found that you
can "spoof" provisioning information based on IP address.

I created a provisioning template in XML format that is then accessed by
MDT at http://foremanserver/unattended/provision (the xml information in
this URL changes depending on the IP accessing the URL. Here we present MDT
with the hostname and any other variables you want configured on the
deployment).

Edit MDT's customsettings.ini to set the WinPE variables for the deployment
and you should be more or less good to go.

More info on MDT's web service functionality:
https://technet.microsoft.com/en-us/library/dn744299.aspx

··· On Thursday, September 24, 2015 at 10:34:25 PM UTC-7, Ryan Yee wrote: > > I cant find any meaningful documentation on this process so I guess I have > a few questions on how this works at a high level. I'm also entirely new to > Foreman but it's something that our admins use for Linux deployments. > However they have not done any Windows deployments from Foreman before and > may not know in detail how the process works from a Windows standpoint. I > am fairly experienced with SCCM and MDT, but would like to use Foreman > since it's already set up and configured in our environment. Forgive me for > my green-ness. > > The end goal is to be able to do a bare-metal deployment to a machine > using Foreman, have it join the domain using the host name and IP specified > in Foreman, and perform configuration management. > > Questions > 1. I followed a guide ( > http://www.puppetblog.nl/installation/the-foreman-windows-deployment/) to > allow booting to WDS but doesnt really go into detail on what happens > after. How does the install get settings like hostname and IP address from > what was entered into Foreman? > > 2. Does the deployment process in WDS some how get an unattend.xml file > that's generated per machine from foreman (I think i read something similar > in another thread here: > https://groups.google.com/forum/#!topic/foreman-users/5qLzib8Z0w8)? Would > this unattend file contain the hostname designated in Foreman, etc.? > > 3. Would it be possible to boot to something like WDS+MDT that can manage > driver injection during the imaging process so we can just use a single > image for physical deployments? If i can make the LTI process in MDT > essentially fully automated what does it need to do at the end of the > imaging process to get settings like host name, join the domain, install > puppet, etc.? > > > >

Hello,

What do you mean by 1) Install Wimboot in Foreman?
As in go to http://ipxe.org/wimboot download the wimboot file and copy it
to installation media? or foreman server? and where does it go?
/var/lib/tftpboot/boot?

Thanks

··· On Thursday, September 24, 2015 at 10:34:25 PM UTC-7, Ryan Yee wrote: > > I cant find any meaningful documentation on this process so I guess I have > a few questions on how this works at a high level. I'm also entirely new to > Foreman but it's something that our admins use for Linux deployments. > However they have not done any Windows deployments from Foreman before and > may not know in detail how the process works from a Windows standpoint. I > am fairly experienced with SCCM and MDT, but would like to use Foreman > since it's already set up and configured in our environment. Forgive me for > my green-ness. > > The end goal is to be able to do a bare-metal deployment to a machine > using Foreman, have it join the domain using the host name and IP specified > in Foreman, and perform configuration management. > > Questions > 1. I followed a guide ( > http://www.puppetblog.nl/installation/the-foreman-windows-deployment/) to > allow booting to WDS but doesnt really go into detail on what happens > after. How does the install get settings like hostname and IP address from > what was entered into Foreman? > > 2. Does the deployment process in WDS some how get an unattend.xml file > that's generated per machine from foreman (I think i read something similar > in another thread here: > https://groups.google.com/forum/#!topic/foreman-users/5qLzib8Z0w8)? Would > this unattend file contain the hostname designated in Foreman, etc.? > > 3. Would it be possible to boot to something like WDS+MDT that can manage > driver injection during the imaging process so we can just use a single > image for physical deployments? If i can make the LTI process in MDT > essentially fully automated what does it need to do at the end of the > imaging process to get settings like host name, join the domain, install > puppet, etc.? > > > >