Mac: Munki笔记

 

Munki是一种方便的程序安装模式,它准许客户端无须本地管理员干预的程序安装,这在复杂网络环境中尤其方便。

笔记: Oct 20, 2010

Munki的思路

 

安装

Munki的大部分命令被安装在 /usr/local/munki

同时还有 :

/Library/Preferences/ManagedInstall.plist文件,控制客户端本地

/Library/ManagedInstalls/ 目录是客户端的工作目录

/Applications/Utilities/Managed Software Update.app 这是一个和苹果更新程序界面类似的程序更新安装界面,普通用户可以运行它来手动检查更新,并不需要本地的管理员权限的介入,就可以安装软件和更新。

/Libraray/LaunchAgents/

/Libraray/LaunchDaemons/

分别有三个 Launchd plist文件,分别用于自动检查 (默认每 10分钟 )和安装,以及手动检查

 

Server的配置

Web Server 目录下 建目 录结构

munki/catalogs

munki/manifests

munki/pkgs

munki/pkgsinfo

其实在Server上无须安装munki,它只是一个存储和分类功能,并通过使用web服务器提供的网络接口,提供服务。下面的配置活动可以在远程完成后上传。

 

1.所有的pkg文件都储存在munki/pkgs里面,如果是meta package格式,需要把这个安装文件包在dmg文件中。确保everyone有read的权限 chmod 644 munki/pkgs/*

 

2.使用munki提供的工具,为每个package生成pkginfo文件 命令:/usr/local/munki/makepkginfo munki/pkgs/[NAME_OF_DISK_IMAGE] > munki/pkgsinfo//[NAME_OF_DISK_IMAGE].pkginfo

pkginfo文件




说明该安装文件的具体信息,位置,版本,类型(applications, files, plist,bundle等),标识/校验值,目标系统最低系统要求,

空间大小,依赖条

件(<key>requires</key>依赖其他软件的安装等,注意如果定义了彼此依赖,那么被依赖被删除,依赖者也被删除,

还有一种更新的依赖关系





<key>update_for</key>)等等,这样有利于安装程序做出如何安装的决定。

 

3. 生成catalog( 文档说明 生成 catalogs目录里面的控制文件 (XML格式的 plist),目前来说, catalog只支持类似软件发布方式的分类,而且排列顺序很重要,在前面的比后面的优先。比如定义 Development, testing, production等,它不支持对客户端的任意分组。

/usr/local/munki/makecatalogs munki

 

4. munki/manifests 定义。

( manifest 1 的说明 ), 定义这一类 (catalog)的客户端来说,什么是必须安装的 (managed_installs),必须卸载的 (managed_uninstalls),可以安装的-最终用户可以自己选择是否安装 (optional_installs),和需要更新的 (managed_updates)

 

更新程序,反复 1.2.3.最后更新 manifests

 

或者使用 munkiimport 完成步骤 1,2

 

客户端配置 :

客户端的配置主要是制定服务器的地址和它的分组情况,也就是使用哪个 manifests指定的分组来管理本机的更新。

分组的用途,有的时候,不同的机器安装了不同软件,而你不希望不同机器混合使用不同的软件,这样把他们分成不同的组,进行软件安装管理很方便;有的时候他们的配置不同,用途不同,软件环境不同,都需要对他们区分安装。

 

配置很简单,主要在 /Library/Preferences/ ManagedInstall.plist 文件中设置两个值 :

ClientIdentifier是本机所属分组的名称,比如 testing.

SoftwareRepoURL就是服务器的地址,比如 http://www.server.my/munki

   设置这两个参数,使得客户端 munki查找 http://www.server.my/munki/testing ,找到属于自己的 manifest文件。

    Munki还支持对 manifest, catalog package的分别设置 ( ManifestURL, CatalogURL, PackageURL), 为了简单只设置 SoftwareRetoURL就默认所有的目录都在它的根目录下面。

 

如何手动让客户端检查更新呢?

运行 /Applications/Utilities Managed Software Update.app

或者是命令行 /usr/local/munki/managedsoftwareupdate命令

 

一个演示在客户端是如何动作的文档: Workflow Example

 

局限和缺陷

虽然支持https的加密通讯,但是没有其他的类似puppet的方式

它不支持对客户端的任意分组,这是它的一个局限。

而且它的设计有点奇怪,每个 pkginfo可以定义自己的多个 catalog分类, catalog又有优先, manifest又和客户端联系来确定客户端的 catalog

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值