@installdoc/ansible-gas-station
Version:
An Ansible playbook that provisions your network with software from GitHub Awesome lists, developed with disaster recovery in mind ⛽🔥🤤
101 lines (85 loc) • 3.48 kB
YAML
- name: Ensure the hostname is correct
ansible.windows.win_command: 'Rename-Computer -NewName {{ hostname }}'
when: hostname is defined
# @action Ensures common configuration settings are applied
# Activates Windows 10 using the provided key
- name: Activate Windows 10
ansible.windows.win_command: 'cscript slmgr.vbs /ipk {{ windows_enterprise_key }}'
args:
chdir: C:\Windows\System32\
when: windows_activation_key is defined
- name: Install Windows updates
ansible.windows.win_updates:
category_names:
- CriticalUpdates
- SecurityUpdates
- UpdateRollups
state: installed
register: update
- name: Reboot if required
ansible.windows.win_reboot:
post_reboot_delay: 14 # TODO: Not sure if this is required, was at 140 initially which seemed a bit excessive
when: update.reboot_required
# @action Ensures common configuration settings are applied
# Update PowerShell Execution Policy
- name: Add override for Execution Policy for PowerShell profile
ansible.windows.win_shell: Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
register: pwsh_exec_policy
failed_when: (not (pwsh_exec_policy.rc == 1 and 'Windows PowerShell updated your execution policy successfully' in pwsh_exec_policy.stderr))
# @action Ensures common configuration settings are applied
# Configures Windows optional features
- name: Configure Windows optional features
ansible.windows.win_optional_feature:
include_parent: true
name: '{{ item.name | default(item) }}'
state: "{{ item.state | default('present') }}"
loop: '{{ windows_features | default([]) }}'
register: optional_features
- name: Determine whether or not a reboot is required
set_fact:
needs_reboot: "{{ optional_features | json_query('results[*].reboot_required') }}"
- name: Reboot if required
ansible.windows.win_reboot:
post_reboot_delay: 14
when: needs_reboot
- name: Remove unnecessary APPX packages
ansible.windows.win_shell: 'Get-AppxPackage -AllUsers -Name "{{ item }}" | Remove-AppxPackage -AllUsers -ErrorAction SilentlyContinue; \
Get-AppxProvisionedPackage -Online | where {$_.PackageName -like "{{ item }}"} | Remove-AppxProvisionedPackage \
-AllUsers -Online -ErrorAction SilentlyContinue;'
loop: '{{ windows_appx_removals | default([]) }}'
- name: Install APPX packages
debug:
msg: 'TODO: Figure out how to install APPX packages from the Microsoft Store'
loop: '{{ windows_appx_installs }}'
- name: Install git
chocolatey.chocolatey.win_chocolatey:
name: git
params: /GitAndUnixToolsOnPath /WindowsTerminal /NoShellIntegration /NoCredentialManager /SChannel
state: present
- name: Remove git start menu folder
vars:
shortcut_folder: Git
include_role:
name: professormanhattan.startmenu
# @action Ensures common configuration settings are applied
# Installs Bandizip on Windows Systems
- name: Install Bandizip
chocolatey.chocolatey.win_chocolatey:
name: bandizip
state: present
- name: Move Bandizip start menu shortcut to parent folder
vars:
shortcut_folder: Bandizip
shortcut_link: Bandizip
include_role:
name: professormanhattan.startmenu
# @action Ensures common configuration settings are applied
# Installs PuTTY on Windows Systems
- name: Install PuTTY
chocolatey.chocolatey.win_chocolatey:
name: putty
state: present
- name: Install Scoops
community.windows.win_scoop:
name: '{{ windows_scoop_packages }}'