我正在尝试使用ansible创建azure Windows VM,同时我想安装jfrog cli或运行可以执行此操作的powershell脚本。
我有一本剧本,可以创建一个vm,创建一个vm扩展以及从中创建映像。但是我不知道如何在创建映像之前在该虚拟机中安装软件。
答案 0 :(得分:0)
如果您在工作中使用 azure Windows VM ,则可以将 .exe和.msi 格式的应用程序打包为 Chocolatey .nupkg格式 ,并在工件存储应用程序(如nexus)中托管一个巧克力裸子托管回购,您可以在其中推送和以后进行源安装您要使用 win_chocolatey ansible模块在这些VM中安装的这些 chocolatey .nupkg软件包。
示例任务以安装巧克力状软件包:
- name: "chocolatey task: install packages from internal choco nuget-hosted nexus repo"
win_chocolatey:
name: "{{ item.name }}"
version: "{{ item.version }}"
loop:
- { name: 'jdk8', version: '8.0.xxx' }
- { name: 'msbuildtools', version: 'xxx' }
- { name: 'SevenZip', version: 'xx' }
win_chocolatey ansible模块: https://docs.ansible.com/ansible/latest/modules/win_chocolatey_module.html
什么是巧克力?
Is is a framework to package applications which are in .exe or .msi formats into .nupkg
(nuget packages) which will have a installation script within the package and
when you run choco commands to install a certain application, it either get
chocolatey packages from opensource chocolatey gallery or for organization
purpose you might want to create custom package for network and security reasons.
巧克力文档: https://chocolatey.org/why-chocolatey
如何创建自定义/离线巧克力包? https://chocolatey.org/docs/how-to-create-custom-package-templates
基本Chocolatey命令:
choco install <package-name> --version <version> -y
->默认情况下从https://chocolatey.org/api/v2/
choco uninstall <package-name> -y
->卸载软件包。如果已安装多个版本的软件包,也可以使用--version选项
choco source add -n=<AnyName> -s="<URL-Internal-choco-repo>"
->在Windows机器上的巧克力源中添加内部由巧克力nuget托管的链接存储库
choco source list
->列出从中获取软件包的所有添加源
choco source remove -n="<NameOfSource>"
->要删除所有巧克力来源列表中的任何来源
巧克力命令: https://github.com/chocolatey/choco/wiki/CommandsSources