106 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
		
		
			
		
	
	
			106 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| 
								 | 
							
								# Copyright 2020 The Kubernetes Authors.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Licensed under the Apache License, Version 2.0 (the "License");
							 | 
						||
| 
								 | 
							
								# you may not use this file except in compliance with the License.
							 | 
						||
| 
								 | 
							
								# You may obtain a copy of the License at
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# http://www.apache.org/licenses/LICENSE-2.0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Unless required by applicable law or agreed to in writing, software
							 | 
						||
| 
								 | 
							
								# distributed under the License is distributed on an "AS IS" BASIS,
							 | 
						||
| 
								 | 
							
								# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
							 | 
						||
| 
								 | 
							
								# See the License for the specific language governing permissions and
							 | 
						||
| 
								 | 
							
								# limitations under the License.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								- hosts: all
							 | 
						||
| 
								 | 
							
								  vars:
							 | 
						||
| 
								 | 
							
								    node_custom_roles_pre: ""
							 | 
						||
| 
								 | 
							
								    node_custom_roles_post: ""
							 | 
						||
| 
								 | 
							
								    custom_role_names: ""
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  tasks:
							 | 
						||
| 
								 | 
							
								    - name: Check if cloudbase-init url is set
							 | 
						||
| 
								 | 
							
								      set_fact:
							 | 
						||
| 
								 | 
							
								        install_cloudbase_init: '{{ true if (cloudbase_init_url is defined) and (cloudbase_init_url|length > 0) else false }}'
							 | 
						||
| 
								 | 
							
								    - name: Check if wins url is set
							 | 
						||
| 
								 | 
							
								      set_fact:
							 | 
						||
| 
								 | 
							
								        use_wins: '{{ true if (wins_url is defined) and (wins_url|length > 0) else false }}'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    # https://docs.ansible.com/ansible/latest/user_guide/windows_performance.html
							 | 
						||
| 
								 | 
							
								    - name: Optimise powershell
							 | 
						||
| 
								 | 
							
								      win_shell: |
							 | 
						||
| 
								 | 
							
								        function Optimize-PowershellAssemblies {
							 | 
						||
| 
								 | 
							
								          # NGEN powershell assembly, improves startup time of powershell by 10x
							 | 
						||
| 
								 | 
							
								          $old_path = $env:path
							 | 
						||
| 
								 | 
							
								          try {
							 | 
						||
| 
								 | 
							
								            $env:path = [Runtime.InteropServices.RuntimeEnvironment]::GetRuntimeDirectory()
							 | 
						||
| 
								 | 
							
								            [AppDomain]::CurrentDomain.GetAssemblies() | % {
							 | 
						||
| 
								 | 
							
								              if (! $_.location) {continue}
							 | 
						||
| 
								 | 
							
								              $Name = Split-Path $_.location -leaf
							 | 
						||
| 
								 | 
							
								              if ($Name.startswith("Microsoft.PowerShell.")) {
							 | 
						||
| 
								 | 
							
								                Write-Progress -Activity "Native Image Installation" -Status "$name"
							 | 
						||
| 
								 | 
							
								                ngen install $_.location | % {"`t$_"}
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          } finally {
							 | 
						||
| 
								 | 
							
								            $env:path = $old_path
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        Optimize-PowershellAssemblies
							 | 
						||
| 
								 | 
							
								      become: yes
							 | 
						||
| 
								 | 
							
								      become_method: runas
							 | 
						||
| 
								 | 
							
								      become_user: SYSTEM
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    - name: Get Install Drive
							 | 
						||
| 
								 | 
							
								      win_shell: $env:SYSTEMDRIVE
							 | 
						||
| 
								 | 
							
								      register: systemdrive
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    - name: Get Program Files Directory
							 | 
						||
| 
								 | 
							
								      win_shell: $env:ProgramFiles
							 | 
						||
| 
								 | 
							
								      register: programfiles
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    - name: Get All Users profile path
							 | 
						||
| 
								 | 
							
								      win_shell: $env:ALLUSERSPROFILE.Replace("\", "\\")
							 | 
						||
| 
								 | 
							
								      register: alluserprofile
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    - name: Get TEMP Directory
							 | 
						||
| 
								 | 
							
								      win_shell: $env:TEMP
							 | 
						||
| 
								 | 
							
								      register: tempdir
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    - include_role:
							 | 
						||
| 
								 | 
							
								        name: "{{ role }}"
							 | 
						||
| 
								 | 
							
								      loop: "{{ node_custom_roles_pre.split() }}"
							 | 
						||
| 
								 | 
							
								      loop_control:
							 | 
						||
| 
								 | 
							
								        loop_var: role
							 | 
						||
| 
								 | 
							
								      when: node_custom_roles_pre != ""
							 | 
						||
| 
								 | 
							
								    - include_role:
							 | 
						||
| 
								 | 
							
								        name: systemprep
							 | 
						||
| 
								 | 
							
								    - include_role:
							 | 
						||
| 
								 | 
							
								        name: cloudbase-init
							 | 
						||
| 
								 | 
							
								      when: install_cloudbase_init
							 | 
						||
| 
								 | 
							
								    - include_role:
							 | 
						||
| 
								 | 
							
								        name: providers
							 | 
						||
| 
								 | 
							
								    - include_role:
							 | 
						||
| 
								 | 
							
								        name: runtimes
							 | 
						||
| 
								 | 
							
								    - include_role:
							 | 
						||
| 
								 | 
							
								        name: kubernetes
							 | 
						||
| 
								 | 
							
								    - include_role:
							 | 
						||
| 
								 | 
							
								        name: gmsa
							 | 
						||
| 
								 | 
							
								    - include_role:
							 | 
						||
| 
								 | 
							
								        name: load_additional_components
							 | 
						||
| 
								 | 
							
								      when: load_additional_components | bool
							 | 
						||
| 
								 | 
							
								    - include_role:
							 | 
						||
| 
								 | 
							
								        name: debug
							 | 
						||
| 
								 | 
							
								    - include_role:
							 | 
						||
| 
								 | 
							
								        name: "{{ role }}"
							 | 
						||
| 
								 | 
							
								      loop: "{{ custom_role_names.split() + node_custom_roles_post.split() }}"
							 | 
						||
| 
								 | 
							
								      loop_control:
							 | 
						||
| 
								 | 
							
								        loop_var: role
							 | 
						||
| 
								 | 
							
								      when: custom_role_names != "" or node_custom_roles_post != ""
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  environment:
							 | 
						||
| 
								 | 
							
								    HTTP_PROXY: "{{ http_proxy | default('') }}"
							 | 
						||
| 
								 | 
							
								    HTTPS_PROXY: "{{ https_proxy | default('') }}"
							 | 
						||
| 
								 | 
							
								    NO_PROXY: "{{ no_proxy | default('') }}"
							 |