2017-01-24 254 views
0

我正在嘗試使用Ansible來安裝.Net Framework 4.6.1,但直到現在我還沒有運氣。使用Ansible安裝.Net Framework 4.6.1

我已經試過這些方法:

  1. 運行win_package安裝它,但它只是掛起,直到無窮

    - name: Install Microsoft NET Framework 
        win_package: 
        path: "http://path/to/dotNetFramework4.6.1.exe" 
        product_id: '{BD6F5371-DAC1-30F0-9DDE-CAC6791E28C3}' 
        register: dotnetfx_exe 
    
  2. 運行PowerShell腳本進行安裝(第一個沒有按」 t工作和第二次堆棧溢出異常):

    Install-WindowsFeature Net-Framework-Core -source C:\temp\dotNetFramework4.6.1.exe 
    

    Start-Process -FilePath C:\temp\dotNetFramework4.6.1.exe -ArgumentList "/q /norestart" -Wait -Verb RunAs 
    
  3. 我試過用win_feature來安裝它,但它什麼都不做。

    - name: Install NET-Framework-Core 
        win_feature: 
        name: NET-Framework-Core 
        state: present 
        source: C:\temp\dotNetFramework4.6.1.exe 
        include_sub_features: no 
        include_management_tools: yes 
        register: result 
    
  4. 試圖運行一個批處理腳本來安裝它,但沒有運氣:

    start /wait c:\temp\dotNetFramework4.6.1.exe /q /norestart /log %TEMP%\dotNetFx4.6.1.log 
    

有沒有人成功安裝.Net框架4.6.1使用Ansible?

任何人都可以分享他們安裝它的任務/角色嗎?

回答

0

如何使用巧克力?它有DotNet4.6.1包,所以:

- win_chocolatey: 
    name: dotnet4.6.1 

或者如果你喜歡主持人接受的version,加version: 4.6.01055.001

+0

但巧克力味使用外部鏈接,和我有隻使用內部鏈接。有沒有辦法告訴巧克力使用JFrog Artifactory? – Adamba4

+0

@ Adamba4然後,你必須坐下來等待,直到有人引導你的手,因爲當OP回覆「but」時,這是我的寵兒之一,然後抱怨答案不符合他忘記指定的需要在問題中。 – techraf

+0

這就是我在嘗試使用巧克力安裝時所得到的: dotnet4.6.1未安裝。安裝期間發生錯誤:拋出了類型爲'System.OutOfMemoryException'的異常 – Adamba4

0

似乎問題出在WinRM上。
有一個處理它的hotfix,並且在安裝修補程序後,一切工作正常。

0

第一種方式是正確的,但你必須確定無聲控制檯按鍵安裝

- name: Install Microsoft NET Framework 
    win_package: 
    path: "http://path/to/dotNetFramework4.6.1.exe" 
    product_id: '{BD6F5371-DAC1-30F0-9DDE-CAC6791E28C3}' 
    register: dotnetfx_exe 
    arguments: /q /norestart 

其他問題,我無法修復是win_package不支持自動PRODUCT_ID,這是休息冪等性,這一步每次都運行。

1

我們通過Ansible調用Chocolatey來安裝.NET 4.6.1,但遇到了一些問題。相反,我重寫了我們的手冊以進行「本機」安裝。我想你遇到了與嘗試運行脫機安裝程序相同的問題。這導致我到你的文章和this thread。這是我必須做的才能讓它工作。

提取離線安裝程序的內容:

NDP461-KB3102436-x86-x64-AllOS-ENU.exe /s /x /b"C:\tmp\dotnet\dotnet461" /v"/qn" 

此命令可以卸載.NET如果已經安裝了它。我只是在一個新的流浪虛擬機上運行它,而不是試圖解決這個問題。

壓縮該文件夾的內容,將其上傳到內部主機或網絡共享,然後使用您的Playbook下載/解壓縮/運行它。

- name: Download Microsoft .NET Framework 4.6.1 installer 
    win_get_url: 
     url: http://www.path.to/package/dotnet461.zip 
     dest: C:\tmp\dotnet\dotnet461.zip 

    - name: Unzip Microsoft .NET Framework 4.6.1 installer 
    win_unzip: 
     src: C:\tmp\dotnet\dotnet461.zip 
     dest: C:\tmp\dotnet 
     rm: true 

    - name: Run Microsoft .NET Framework 4.6.1 installer 
    raw: C:\tmp\dotnet\dotnet461\Setup.exe /q /norestart /log C:\tmp\dotnet\dotnet461\log.txt /x86 /x64 /redist 
    register: dotnet_install 

    - name: Reboot as required by Microsoft .NET Framework 4.6.1 installer 
    win_reboot: 

安裝命令中的參數很重要,否則安裝程序將失敗。你也許可以刪除「/ log C:\ tmp \ dotnet \ dotnet461 \ log.txt」,但我會留給你測試一下:D

這也不是冪等的。安裝程序將每次執行。您可以通過將這些任務放在單獨的.yml文件中並根據註冊表檢查來執行條件包含來查看它是否已安裝。

像這樣:

- name: Check for current Microsoft .NET Framework 4 version 
    win_reg_stat: 
     path: HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full 
     name: Version 
    register: dotnet_version 

    - name: Install Microsoft .NET Framework 4.6.1 
    include: install_dotnet.yml 
    when: dotnet_version.value | version_compare('4.6.01', '<', strict=True)