现在的位置: 首页 > 综合 > 正文

Mac: Munki笔记

2013年09月23日 ⁄ 综合 ⁄ 共 2230字 ⁄ 字号 评论关闭

 

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

 

抱歉!评论已关闭.