Move Exchange to AddOns Folder
This commit is contained in:
		
							
								
								
									
										3
									
								
								Addons/Exchange/Azure/Ansible/ansible.cfg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								Addons/Exchange/Azure/Ansible/ansible.cfg
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| [defaults] | ||||
| inventory = inventory.yml | ||||
| host_key_checking = False | ||||
							
								
								
									
										6
									
								
								Addons/Exchange/Azure/Ansible/exchange.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								Addons/Exchange/Azure/Ansible/exchange.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| --- | ||||
| - hosts: exchange | ||||
|   roles: | ||||
|     - exchange | ||||
|     - common | ||||
|   tags: exchange | ||||
							
								
								
									
										1
									
								
								Addons/Exchange/Azure/Ansible/group_vars/all.yml
									
									
									
									
									
										Symbolic link
									
								
							
							
						
						
									
										1
									
								
								Addons/Exchange/Azure/Ansible/group_vars/all.yml
									
									
									
									
									
										Symbolic link
									
								
							| @@ -0,0 +1 @@ | ||||
| ../../../../Azure/Ansible/group_vars/all.yml | ||||
							
								
								
									
										1
									
								
								Addons/Exchange/Azure/Ansible/roles/common
									
									
									
									
									
										Symbolic link
									
								
							
							
						
						
									
										1
									
								
								Addons/Exchange/Azure/Ansible/roles/common
									
									
									
									
									
										Symbolic link
									
								
							| @@ -0,0 +1 @@ | ||||
| ../../../../../Azure/Ansible/roles/common | ||||
							
								
								
									
										137
									
								
								Addons/Exchange/Azure/Ansible/roles/exchange/tasks/main.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										137
									
								
								Addons/Exchange/Azure/Ansible/roles/exchange/tasks/main.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,137 @@ | ||||
| --- | ||||
|  | ||||
| - name: Hostname -> EXCHANGE | ||||
|   win_hostname: | ||||
|     name: EXCHANGE | ||||
|   register: res | ||||
|  | ||||
| - name: Reboot | ||||
|   win_reboot: | ||||
|   when: res.reboot_required | ||||
|  | ||||
| - name: Set HostOnly DNS Address | ||||
|   win_dns_client: | ||||
|     adapter_names: '*' | ||||
|     ipv4_addresses: | ||||
|       - 192.168.38.102 | ||||
|       - 8.8.8.8 | ||||
|     log_path: C:\dns_log.txt | ||||
|  | ||||
| - name: Install git | ||||
|   win_chocolatey: | ||||
|     name: git | ||||
|     state: present | ||||
|  | ||||
| - name: Check if existing DetectionLab directory | ||||
|   win_stat: | ||||
|     path: 'c:\DetectionLab' | ||||
|   register: dir | ||||
|  | ||||
| - name: Git clone Detectionlab | ||||
|   win_shell: git clone https://github.com/clong/DetectionLab.git | ||||
|   args: | ||||
|     chdir: 'c:\' | ||||
|   when: not dir.stat.exists | ||||
|  | ||||
| - name: Copy scripts to c:\vagrant | ||||
|   win_shell: Copy-Item -Recurse c:\DetectionLab\Vagrant c:\vagrant | ||||
|  | ||||
| - name: Join the Domain | ||||
|   win_shell: .\\provision.ps1 | ||||
|   args: | ||||
|     chdir: 'c:\vagrant\scripts' | ||||
|   register: exchange_join_domain | ||||
|   changed_when: "'HasSucceeded : True' in exchange_join_domain.stdout" | ||||
|  | ||||
| - debug: msg="{{ exchange_join_domain.stdout_lines }}" | ||||
|  | ||||
| - name: Reboot After Joining the Domain | ||||
|   win_reboot: | ||||
|     msg: "Joining the domain. Rebooting..." | ||||
|     pre_reboot_delay: 5 | ||||
|     reboot_timeout: 600 | ||||
|     post_reboot_delay: 60 | ||||
|  | ||||
| - name: Install Exchange Prereqs | ||||
|   win_command: powershell.exe .\\install-exchange.ps1 | ||||
|   args: | ||||
|     chdir: 'c:\vagrant\scripts' | ||||
|   register: exchange_prereqs | ||||
|   changed_when: "'A reboot is required to continue installation of exchange.' in exchange_prereqs.stdout" | ||||
|  | ||||
| - debug: msg="{{ exchange_prereqs.stdout_lines }}" | ||||
|  | ||||
| - name: Reboot After Installing Exchange PreReqs | ||||
|   win_reboot: | ||||
|     msg: "Exchange Prereqs installed. Rebooting..." | ||||
|     pre_reboot_delay: 5 | ||||
|     reboot_timeout: 600 | ||||
|     post_reboot_delay: 60 | ||||
|  | ||||
| - name: Download Exchange ISO and Mount It | ||||
|   win_shell: .\\install-exchange.ps1 | ||||
|   args: | ||||
|     chdir: 'c:\vagrant\scripts' | ||||
|   register: download_exchange_iso | ||||
|  | ||||
| - name: Prepare Schema | ||||
|   win_package: | ||||
|     path: F:\Setup.exe | ||||
|     arguments: >- | ||||
|       /IAcceptExchangeServerLicenseTerms | ||||
|       /PrepareSchema | ||||
|     product_id: '{CD981244-E9B8-405A-9026-6AEB9DCEF1F1}' | ||||
|   vars: | ||||
|     ansible_become: yes | ||||
|     ansible_become_method: runas | ||||
|     ansible_become_user: WINDOMAIN\vagrant | ||||
|     ansible_become_password: vagrant | ||||
|   register: prepare_schema | ||||
|  | ||||
| - name: Prepare AD | ||||
|   win_package: | ||||
|     path: F:\Setup.exe | ||||
|     arguments: >- | ||||
|       /IAcceptExchangeServerLicenseTerms | ||||
|       /PrepareAD | ||||
|       /OrganizationName: DetectionLab | ||||
|     product_id: '{CD981244-E9B8-405A-9026-6AEB9DCEF1F1}' | ||||
|   vars: | ||||
|     ansible_become: yes | ||||
|     ansible_become_method: runas | ||||
|     ansible_become_user: WINDOMAIN\vagrant | ||||
|     ansible_become_password: vagrant | ||||
|   register: prepare_ad | ||||
|  | ||||
| - name: Install Exchange | ||||
|   win_package: | ||||
|     path: F:\Setup.exe | ||||
|     arguments: >- | ||||
|       /IAcceptExchangeServerLicenseTerms | ||||
|       /Mode:Install | ||||
|       /Role:Mailbox | ||||
|     product_id: '{CD981244-E9B8-405A-9026-6AEB9DCEF1F1}' | ||||
|   vars: | ||||
|     ansible_become: yes | ||||
|     ansible_become_method: runas | ||||
|     ansible_become_user: WINDOMAIN\vagrant | ||||
|     ansible_become_password: vagrant | ||||
|   register: install_exchange | ||||
|  | ||||
| - name: Reboot after Exchange Installation | ||||
|   win_reboot: | ||||
|     msg: "Exchange installed. Rebooting..." | ||||
|     pre_reboot_delay: 5 | ||||
|     reboot_timeout: 600 | ||||
|     post_reboot_delay: 60 | ||||
|  | ||||
| - name: Clear Event Logs | ||||
|   win_shell: "wevtutil el | Select-String -notmatch \"Microsoft-Windows-LiveId\" | Foreach-Object {wevtutil cl \"$_\"}" | ||||
|  | ||||
| - name: Configure EXCHANGE with raw Commands | ||||
|   win_shell: "{{ item }}" | ||||
|   with_items: | ||||
|     - "wevtutil el | Select-String -notmatch \"Microsoft-Windows-LiveId\" | Foreach-Object {wevtutil cl \"$_\"}" | ||||
|     - "Set-SmbServerConfiguration -AuditSmb1Access $true -Force" | ||||
|  | ||||
|  | ||||
							
								
								
									
										3
									
								
								Addons/Exchange/Azure/Terraform/locals.tf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								Addons/Exchange/Azure/Terraform/locals.tf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| locals {   | ||||
|   exchange_url    = "https://${azurerm_public_ip.exchange-publicip.ip_address}" | ||||
| } | ||||
							
								
								
									
										81
									
								
								Addons/Exchange/Azure/Terraform/main.tf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								Addons/Exchange/Azure/Terraform/main.tf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,81 @@ | ||||
| resource "azurerm_virtual_machine" "exchange" { | ||||
|   name = "exchange.windomain.local" | ||||
|   location = var.region | ||||
|   resource_group_name  = azurerm_resource_group.detectionlab.name | ||||
|   network_interface_ids = [azurerm_network_interface.exchange-nic[count.index].id] | ||||
|   vm_size               = "Standard_D3_v2" | ||||
|  | ||||
|   delete_os_disk_on_termination = true | ||||
|  | ||||
|   storage_image_reference { | ||||
|     publisher = "MicrosoftWindowsServer" | ||||
|     offer     = "WindowsServer" | ||||
|     sku       = "2016-Datacenter" | ||||
|     version   = "latest" | ||||
|   } | ||||
|  | ||||
|   os_profile { | ||||
|     computer_name  = "exchange" | ||||
|     admin_username = "vagrant" | ||||
|     admin_password = "Vagrant123" | ||||
|     custom_data    = local.custom_data_content | ||||
|   } | ||||
|  | ||||
|   os_profile_windows_config { | ||||
|     provision_vm_agent        = true | ||||
|     enable_automatic_upgrades = false | ||||
|  | ||||
|     # Auto-Login's required to configure WinRM | ||||
|     additional_unattend_config { | ||||
|       pass         = "oobeSystem" | ||||
|       component    = "Microsoft-Windows-Shell-Setup" | ||||
|       setting_name = "AutoLogon" | ||||
|       content      = "<AutoLogon><Password><Value>Vagrant123</Value></Password><Enabled>true</Enabled><LogonCount>1</LogonCount><Username>vagrant</Username></AutoLogon>" | ||||
|     } | ||||
|  | ||||
|     # Unattend config is to enable basic auth in WinRM, required for the provisioner stage. | ||||
|     # https://github.com/terraform-providers/terraform-provider-azurerm/blob/master/examples/virtual-machines/provisioners/windows/files/FirstLogonCommands.xml | ||||
|     additional_unattend_config { | ||||
|       pass         = "oobeSystem" | ||||
|       component    = "Microsoft-Windows-Shell-Setup" | ||||
|       setting_name = "FirstLogonCommands" | ||||
|       content      = file("${path.module}/files/FirstLogonCommands.xml") | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   storage_os_disk { | ||||
|     name              = "OsDiskExchange" | ||||
|     caching           = "ReadWrite" | ||||
|     create_option     = "FromImage" | ||||
|     managed_disk_type = "Standard_LRS" | ||||
|   } | ||||
|  | ||||
|   tags = { | ||||
|     role = "exchange" | ||||
|   } | ||||
| } | ||||
|  | ||||
| resource "azurerm_network_interface" "exchange-nic" { | ||||
|   name = "exchange-nic" | ||||
|   location = var.region | ||||
|   resource_group_name  = azurerm_resource_group.detectionlab.name | ||||
|  | ||||
|   ip_configuration { | ||||
|     name                          = "myNicConfiguration" | ||||
|     subnet_id                     = azurerm_subnet.detectionlab-subnet.id | ||||
|     private_ip_address_allocation = "Static" | ||||
|     private_ip_address            = "192.168.38.106" | ||||
|     public_ip_address_id          = azurerm_public_ip.exchange-publicip[count.index].id | ||||
|   } | ||||
| } | ||||
|  | ||||
| resource "azurerm_public_ip" "exchange-publicip" { | ||||
|   name                = "exchange-public-ip" | ||||
|   location            = var.region | ||||
|   resource_group_name = azurerm_resource_group.detectionlab.name | ||||
|   allocation_method   = "Static" | ||||
|  | ||||
|   tags = { | ||||
|     role = "exchange" | ||||
|   } | ||||
| } | ||||
							
								
								
									
										7
									
								
								Addons/Exchange/Azure/Terraform/outputs.tf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								Addons/Exchange/Azure/Terraform/outputs.tf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| output "exchange_public_ip" { | ||||
|   value = azurerm_public_ip.exchange-publicip | ||||
| } | ||||
|  | ||||
| output "exchange_url" { | ||||
|   value = local.exchange_url | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Chris Long
					Chris Long