Uplift Project
IaC, Packer/Vagrant workflows, and base boxes for SharePoint professionals.
 Spend less time creating dev, uat, integration and lab environments with domain controllers, SQL servers, SharePoint farms and Visual Studio installs.
Infrastructure as code for SharePoint professionals
Leverage IaC and ready-to-use Vagrant boxes to create disposable SharePoint infrastructure.
Easy file download
Reduce effort to download, store and manage needed ISO files, installation media, service packs, patches and other binaries.	 
 Uplift comes with  
 PowerShell 6 module
 
 to download more than 120 resources including Windows updates, SharePoint binaries and language packs, 
 Windows 2016 ISO and patches, SQL Server, Microsoft CRM, even Visual Studio 2017 and more.
Pre-configured Packer templates
  Packer
  is a great tool for automated creation of golden images for multiple platforms from a single source configuration.
 
 Uplift provides 
 Packer images
  
 for Windows and SharePoint workloads. 
 Build your own or use Windows 2016, 
 SQL Server 2016, 
 SharePoint 2016 RTM, 
 Feature Pack 1, Feature Pack 2, the latest, and even 18 language packs which are already pre-installed.
Multi-Machine Vagrant environments
 Vagrant
  enables users to create and configure lightweight, reproducible, and portable development environments. 
  Uplift relies on Vagrant to create and configure  multi-machine environments consisting of domain controller, SQL Server, and SharePoint boxes. 
We ship a  Vagrant plugin to simplify configuration of such complex and fragile infrastructure configurations.
Works on Windows and MacOS
Uplift relies on  Oracle VM VirtualBox  to produce highly automated and repeatable Vagrant boxes and multi-machine environments. 
 Because of VirtualBox, virtual machines work smoothly on Windows and MacOS platforms.  Uplift powers environments on Windows 2016, Windows 10, MacOS and even Windows 2008.
Pre-configured Jenkins CI/CD server
Infrastructure as code needs continuous integration and delivery server.  Jenkins  can be a good fit for continuous builds and testing.  
 Uplift comes with   pre-configured Jenkins server.  Packer builds and Vagrant testing are codified into Jenkins pipelines.  You can use existing pipelines or build new pipelines from scratch.
Automation building blocks
Uplift project is an attempt to lower down the initial cost of    infrastructure as code automation  for SharePoint professionals. 
 We try our best to heavy lift initial automation so that  Uplift project can be used out of the box while still providing core building blocks for custom automation pipelines on top.
Embracing frequent rebuild of dev, uat, integration and lab environments
Uplift project lowers down the initial cost of infrastructure provision.
3200+
Domain controllers built
7800+
SQL Server 2016 built
13000+
SharePoint 2016 farms built
1700+
vagrant-uplift plugin installs
Get started with Uplift Project
Start leveraging building blocks for your next infrastructure as code project.
vagrant-uplift plugin
vagrant-uplift plugin for Vagrant provides additional helpers for simplified configuration of domain controllers, domain joins, SQL Server, and SharePoint configurations.
vagrant-uplift helpers
Helper methods are exposed via Ruby class VagrantPlugins::Uplift::Config() and organized into two subsets receiving box name and vagrant box config.uplift.set_xxx() are shortcuts to box resources such as cpu, ram, network, hostname and others.
uplift.provision_xxx() configures provisioners, operations like creating domain controllers, domain join, SQL Server image completion, and others.
uplift base boxes
vagrant-uplift plugin best works with uplift base boxes. Opinionated infrastructure configuration needs several PowerShell modules to be on the box. Check documentation on how it can work with custom boxes.# create uplift configuration helper
uplift = VagrantPlugins::Uplift::Config()
# multi-machine environment with dc and sql boxes
Vagrant.configure("2") do |config|
  # vagrant box for domain controller
  config.vm.define "dc" do | vm_config | 
    # .. some usual Vagrant configuration
    # base configuration
    uplift.set_2Gb("dc", vm_config)
    uplift.set_hostname("dc", vm_config, "dc")   
    # join to domain controller
    uplift.set_private_dc_network("dc", vm_config)   
  uplift.provision_win16_dsc_soe("dc", vm_config)
    uplift.provision_dc16("dc", vm_config)
  end
  # vagrant box for SQL Server
  config.vm.define "sql" do | vm_config |   
    # .. some usual Vagrant configuration
    # base configuration
    uplift.set_6Gb("sql", vm_config)
    uplift.set_hostname("sql", vm_config, "sql")   
    # join to domain controller
    uplift.set_client_network("sql", vm_config, "sql")
    uplift.provision_win16_dsc_soe("sql", vm_config)
    uplift.provision_dc_join("sql", vm_config)
    # complete SQL Server image
    uplift.provision_sql16_complete_image("sql", vm_config)
  end
end
Invoke-Uplift module
invoke-uplift is a PowerShell module which automates file downloads, checksum validation, file service and transferring.PowerShell Core 6.0 is used to make this module portable across Windows and MacOS platforms.
Invoke-Uplift CLI
invoke-uplift resource download command downloads file resource by its name.invoke-uplift resource list command shows a list of more than 120 resources which are shipped by default.
invoke-uplift resource validate-uri command checks files resource URIs to ensure that they are still available.
Other options
-r or -repository option specifies a local folder where to save all files-d or -debug option produces more trace so you can see what is happening.
# get into PowerShell 6 command line # with PS6, file download works on Windows and MacOS pwsh # install InvokeUplift PowerShell module Install-Module -Name InvokeUplift # check the version Invoke-Uplift Invoke-Uplift version # download Windows 2016 Server ISO image Invoke-Uplift resource download ms-win-2016-iso-x64-eval # download SQL Server 2016 installation media Invoke-Uplift resource download ms-sql-server2016-rtm # download SharePoint 2016 RTM installation media Invoke-Uplift resource download ms-sharepoint2016-rtm # download SharePoint updates Invoke-Uplift resource download ms-sharepoint2016-update-2019.01.08 # download SharePoint German language pack Invoke-Uplift resource download ms-sharepoint2016-lang-pack-de-de # download Visual Studio 2017 pre-configured for Office Development Invoke-Uplift resource download ms-visualstudio-2017.ent-dist-office-dev # show more than 120 built-in resources to download! Invoke-Uplift resource list # download Windows 2016 ISO into local folder Invoke-Uplift resource download ms-win-2016-iso-x64-eval -r c:/my-files # all command use -d or -debug switch too Invoke-Uplift resource download ms-sql-server2016-rtm -d Invoke-Uplift resource download ms-sql-server2016-rtm -debug
Packer templates
Packer is a great tool for automated creation of golden images for multiple platforms from a single source configuration.Uplift project comes with templates for building golden images for Windows 2016, SQL Server 2016, SharePoint 2016 RTM, Feature Pack 1, Feature Pack 2 and more.
Building images
Building base images is really easy. Most of the things are pre-scripted with the help of PowerShell and Invoke-Build automation.invoke-build ? command shows available tasks.
invoke-build -packerImageName command builds an image by its name.
invoke-build -packerImageName -Task PackerRebuild command force rebuilds an image.
invoke-build -packerImageName -Task VagrantBoxTest command runs automation to test the image.
invoke-build -packerImageName -Task VagrantBoxAdd adds newly build image into Vagrant.
# get the source code git clone https://github.com/SubPointSolutions/uplift-packer.git cd uplift-packer # build, rebuild, test and and add minimal ubuntu-trusty64 box invoke-build -packerImageName ubuntu-trusty64 invoke-build -packerImageName ubuntu-trusty64 -Task PackerRebuild invoke-build -packerImageName ubuntu-trusty64 -Task VagrantBoxTest invoke-build -packerImageName ubuntu-trusty64 -Task VagrantBoxAdd # build windows base boxes - as is, and with the recent updates invoke-build -packerImageName win-2016-datacenter-soe invoke-build -packerImageName win-2016-datacenter-soe-latest # build application base boxes # -UPLF_INPUT_BOX_NAME specifies initial Vagrant box to start with # all these boxes requires a local file repository built by invoke-uplift invoke-build -packerImageName win-2016-datacenter-app -UPLF_INPUT_BOX_NAME uplift-local/win-2016-datacenter-soe-latest-master invoke-build -packerImageName win-2016-datacenter-app-sql16 -UPLF_INPUT_BOX_NAME uplift-local/win-2016-datacenter-soe-latest-master # build SharePoint base boxes invoke-build -packerImageName win-2016-datacenter-sp2016rtm-sql16-vs17 -UPLF_INPUT_BOX_NAME uplift-local/win-2016-datacenter-app-sql16-master invoke-build -packerImageName win-2016-datacenter-sp2016fp1-sql16-vs17 -UPLF_INPUT_BOX_NAME uplift-local/win-2016-datacenter-app-sql16-master invoke-build -packerImageName win-2016-datacenter-sp2016fp2-sql16-vs17 -UPLF_INPUT_BOX_NAME uplift-local/win-2016-datacenter-app-sql16-master invoke-build -packerImageName win-2016-datacenter-sp2016latest-sql16-vs17 -UPLF_INPUT_BOX_NAME uplift-local/win-2016-datacenter-app-sql16-master
Jenkins Server
Infrastructure as code needs continuous integration and delivery server. Jenkins can be a good fit for continuous builds and testing.Uplift comes with pre-configured Jenkins to build and test Packer templates and Vagrant environments.
Running Jenkins server
Standing up a new jenkins server is super-easy. Most of the things are pre-scripted with the help of PowerShell and Invoke-Build automation.invoke-build ? command shows available tasks.
invoke-build StartServer command builds and starts Jenkins server.
invoke-build StartAgent command starts and joins Jenkins agent to the server.
invoke-build SyncJobs command configures default jobs and views for the Uplift project.
# get the latest from the GitHub git clone https://github.com/SubPointSolutions/uplift-cicd-jenkins2.git cd uplift-cicd-jenkins2 # start jenkins server on http://localhost:10000 # default user and password are the same: uplift invoke-build StartServer # start jenkins agent invoke-build StartAgent # configure default jobs and views invoke-build SyncJobs
Supporting professionals and teams of any size
You aren't left alone, more features and support options are available.
Get more donefaster
Open source solves complexity for practitioners.
Pro solves organizational level challenges while building and maintaining dev, uat, integration and lab environments.
If you are looking for additional advanced features not listed here, drop us a line.
Open Source
For individuals & small teams
Free
- Basic Packer templates
- Windows 2016
- SharePoint 2016
- SQL Server 2016
- Visual Studio 2017
 
- Vagrant + VirtualBox
- Basic Vagrant configurations
- Domain controller
- SQL Server 2016
- SharePoint Single farm
- Visual Studio 2017
 
- Pre-configured Jenkins CI/CD
- Basic Community Support
- Advanced Packer templates
- Windows 2012 R2, 2016, 2019
- SharePoint 2013, 2016, 2019
- SQL Server 2012, 2014, 2016, 2019
- Visual Studio 2013, 2015, 2017, 2019
 
- Hyper-V / Azure / other
- Advanced Vagrant configurations
 - Domain controller HA
- SQL Server's AG
- More SharePoint farm topologies
       - SharePoint + ADFS
- Hybrid configuration
- Office Online Server
- Workflow Manager
- SharePoint Add-ins
- Search topologies
- ... and others
 
- other dev, uat and labs scenarios
 
- Jenkins / Azure Piplines / other
- 12x5 / Slack / Email / other
Resources and documentation
Documentation and resource on Uplift Project