--- # ── Phase 1: Mirantis Container Runtime (MCR) installation ──────────────── - name: Check if MCR (Docker) is already installed ansible.windows.win_shell: | $dockerCmd = Get-Command docker -ErrorAction SilentlyContinue if ($dockerCmd) { $version = (& docker --version 2>&1) Write-Output "MCR_INSTALLED:$version" exit 0 } exit 1 become: true become_method: ansible.builtin.runas become_user: SYSTEM register: __mcr_installed_check changed_when: false failed_when: false tags: - roles::windows_containers::install - name: Download Mirantis install script ansible.windows.win_get_url: url: "{{ windows_containers_mcr_install_script_url }}" dest: "{{ ansible_env.TEMP | default('C:\\Windows\\Temp') }}\\mcr-install.ps1" force: false become: true become_method: ansible.builtin.runas become_user: SYSTEM when: __mcr_installed_check.rc != 0 tags: - roles::windows_containers::install - name: Set execution policy for current process ansible.windows.win_shell: | Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force -Scope Process exit 0 become: true become_method: ansible.builtin.runas become_user: SYSTEM when: __mcr_installed_check.rc != 0 changed_when: false tags: - roles::windows_containers::install - name: Install Mirantis Container Runtime ansible.windows.win_shell: | & "{{ ansible_env.TEMP | default('C:\\Windows\\Temp') }}\\mcr-install.ps1" \ -Channel "{{ windows_containers_mcr_channel }}" \ -DockerVersion "{{ windows_containers_mcr_version }}" exit $LASTEXITCODE become: true become_method: ansible.builtin.runas become_user: SYSTEM register: __mcr_install_result changed_when: __mcr_install_result.rc == 0 when: __mcr_installed_check.rc != 0 retries: 3 delay: 30 tags: - roles::windows_containers::install - name: Clean up MCR install script ansible.windows.win_file: path: "{{ ansible_env.TEMP | default('C:\\Windows\\Temp') }}\\mcr-install.ps1" state: absent become: true become_method: ansible.builtin.runas become_user: SYSTEM when: __mcr_installed_check.rc != 0 tags: - roles::windows_containers::install - name: Disable MCR telemetry (optional) ansible.windows.win_copy: content: '{"features":{"telemetry": false}}' dest: "C:\\ProgramData\\docker\\config\\daemon.json" mode: "0644" become: true become_method: ansible.builtin.runas become_user: SYSTEM notify: Restart Docker service when: windows_containers_disable_telemetry | default(false) tags: - roles::windows_containers::install - name: Restart Docker service ansible.windows.win_shell: | Restart-Service -Name docker -Force -ErrorAction SilentlyContinue exit 0 become: true become_method: ansible.builtin.runas become_user: SYSTEM when: __mcr_installed_check.rc != 0 changed_when: false tags: - roles::windows_containers::install - name: Verify MCR (Docker) is running ansible.windows.win_shell: | $dockerdRunning = Get-Service -Name docker -ErrorAction SilentlyContinue if ($dockerdRunning -and $dockerdRunning.Status -eq 'Running') { $version = (& docker --version 2>&1) Write-Output "MCR_SERVICE_RUNNING:$version" exit 0 } Write-Error "Docker service is not running" exit 1 become: true become_method: ansible.builtin.runas become_user: SYSTEM register: __mcr_service_verify changed_when: false until: __mcr_service_verify.rc == 0 retries: 10 delay: 10 tags: - roles::windows_containers::install