Merge pull request #561 from juju4/devel
Azure/Ansible: improve idempotency (2)
This commit is contained in:
@@ -1,7 +1,12 @@
|
|||||||
---
|
---
|
||||||
|
|
||||||
- name: Set DNS Address
|
- name: Set DNS Address
|
||||||
win_shell: "Set-DnsClientServerAddress -InterfaceAlias Ethernet -ServerAddresses 127.0.0.1,8.8.8.8"
|
win_dns_client:
|
||||||
|
adapter_names: '*'
|
||||||
|
ipv4_addresses:
|
||||||
|
- 127.0.0.1
|
||||||
|
- 8.8.8.8
|
||||||
|
log_path: C:\dns_log.txt
|
||||||
|
|
||||||
- name: Install git
|
- name: Install git
|
||||||
win_chocolatey:
|
win_chocolatey:
|
||||||
@@ -33,6 +38,8 @@
|
|||||||
- Users
|
- Users
|
||||||
- Administrators
|
- Administrators
|
||||||
password_never_expires: yes
|
password_never_expires: yes
|
||||||
|
# Fail after domain creation: Failed to remove Domain Users: Exception calling \"Remove\" with \"1\" argument(s): \"This operation is not allowed on this special group.
|
||||||
|
ignore_errors: true
|
||||||
|
|
||||||
- name: Create the Domain
|
- name: Create the Domain
|
||||||
win_shell: .\\provision.ps1
|
win_shell: .\\provision.ps1
|
||||||
@@ -47,6 +54,7 @@
|
|||||||
pre_reboot_delay: 15
|
pre_reboot_delay: 15
|
||||||
reboot_timeout: 600
|
reboot_timeout: 600
|
||||||
post_reboot_delay: 60
|
post_reboot_delay: 60
|
||||||
|
when: domain_creation.changed
|
||||||
|
|
||||||
- name: Configure OU
|
- name: Configure OU
|
||||||
win_shell: .\\configure-ou.ps1
|
win_shell: .\\configure-ou.ps1
|
||||||
@@ -60,6 +68,7 @@
|
|||||||
ansible_become_password: vagrant
|
ansible_become_password: vagrant
|
||||||
ansible_become_flags: logon_type=new_credentials logon_flags=netcredentials_only
|
ansible_become_flags: logon_type=new_credentials logon_flags=netcredentials_only
|
||||||
failed_when: "'Exception' in ou_creation.stderr"
|
failed_when: "'Exception' in ou_creation.stderr"
|
||||||
|
changed_when: "'already exists. Moving On.' not in ou_creation.stdout"
|
||||||
|
|
||||||
- debug: msg="{{ ou_creation.stdout_lines }}"
|
- debug: msg="{{ ou_creation.stdout_lines }}"
|
||||||
|
|
||||||
@@ -75,8 +84,10 @@
|
|||||||
ansible_become_password: vagrant
|
ansible_become_password: vagrant
|
||||||
ansible_become_flags: logon_type=new_credentials logon_flags=netcredentials_only
|
ansible_become_flags: logon_type=new_credentials logon_flags=netcredentials_only
|
||||||
failed_when: "'Exception' in wef_gpo.stderr"
|
failed_when: "'Exception' in wef_gpo.stderr"
|
||||||
|
changed_when: "' already linked on ' not in wef_gpo.stdout"
|
||||||
|
|
||||||
- debug: msg="{{ wef_gpo.stdout_lines }}"
|
- debug: msg="{{ wef_gpo.stdout_lines }}"
|
||||||
|
when: wef_gpo.stdout_lines is defined
|
||||||
|
|
||||||
- name: Configure Powershell Logging GPO
|
- name: Configure Powershell Logging GPO
|
||||||
win_shell: .\\configure-powershelllogging.ps1
|
win_shell: .\\configure-powershelllogging.ps1
|
||||||
@@ -90,8 +101,10 @@
|
|||||||
ansible_become_password: vagrant
|
ansible_become_password: vagrant
|
||||||
ansible_become_flags: logon_type=new_credentials logon_flags=netcredentials_only
|
ansible_become_flags: logon_type=new_credentials logon_flags=netcredentials_only
|
||||||
failed_when: "'Exception' in powershell_gpo.stderr"
|
failed_when: "'Exception' in powershell_gpo.stderr"
|
||||||
|
changed_when: "' already linked on ' not in wef_gpo.stdout"
|
||||||
|
|
||||||
- debug: msg="{{ powershell_gpo.stdout_lines }}"
|
- debug: msg="{{ powershell_gpo.stdout_lines }}"
|
||||||
|
when: powershell_gpo.stdout_lines is defined
|
||||||
|
|
||||||
- name: Configure Auditing Policy GPO
|
- name: Configure Auditing Policy GPO
|
||||||
win_shell: .\\configure-AuditingPolicyGPOs.ps1
|
win_shell: .\\configure-AuditingPolicyGPOs.ps1
|
||||||
@@ -105,8 +118,10 @@
|
|||||||
ansible_become_password: vagrant
|
ansible_become_password: vagrant
|
||||||
ansible_become_flags: logon_type=new_credentials logon_flags=netcredentials_only
|
ansible_become_flags: logon_type=new_credentials logon_flags=netcredentials_only
|
||||||
failed_when: "'Exception' in audit_policy.stderr"
|
failed_when: "'Exception' in audit_policy.stderr"
|
||||||
|
changed_when: "' already linked on ' not in audit_policy.stdout"
|
||||||
|
|
||||||
- debug: msg="{{ audit_policy.stdout_lines }}"
|
- debug: msg="{{ audit_policy.stdout_lines }}"
|
||||||
|
when: audit_policy.stdout_lines is defined
|
||||||
|
|
||||||
- name: Disable Windows Defender GPO
|
- name: Disable Windows Defender GPO
|
||||||
win_shell: .\\configure-disable-windows-defender-gpo.ps1
|
win_shell: .\\configure-disable-windows-defender-gpo.ps1
|
||||||
@@ -120,6 +135,7 @@
|
|||||||
ansible_become_password: vagrant
|
ansible_become_password: vagrant
|
||||||
ansible_become_flags: logon_type=new_credentials logon_flags=netcredentials_only
|
ansible_become_flags: logon_type=new_credentials logon_flags=netcredentials_only
|
||||||
failed_when: "'Exception' in disable_win_def.stderr"
|
failed_when: "'Exception' in disable_win_def.stderr"
|
||||||
|
changed_when: "' already linked at ' not in disable_win_def.stdout"
|
||||||
|
|
||||||
- debug: msg="{{ disable_win_def.stdout_lines }}"
|
- debug: msg="{{ disable_win_def.stdout_lines }}"
|
||||||
|
|
||||||
@@ -135,8 +151,10 @@
|
|||||||
ansible_become_password: vagrant
|
ansible_become_password: vagrant
|
||||||
ansible_become_flags: logon_type=new_credentials logon_flags=netcredentials_only
|
ansible_become_flags: logon_type=new_credentials logon_flags=netcredentials_only
|
||||||
failed_when: "'Exception' in rdp_gpo.stderr"
|
failed_when: "'Exception' in rdp_gpo.stderr"
|
||||||
|
changed_when: "' already linked at ' not in rdp_gpo.stdout"
|
||||||
|
|
||||||
- debug: msg="{{ rdp_gpo.stdout_lines }}"
|
- debug: msg="{{ rdp_gpo.stdout_lines }}"
|
||||||
|
when: rdp_gpo.stdout_lines is defined
|
||||||
|
|
||||||
- name: Configure DC with raw Commands
|
- name: Configure DC with raw Commands
|
||||||
win_shell: "{{ item }}"
|
win_shell: "{{ item }}"
|
||||||
|
|||||||
@@ -1,7 +1,12 @@
|
|||||||
---
|
---
|
||||||
# This needs to be made idempodent
|
|
||||||
- name: Set HostOnly DNS Address
|
- name: Set HostOnly DNS Address
|
||||||
win_shell: "Set-DnsClientServerAddress -InterfaceAlias Ethernet -ServerAddresses 192.168.38.102,8.8.8.8"
|
win_dns_client:
|
||||||
|
adapter_names: '*'
|
||||||
|
ipv4_addresses:
|
||||||
|
- 192.168.38.102
|
||||||
|
- 8.8.8.8
|
||||||
|
log_path: C:\dns_log.txt
|
||||||
|
|
||||||
- name: Install git
|
- name: Install git
|
||||||
win_chocolatey:
|
win_chocolatey:
|
||||||
@@ -48,8 +53,20 @@
|
|||||||
dest: "C:\\Users\\vagrant\\AppData\\Local\\Temp\\Microsoft ATA 1.9.iso"
|
dest: "C:\\Users\\vagrant\\AppData\\Local\\Temp\\Microsoft ATA 1.9.iso"
|
||||||
timeout: 3600
|
timeout: 3600
|
||||||
|
|
||||||
- name: Clear Event Logs
|
- name: Check if DetectionLab Clear Event Logs has been done
|
||||||
win_shell: "wevtutil el | Select-String -notmatch \"Microsoft-Windows-LiveId\" | Foreach-Object {wevtutil cl \"$_\"}"
|
win_stat:
|
||||||
|
path: 'c:\Windows\.detectionlab_clear_done'
|
||||||
|
register: clearevt
|
||||||
|
|
||||||
|
- block:
|
||||||
|
- name: Clear Event Logs
|
||||||
|
win_shell: "wevtutil el | Select-String -notmatch \"Microsoft-Windows-LiveId\" | Foreach-Object {wevtutil cl \"$_\"}"
|
||||||
|
|
||||||
|
- name: Add marker for DetectionLab Clear Event
|
||||||
|
win_file:
|
||||||
|
path: 'c:\Windows\.detectionlab_clear_done'
|
||||||
|
state: touch
|
||||||
|
when: not clearevt.stat.exists
|
||||||
|
|
||||||
- name: Downloading the Palantir WEF Configuration
|
- name: Downloading the Palantir WEF Configuration
|
||||||
win_shell: ".\\download_palantir_wef.ps1"
|
win_shell: ".\\download_palantir_wef.ps1"
|
||||||
@@ -95,10 +112,12 @@
|
|||||||
win_shell: ".\\configure-pslogstranscriptsshare.ps1"
|
win_shell: ".\\configure-pslogstranscriptsshare.ps1"
|
||||||
args:
|
args:
|
||||||
chdir: 'c:\vagrant\scripts'
|
chdir: 'c:\vagrant\scripts'
|
||||||
|
creates: c:\pslogs
|
||||||
register: pstranscriptshare
|
register: pstranscriptshare
|
||||||
failed_when: "'Exception' in pstranscriptshare.stdout"
|
failed_when: "'Exception' in pstranscriptshare.stdout"
|
||||||
|
|
||||||
- debug: msg="{{ pstranscriptshare.stdout_lines }}"
|
- debug: msg="{{ pstranscriptshare.stdout_lines }}"
|
||||||
|
when: pstranscriptshare.stdout_lines is defined
|
||||||
|
|
||||||
- name: Installing the EVTX Event Samples
|
- name: Installing the EVTX Event Samples
|
||||||
win_shell: ".\\install-evtx-attack-samples.ps1"
|
win_shell: ".\\install-evtx-attack-samples.ps1"
|
||||||
|
|||||||
@@ -1,6 +1,11 @@
|
|||||||
---
|
---
|
||||||
- name: Set HostOnly DNS Address
|
- name: Set HostOnly DNS Address
|
||||||
win_shell: "Set-DnsClientServerAddress -InterfaceAlias Ethernet -ServerAddresses 192.168.38.102,8.8.8.8"
|
win_dns_client:
|
||||||
|
adapter_names: '*'
|
||||||
|
ipv4_addresses:
|
||||||
|
- 192.168.38.102
|
||||||
|
- 8.8.8.8
|
||||||
|
log_path: C:\dns_log.txt
|
||||||
|
|
||||||
- name: Install git
|
- name: Install git
|
||||||
win_chocolatey:
|
win_chocolatey:
|
||||||
@@ -50,8 +55,20 @@
|
|||||||
post_reboot_delay: 60
|
post_reboot_delay: 60
|
||||||
when: win10_join_domain.changed
|
when: win10_join_domain.changed
|
||||||
|
|
||||||
- name: Clear Event Logs
|
- name: Check if DetectionLab Clear Event Logs has been done
|
||||||
win_shell: "wevtutil el | Select-String -notmatch \"Microsoft-Windows-LiveId\" | Foreach-Object {wevtutil cl \"$_\"}"
|
win_stat:
|
||||||
|
path: 'c:\Windows\.detectionlab_clear_done'
|
||||||
|
register: clearevt
|
||||||
|
|
||||||
|
- block:
|
||||||
|
- name: Clear Event Logs
|
||||||
|
win_shell: "wevtutil el | Select-String -notmatch \"Microsoft-Windows-LiveId\" | Foreach-Object {wevtutil cl \"$_\"}"
|
||||||
|
|
||||||
|
- name: Add marker for DetectionLab Clear Event
|
||||||
|
win_file:
|
||||||
|
path: 'c:\Windows\.detectionlab_clear_done'
|
||||||
|
state: touch
|
||||||
|
when: not clearevt.stat.exists
|
||||||
|
|
||||||
- name: Install Classic Shell with Chocolatey
|
- name: Install Classic Shell with Chocolatey
|
||||||
win_chocolatey:
|
win_chocolatey:
|
||||||
@@ -60,12 +77,19 @@
|
|||||||
state: present
|
state: present
|
||||||
install_args: "ADDLOCAL=ClassicStartMenu"
|
install_args: "ADDLOCAL=ClassicStartMenu"
|
||||||
|
|
||||||
- name: Import ClassicShell config
|
- name: Check if DetectionLab Menu Install has been done
|
||||||
win_shell: |
|
win_stat:
|
||||||
"C:\Program Files\Classic Shell\ClassicStartMenu.exe -xml c:\vagrant\resources\windows\MenuSettings.xml"
|
path: 'c:\Program Files\Classic Shell\.menu_install_done'
|
||||||
regedit /s c:\vagrant\resources\windows\MenuStyle_Default_Win7.reg
|
register: menu_install
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- block:
|
||||||
|
- name: Import ClassicShell config
|
||||||
|
win_shell: |
|
||||||
|
"C:\Program Files\Classic Shell\ClassicStartMenu.exe -xml c:\vagrant\resources\windows\MenuSettings.xml"
|
||||||
|
regedit /s c:\vagrant\resources\windows\MenuStyle_Default_Win7.reg
|
||||||
|
|
||||||
|
- name: Add marker for DetectionLab Menu install
|
||||||
|
win_file:
|
||||||
|
path: 'c:\Program Files\Classic Shell\.menu_install_done'
|
||||||
|
state: touch
|
||||||
|
when: not menu_install.stat.exists
|
||||||
|
|||||||
Reference in New Issue
Block a user