2017-01-24 2 views
0

Я пытаюсь установить .NET Framework 4.6.1 с помощью Ansible, но до сих пор мне не повезло.Установите .Net Framework 4.6.1 с помощью Ansible

Я пробовал эти методы:

  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, чтобы установить его (первый Безразлично» т работы и второй броски стека переполнения исключение):

    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 Framework 4.6.1 с помощью анзибль?

Может ли кто-нибудь поделиться своей задачей/ролью, которая его устанавливает?

ответ

0

Как насчет использования шоколада? Он имеет DotNet4.6.1 пакет, так:

- win_chocolatey: 
    name: dotnet4.6.1 

или, если вы предпочитаете замедлителя принял version, добавить version: 4.6.01055.001.

+0

Но шоколадные используют внешние ссылки, и я должен использовать только внутренние ссылки. Есть ли способ сказать шоколадно использовать JFrog Artifactory? – Adamba4

+0

@ Adamba4 Тогда вам придется сидеть и ждать, пока кто-то приведет вас за руку, потому что это один из моих домашних животных, когда OP отвечает «но», а затем жалуется, что ответ не отвечает его потребностям, что он забыл указать в вопросе. – 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 и это ломается idempotency, Этот шаг выполняется каждый раз.

1

Мы использовали Chocolatey через Ansible для установки .NET 4.6.1, но столкнулись с некоторыми осложнениями с этим. Вместо этого я переписал нашу книгу, чтобы сделать «родную» установку. Я предполагаю, что вы столкнулись с теми же проблемами, что и я, пытаясь запустить автономный установщик. Это привело меня к вашему сообщению и this thread. Вот что я должен был сделать, чтобы заставить его работать.

Извлеките содержимое инсталлятора в автономном режиме:

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

Эта команда может удалить .NET, если она уже установлена. Я просто запустил его на новую бродячую виртуальную машину вместо того, чтобы попытаться обойти это.

Заполните содержимое этой папки, загрузите ее во внутренний хост или сетевой ресурс, а затем загрузите/разархивируйте/запустите ее с помощью своей учебной книги.

- 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) 
Смежные вопросы