Set up network interfaces and SSH for Windows hosts. We can’t gather facts before we know which remote shell to use, so first run a win_ping to determine if a given host is running Windows.
		
			
				
	
	
		
			35 lines
		
	
	
	
		
			900 B
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
	
		
			900 B
		
	
	
	
		
			YAML
		
	
	
	
	
	
| - include_tasks: interface.yml
 | |
|   loop: "{{ interfaces }}"
 | |
|   loop_control:
 | |
|     label: "{{ interface.name }}"
 | |
|     loop_var: interface
 | |
| 
 | |
| - name: Disable SSH password authentication
 | |
|   win_lineinfile:
 | |
|     path: c:\ProgramData\ssh\sshd_config
 | |
|     regexp: '^#?{{ item.key }}'
 | |
|     line: "{{ item.key }} {{ item.value }}"
 | |
|   loop:
 | |
|     - key: "PasswordAuthentication"
 | |
|       value: "no"
 | |
|     - key: "PermitRootLogin"
 | |
|       value: "prohibit-password"
 | |
|   notify: restart sshd
 | |
| 
 | |
| - name: Set default shell to powershell
 | |
|   win_regedit:
 | |
|     path: HKLM:\SOFTWARE\OpenSSH
 | |
|     name: DefaultShell
 | |
|     data: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
 | |
|   notify: restart sshd
 | |
| 
 | |
| - name: Set authorized SSH keys
 | |
|   win_copy:
 | |
|     dest: C:\ProgramData\ssh\administrators_authorized_keys
 | |
|     content: "{{ ssh_keys | join('\n') }}"
 | |
| 
 | |
| - name: Enable ssh
 | |
|   win_service:
 | |
|     name: sshd
 | |
|     start_mode: auto
 | |
|     state: started
 |