我正在尝试使用Ansible安装.Net Framework 4.6.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
运行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
我尝试使用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
尝试运行批处理脚本来安装它,但没有运气:
start /wait c:\temp\dotNetFramework4.6.1.exe /q /norestart /log %TEMP%\dotNetFx4.6.1.log
是否有人使用Ansible成功安装.Net Framework 4.6.1?
任何人都可以共享安装它的任务/角色吗?
答案 0 :(得分:3)
我们通过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,则此命令可以卸载.NET。我只是在一个新鲜的流浪汉VM上运行它,而不是试图绕过它。
压缩该文件夹的内容,将其上传到内部主机或网络共享,然后使用您的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:
install命令中的参数很重要,否则安装程序将失败。您可以删除“/ 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)
答案 1 :(得分:3)
老问题,但希望这会对某人有所帮助:我一直坚持这个问题,并且想避免使用Chocolatey。我正在配置AWS Windows机器,结果我需要安装热修复KB2919355(需要KB2919442)。
安装两个热修复程序后安装工作,而以前安装.NET只会挂起。
- name: Download Hotfixes
win_get_url:
url: "{{ item.url }}"
dest: "C:/{{ item.kb }}.msu"
with_items:
- { kb: KB2919442, url: "https://download.microsoft.com/download/D/6/0/D60ED3E0-93A5-4505-8F6A-8D0A5DA16C8A/Windows8.1-KB2919442-x64.msu" }
- { kb: KB2919355, url: "https://download.microsoft.com/download/2/5/6/256CCCFB-5341-4A8D-A277-8A81B21A1E35/Windows8.1-KB2919355-x64.msu" }
- name: Install KB2919442 Hotfix
win_hotfix:
hotfix_kb: KB2919442
source: "C:/KB2919442.msu"
register: hotfix_KB2919442
- name: Install KB2919355 Hotfix
win_hotfix:
hotfix_kb: KB2919355
source: "C:/KB2919355.msu"
register: hotfix_KB2919355
- name: Remove Hotfix Downloads
win_file:
path: "C:/{{ item }}.msu"
state: absent
with_items:
- KB2919442
- KB2912355
- win_reboot:
when: hotfix_KB2919442.reboot_required or hotfix_KB2919355.reboot_required
- name: Enable .NET Windows features
win_feature:
name: as-net-framework, web-asp-net45
state: present
- name: Install .NET framework
win_package:
path: "https://download.microsoft.com/download/E/4/1/E4173890-A24A-4936-9FC9-AF930FE3FA40/NDP461-KB3102436-x86-x64-AllOS-ENU.exe"
product_id: "{BD6F5371-DAC1-30F0-9DDE-CAC6791E28C3}"
state: present
arguments: /q /norestart
答案 2 :(得分:2)
第一种方法是正确的,但您必须确定用于静默安装的控制台密钥
import {
AngularFire,
AngularFireAuth
} from 'angularfire2';
constructor(public af: AngularFire) {
this.af.auth.subscribe(auth => {
console.log(auth)
});
}
另一个问题,我无法解决的问题是win_package不支持自动product_id,这会打破幂等性,这一步每次都会运行。
答案 3 :(得分:1)
使用Chocolatey怎么样?它有DotNet4.6.1
个包,所以:
- win_chocolatey:
name: dotnet4.6.1
或者如果您更喜欢主持人接受的version,请添加version: 4.6.01055.001
。
答案 4 :(得分:0)
似乎问题出在WinRM上 有hotfix处理它,安装修补程序后一切正常。