modules/deploy/dsc/ext/PsGallery/xWordPress.1.1.0.0/samples/SingleNodeEndToEndWordPress.ps1
# This configuration configures a Basic WordPress Site # It requires xPhp, xMySql, xWordPress, and xWebAdministration # Please review the note about the FQDN variable and # about the URLs, they may need to be updated. # ********* NOTE *********** # If you are not targetting the local machine, # or this does not resolve to the correct FQDN for the machine # Update this to the FQDN of the target machine # ************************** [string] $fqdn = [System.Net.Dns]::GetHostByName(($env:computerName)).HostName Write-Host "Target Machine FQDN: $fqdn" [string] $role = "WordPress" $dataRoot = Split-Path $MyInvocation.MyCommand.Path $phpTemplatePath = join-Path $dataRoot "phpConfigTemplate.txt" $WordPressTemplatePath = Join-Path $dataRoot "WordPressConfigurationTemplate.ps1" if (-not (Test-Path $WordPressTemplatePath)) { $message = "Missing required file $WordPressTemplatePath" # This file is in the samples folder of the resource throw $message } $plainPassword = "pass@word1" $pwd = convertTo-SecureString -String $plainPassword -AsPlainText -Force $WordPressUserName = "WordPressUser" $WordPressDatabase = "WordPress" # Generate the contents of the WordPress configuration $wordPressConfig = & $WordPressTemplatePath -WordPressDatabase $WordPressDatabase -WordPressUserName $WordPressUserName -PlainPassword $plainPassword # ********* NOTE *********** # PHP and My SQL change their download URLs frequently. Please verify the URLs. # the WordPress and VC Redist URL change less frequently, but should still be verified. # After verifying the download URLs for the products and update them appropriately. # ************************** $configurationData = @{ AllNodes = @( @{ Role = $role NodeName = $fqdn PSDscAllowPlainTextPassword = $true; WordPress = @{ Title = "DSC WordPress Site Title" Admin = New-Object -TypeName System.Management.Automation.PSCredential -argumentlist (�DscAdmin�,$pwd) Email = "dscadmin@contoso.com" Uri = "http://$fqdn" DownloadURI = "http://WordPress.org/latest.zip" Path = (Join-Path $env:SystemDrive "wwwWordPress") Config = $wordPressConfig SiteName = "WordPress" TemplatePath = $WordPressTemplatePath UserName = $WordPressUserName Database = $WordPressDatabase User = New-Object -TypeName System.Management.Automation.PSCredential -argumentlist (�$WordPressUserName�,$pwd) } Php = @{ # Update with the latest "VC11 x64 Non Thread Safe" from http://windows.php.net/download/ DownloadURI = "http://windows.php.net/downloads/releases/php-5.5.14-nts-Win32-VC11-x64.zip" TemplatePath = $phpTemplatePath Path = "$env:SystemDrive\php" Vc2012RedistUri = "http://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x64.exe" } PackageFolder = "$env:SystemDrive\packages" MySqlDownloadURI = "http://dev.mysql.com/get/Downloads/MySQLInstaller/mysql-installer-community-5.6.17.0.msi" Credential = New-Object -TypeName System.Management.Automation.PSCredential -argumentlist (�userNameNotUsed�,$pwd) #the password for root. no user name is needed as MySql installer is using only the user "root". PlainPassword = $plainPassword } ) } # Configuration to configure a Single machine WordPress Site Configuration WordPress { # Import composite resources Import-DscResource -module xMySql Import-DscResource -module xPhp Import-DscResource -module xWordPress Node $AllNodes.NodeName { # Make sure we have a folder for the packages File PackagesFolder { DestinationPath = $Node.PackageFolder Type = "Directory" Ensure = "Present" } # Make sure PHP is installed in IIS xPhp php { InstallMySqlExt = $true PackageFolder = $Node.PackageFolder DownloadUri = $Node.Php.DownloadURI DestinationPath = $Node.Php.Path ConfigurationPath = $Node.Php.TemplatePath Vc2012RedistDownloadUri = $Node.Php.Vc2012RedistUri } # Make sure MySql is installed with a WordPress database xMySqlProvision mySql { ServiceName = "MySqlService" DownloadURI = $Node.MySqlDownloadURI RootCredential = $Node.Credential DatabaseName = "WordPress" UserCredential = $Node.WordPress.User } # Make sure the IIS site for WordPress is created # Note, you still need to create the actuall WordPress Site after this. xIisWordPressSite iisWordPressSite { DestinationPath = $Node.WordPress.Path DownloadUri = $Node.WordPress.DownloadURI PackageFolder = $Node.PackageFolder Configuration = $Node.WordPress.Config } # Make sure the WordPress site is present xWordPressSite WordPressSite { Uri = $Node.WordPress.Uri Title = $Node.WordPress.Title AdministratorCredential = $Node.WordPress.Admin AdministratorEmail = $Node.WordPress.Email } # Make sure LCM will reboot if needed LocalConfigurationManager { RebootNodeIfNeeded = $true # uncomment when debugging on WMF 5 and above. # DebugMode = $true } } } $outputFolder = "$env:USERPROFILE\Desktop\WordPress" Wordpress -OutputPath $outputFolder -ConfigurationData $configurationData Set-DscLocalConfigurationManager -path $outputFolder -verbose Start-DscConfiguration -Wait -Verbose -path $outputFolder |