windows下使用salt安装软件

https://docs.saltstack.com/en/latest/topics/windows/windows-package-manager.html

可以看官网文档,本人英文差,翻译不好,谅解

在2015.8.0及更高版本中,Windows Software Repository缓存是在Salt Minion上编译的

SaltStack Windows软件资源库提供了一个软件包管理器和软件资源库,类似于Linux上的yum和apt提供的资源库。该存储库可以使用远程Windows系统上的安装程序来安装软件。

In many senses, the operation is similar to that of the other package managers salt is aware of:

the pkg.installed and similar states work on Windows.

the pkg.install and similar module functions work on Windows.

和yum的区别

1,存储库元数据(SLS文件)通过salt或git托管。

2,软件包可以从salt仓库,git仓库或http(s)或ftp URL下载。

3,包之间的依赖关系需要手动管理。

使用之前的要求是:GitPython 0.3或更高版本,或者在Salt mast上安装libgit 0.20.0或更高版本的pygit2 0.20.3。Windows软件包定义是使用Git下载和更新的。

默认情况下salt不会进行分发用于安装Windows软件包的SLS文件,需要运行以下命令以初始化您的Salt主机上的存储库:

salt-run winrepo.update_git_repos

SYNC REPO TO WINDOWS MINIONS

Run pkg.refresh_db on each of your Windows minions to synchronize the package repository.

salt -G‘os : windows‘pkg.refresh_db

接下来就可以安装windows软件

显示已安装的软件包      salt -G‘os : windows‘pkg.list_pkgs

您可以使用Salt pkg模块查询软件包的可用版本    salt winminion pkg.list_available firefox

安装最新版本的Firefox salt winminion pkg.install‘firefox ‘

卸载WINDOWS软件

使用pkg模块卸载软件

salt winminion pkg.remove firefox
salt winminion pkg.purge firefox

Note

pkg.purge just executes pkg.remove on Windows. At some point in the future pkg.purge may direct the installer to remove all configs and settings for software packages that support that option

存储库位置

Salt维护SLS文件的存储库来安装大量的Windows软件包:

默认情况下,这些存储库被镜像到/srv/salt/win/repo-ng 和/srv/salt/win/repo

通过设置winrepo_dir_ngwinrepo_dir选项,可以在主配置文件中更改此位置 。

MAINTAINING WINDOWS REPO DEFINITIONS IN GIT REPOSITORIES

可以托管在一个或多个Git存储库中,默认存储库由SaltStack托管在GitHub上。这些包括各种开源软件项目的软件定义文件。这些软件定义文件是.sls文件。有两个默认的存储库:salt-winreposalt-winrepo-ngsalt-winrepo 包含旧版本(旧版本2015.8.0)的软件定义文件。salt-winrepo-ng是为更新的奴才(2015.8.0和更新)。

每个软件定义文件都包含salt在安装该软件所需的所有信息,包括安装程序文件的HTTP或FTP位置,用于静默安装的所需命令等, Anyone is welcome to send a pull request to this repo to add new package definitions. The repos can be browsed here: salt-winrepo salt-winrepo-ng

Note

The newer software definition files are run through the salt‘s parser which allows for the use of jinja.

通过修改或扩展winrepo_remotes和 winrepo_remotes_ng选项,配置主服务器可以搜索包定义的那些git存储库。

Important

winrepo_remotes was called win_gitrepos in Salt versions earlier than 2015.8.0

软件包定义通过运行winrepo.update_git_reposrunner 从online存储库中取出 。该命令在主服务器上运行:

  salt-run winrepo.update_git_repos

This will pull down the software definition files for older minions (salt-winrepo) and new minions (salt-winrepo-ng). They are stored in the file_roots under win/repo/salt-winrepo andwin/repo-ng/salt-winrepo-ng respectively.

重要

如果您有自定义的软件定义文件,而这些软件定义文件不是在版本库中维护的,那么应该将这些文件存储在win/repo较旧的版本和 win/repo-ng较新版本的版本中。这样做的原因是,内容win/repo/salt-winrepowin/repo-ng/salt-winrepo-ng在每次运行时清除winrepo.update_git_repos

此外,当您运行winrepo.genrepopkg.refresh_db下的全部内容win/repowin/repo-ng,包括所有子目录,用于创建msgpack文件

The next step (if you have older minions) is to create the msgpack file for the repo (winrepo.p). This is done by running the winrepo.genrepo runner. This is also run on the master:

salt-run winrepo.genrepo

Note

If you have only 2015.8.0 and newer minions, you no longer need to run salt-run winrepo.genrepo on the master.

最后,您需要通过运行该pkg.refresh_db命令来刷新minion数据库 。这也在master上运行:

salt ‘*‘ pkg.refresh_db

On older minions (older than 2015.8.0) this will copy the winrepo.p file down to the minion. On newer minions (2015.8.0 and newer) this will copy all the software definition files (.sls) down to the minion and then create the msgpack file (winrepo.p) locally. The reason this is done locally is because the jinja needs to be parsed using the minion‘s grains.

每次在master服务器上修改软件定义文件时,无论是通过运行,修改现有文件,还是通过创建自己的文件,都需要刷新minion上的数据库, For older minions, that means running salt-run winrepo.genrepo and thensalt ‘*‘ pkg.refresh_db. For newer minions (2015.8.0 and newer) it is just salt ‘*‘ pkg.refresh_db.

注意

如果这个winrepo.genrepo或者pkg.refresh_db失败了,那么在一个软件定义文件中,这可能是一个jinja 问题。这将导致操作停止。您需要修复语法,才能成功创建msgpack文件。

要禁用其中一个repo,请将其设置[]为主配置中的空白列表。例如,要禁用winrepo_remotes在主配置文件中设置以下内容:winrepo_remotes:[]

创建一个包定义SLS文件

包定义文件是一个yaml文件,其中包含使用salt安装一个软件所需的所有信息。它定义了有关软件包的信息,包括版本,全名,安装程序和卸载程序所需的标志,是否使用Windows任务计划程序安装软件包,以及如何查找安装软件包等。

看看Firefox的这个例子:

firefox:
  ‘17.0.1‘:
    installer: ‘salt://win/repo/firefox/English/Firefox Setup 17.0.1.exe‘
    full_name: Mozilla Firefox 17.0.1 (x86 en-US)
    locale: en_US
    reboot: False
    install_flags: ‘-ms‘
    uninstaller: ‘%ProgramFiles(x86)%/Mozilla Firefox/uninstall/helper.exe‘
    uninstall_flags: ‘/S‘
  ‘16.0.2‘:
    installer: ‘salt://win/repo/firefox/English/Firefox Setup 16.0.2.exe‘
    full_name: Mozilla Firefox 16.0.2 (x86 en-US)
    locale: en_US
    reboot: False
    install_flags: ‘-ms‘
    uninstaller: ‘%ProgramFiles(x86)%/Mozilla Firefox/uninstall/helper.exe‘
    uninstall_flags: ‘/S‘
  ‘15.0.1‘:
    installer: ‘salt://win/repo/firefox/English/Firefox Setup 15.0.1.exe‘
    full_name: Mozilla Firefox 15.0.1 (x86 en-US)
    locale: en_US
    reboot: False
    install_flags: ‘-ms‘
    uninstaller: ‘%ProgramFiles(x86)%/Mozilla Firefox/uninstall/helper.exe‘
    uninstall_flags: ‘/S‘

每个软件定义文件都以该软件的软件包名称开头。如上例所示firefox。下一行缩进两个空格,并包含要定义的版本。如上例所示,软件定义文件可以为同一个软件定义多个版本。该版本后面的行缩进了两个空格,并包含安装该软件包所需的全部信息。

警告

软件包名称和full_name软件存储库中的所有其他软件包必须是唯一的。

版本行是要安装的软件包的版本。当您需要安装某个软件的特定版本时使用它。

警告

版本必须用引号括起来,否则yaml解析器会删除尾随的零。

 

原文地址:https://www.cnblogs.com/xiaofeng0510/p/8351143.html

时间: 2024-12-14 18:13:26

windows下使用salt安装软件的相关文章

Windows下 VM12虚拟机安装OS X 10.11 和VM TOOLS

Windows下虚拟机安装Mac OS X —– VMware Workstation12安装Mac OS X 10.11 本文即将介绍WIN虚拟MAC的教程.完整详细教程(包含安装中的一些问题) [并且适用其他mac os x版本] Windows下 VM12虚拟机安装OS X 10.11(详细教程) (图挂了的话,请点击此处.本人在百度发的) 工具/原料 Mac OS X 10.11 镜像文件(链接:http://pan.baidu.com/s/1pL8HE59 密码:cq4d) unloc

Python: Windows下pip的安装及简单应用

pip是一个用来管理和下载Python包的软件.通过pip,可以很容易就联网下载并安装需要的Python包到正确的位置,是一个很有用的软件. 由于自学的Python,刚开始需要下载第三方包的时候,总是被各种格式搞得头大.询问别人,别人就告诉个pip的命令,都说用这个就很方便就可以下载安装的.当时完全不知所云啊,因为看的Python入门那本书里压根没提过pip这个玩意.于是就百度了一下,终于知道了pip的基本用法. 写下此文,一方面是自己做个整理笔记,以备以后查看.另一方面,也希望有的初学Pyth

[Redis]windows下redis的安装和启动

官方的下载地址是: http://redis.io/download 在win64一栏中可以看到redis原本是没有windows版本的,windows版本是Microsoft Open Tech团队开的 给出了一个github的链接地址: https://github.com/MSOpenTech/redis 下载: 在https://github.com/MSOpenTech/redis  页面的右下角有  Download Zip的字样,点击之后就可以下载源码的zip包了. 然后就是解压:

windows下Emacs的安装与配置

windows下Emacs的安装与配置 1.下载到这个网址可以下载到Emacs的windows版本:http://ftp.gnu.org/pub/gnu/emacs/windows/只需要一个压缩文档,如emacs-23.2-bin-i386.zip 2.安装在D盘根目录下新建一个文件夹,取名Emacs23.2(也可以是其他路径,随个人喜好而定),将emacs-23.2-bin- i386.zip里的文件解压到这个目录下,这样在d:\Emacs23.2\下就有bin, tec, info, le

windows下的mysql安装

windows下的mysql安装分为采用安装文件安装(用的是windows的install程序来做安装),还有一种方式是通过windows中注册一个服务(也可以不注册服务,你每次在windows系统的dos窗口下通过mysqld,mysqldadmin等来做启动和关闭.所以注册了服务相当于把这些exe的程序和路径封装到服务中了,此外服务也可以方便的定义为开机就启动).总之就是两种安装方式. 如果第一次安装建议在MYSQL官网上下载包含INSTALL的方式来做安装,这样就相当于傻瓜式的操作,一般不

[转载]为 Windows 下的 PHP 安装 PEAR 和 PHPUnit

为 Windows 下的 PHP 安装 PEAR 和 PHPUnit 粗略翻译自 Installing PEAR and PHPUnit on WAMP and Windows 7,略有增改. 有需要安装 PHPUnit 来测试脚本,搜索到一篇文章,记录下来. 注意:PHP 5.2 的目录下貌似是有 PEAR 目录的,也有 go-pear.bat,这个你可以自行研究下,看是否可用.我这里测试的是 PHP 5.4,默认不自带 go-pear.bat,所以,如果你是 5.2 的话,这个教程是否可用我

Windows下使用pip安装python包是报错-UnicodeDecodeError: 'ascii' codec can't decode byte 0xcb in position 0

先交待下开发环境: 操作系统:Windows 7 Python版本:2.7.9 Pip版本:6.1.1 其他环境忽略 在windows下使用pip下载python包,出现如下错误 [plain] view plain copy Collecting xxxxxx Exception: Traceback (most recent call last): File "D:\Python27\lib\site-packages\pip-6.0.8-py2.7.egg\pip\basecommand.

Windows下codeblocks的安装与配置

最近自己正好要使用codeblocks编写C++程序,安装好却发现无法编译,如果您也遇到相似问题,可以参考本文. 如果您已安装codeblocks,想转换成中文界面,直接参考Step 2. 如果您C程序无法编译,直接参考Step 3. Step 1.安装codeblocks [1]下载 codeblocks10.05setup [2]打开安装程序,点next直至安装完成(Win7请以管理员身份运行) Step 2.转换成中文界面 [1]下载 locale.zip [2]解压出 locale文件夹

Windows下免费的首选软件

PS:以下按装机顺序排列,“|”号后面是备选软件. 启动引导:EasyBCD 虚拟机:VirtualBox Linux:Zorin | Linux Mint(Mate) | Ubuntu 驱动工具:驱动精灵 | 鲁大师 虚拟光驱:DAEMON Tools Lite 系统设置:魔方5 压缩:2345好压 | 7-Zip 图片:2345看图王 输入法:紫光拼音输入法 字典:金山词霸 | 有道词典 PDF:极速PDF阅读器 安全:360 浏览器:Chrome 下载:迅雷极速版 聊天:QQ国际版 音乐: