FROM mcr.microsoft.com/windows/servercore:ltsc2022 # Specify this with --build-arg PW=SomePassword ARG PW=My=5APasswor # Set up cygwin with git and ansible as a bootstrap, and add to system default path RUN powershell wget -UseBasicParsing https://cygwin.com/setup-x86_64.exe -OutFile setup-x86_64.exe & \ setup-x86_64.exe --packages git,ansible --download --local-install --delete-orphans --site https://mirrors.kernel.org/sourceware/cygwin --local-package-dir c:\cygwin_packages --root C:\cygwin64 --wait --quiet-mode & \ C:\cygwin64\bin\git config --system core.autocrlf false & \ del setup-x86_64.exe & \ setx PATH "c:\cygwin64\bin;%PATH%" & \ mkdir c:\temp # Set up WinRM for the ansible connection RUN powershell wget -UseBasicParsing https://raw.githubusercontent.com/ansible/ansible/dd4c56e4d68664e4a50292aa19ea61b15c92287c/examples/scripts/ConfigureRemotingForAnsible.ps1 -OutFile ConfigureRemotingForAnsible.ps1 & \ PowerShell .\ConfigureRemotingForAnsible.ps1 -CertValidityDays 9999 & \ PowerShell .\ConfigureRemotingForAnsible.ps1 -EnableCredSSP & \ PowerShell .\ConfigureRemotingForAnsible.ps1 -ForceNewSSLCert & \ PowerShell .\ConfigureRemotingForAnsible.ps1 -SkipNetworkProfileCheck # Set up WinRM user, clone and run the playbook, then delete the user so it's not in any layer ENV TERM dumb RUN net user ansible %PW% /ADD & net localgroup "Administrators" ansible /ADD & net localgroup "Remote Management Users" ansible /ADD & \ C:\cygwin64\bin\git clone https://github.com/sxa/infrastructure -b windows_docker_fixes c:/infrastructure & \ sed -i -e 's/hosts: .*/hosts: localhost/' infrastructure/ansible/playbooks/AdoptOpenJDK_Windows_Playbook/main.yml & \ echo localhost ansible_connection=winrm > infrastructure/ansible/hosts & \ cd infrastructure\ansible & \ C:\cygwin64\bin\python3.7m.exe /usr/bin/ansible-playbook -e ansible_user=ansible -e ansible_password=%PW% -e git_sha=123456 -i hosts \ --skip-tags=adoptopenjdk,reboot,NTP_TIME,MSVS_2013,MSVS_2017,MSVS_2019 playbooks/AdoptOpenJDK_Windows_Playbook/main.yml & \ net user ansible /DELETE ENTRYPOINT ["C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\Common7\\Tools\\VsDevCmd.bat", "&&", "powershell.exe", "-NoLogo", "-ExecutionPolicy", "Bypass"]