puppet module是puppet的基础模块工具,agent和master都可以使用,主要包含下载、更新、查找、升级、创建等功能.它可以从Puppetforge上查找已经开发好的puppet基础模块代码为我们使用,不需要自己再去编写,提升工作效率.


查看puppet module的帮助信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
[root@puppet ~] # puppet help module
USAGE: puppet module <action> [--environment production ]
[--modulepath $basemodulepath ]
This subcommand can  find install , and manage modules from the Puppet Forge,
a repository of user-contributed Puppet code. It can also generate empty
modules, and prepare locally developed modules  for  release on the Forge.
OPTIONS:
   --render-as FORMAT             - The rendering  format  to use.
   --verbose                      - Whether to log verbosely.
   --debug                        - Whether to log debug information.
   --environment production       - The environment Puppet is running  in . For
                                    clients (e.g., `puppet agent`) this
                                    determines the environment itself,  which  is
                                    used to  find  modules and much  more . For
                                    servers (i.e., `puppet master`) this provides
                                    the default environment  for  nodes we know
                                    nothing about.
   --modulepath $basemodulepath   - The search path  for  modules, as a list of
                                    directories separated by the system path
                                    separator character. (The POSIX path
                                    separator is  ':' , and the Windows path
                                    separator is  ';' .) Setting a global value  for
                                    `modulepath`  in  puppet.conf is deprecated.
                                    Please use directory environments instead. If
                                    you need to use something other than the
                                    default modulepath of `<ACTIVE ENVIRONMENT'S
                                    MODULES DIR>:$basemodulepath`, you can  set
                                    `modulepath`  in  environment.conf. For  more
                                    info, see
                                    http: //docs .puppetlabs.com /puppet/latest/reference/environments .html
ACTIONS:
   build        Build a module release package.
   changes      Show modified files of an installed module.
   generate     Generate boilerplate  for  a new module.
   install       Install a module from the Puppet Forge or a release archive.
   list         List installed modules
   search       Search the Puppet Forge  for  a module.
   uninstall    Uninstall a puppet module.
   upgrade      Upgrade a puppet module.
See  'puppet man module'  or  'man puppet-module'  for  full help.


build 构建模块源码软件包

changes显示一个已经安装的模块的改变

generate 创建一个新的模块

install  从puppet forge安装一个模块

list   查找模块

uninstall  卸载模块

upgrade  升级一个模块


#查看本地安装的puppet模块

1
2
3
[root@puppet ~] # puppet module list
/etc/puppet/modules  (no modules installed)
/usr/share/puppet/modules  (no modules installed)

#搜索vmware-vcenter模块

1
2
3
4
[root@puppet ~] # puppet module search vmware-vcenter
Notice: Searching https: //forgeapi .puppetlabs.com ...
NAME            DESCRIPTION                                                                               AUTHOR        KEYWORDS                                   
vmware-vcenter  VMware vCenter puppet module                                                              @vmware       vmware vcenter

#安装vmware-vcenter模块

1
2
3
4
5
6
7
8
9
[root@puppet ~] # puppet module install vmware-vcenter
Notice: Preparing to  install  into  /etc/puppet/modules  ...
Notice: Downloading from https: //forgeapi .puppetlabs.com ...
Notice: Installing --  do  not interrupt ...
/etc/puppet/modules
└─┬ vmware-vcenter (v0.10.0)
   ├── nanliu-staging (v1.0.3)
   ├── puppetlabs-stdlib (v4.19.0)
   └── vmware-vmware_lib (v0.7.0)

#卸载vmware-vcenter模块

1
2
3
[root@puppet ~] # puppet module uninstall vmware-vcenter
Notice: Preparing to uninstall  'vmware-vcenter'  ...
Removed  'vmware-vcenter'  (v0.10.0) from  /etc/puppet/modules

generate参数创建一个模块,名为example-meng

1
2
3
4
[root@puppet ~] # puppet module generate example-meng
We need to create a metadata.json  file  for  this module.  Please answer the
following questions;  if  the question is not applicable to this module, feel  free
to leave it blank.

    #这个模块的版本,默认为0.1.0.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Puppet uses Semantic Versioning (semver.org) to version modules.
What version is this module?  [0.1.0]
--> 
#这个模块谁写的?
Who wrote this module?  [example]
--> example-meng
#这个模块属于哪个许可机构?
What license does this module code fall under?  [Apache 2.0]
--> apache
#一句话描述这个模块?
How would you describe this module  in  a single sentence?
--> My name is meng
#这个模块的源码仓库在哪?
Where is this module's  source  code repository?
-->  /tmp     
#其他人去哪学习这个模块?
Where can others go to learn  more  about this module?
--> 51cto.com
#关于这个模块的文件问题去哪解决?
Where can others go to  file  issues about this module?
--> no         
----------------------------------------
{
   "name" "example-meng" ,
   "version" "0.1.0" ,
   "author" "example-meng" ,
   "summary" "My name is meng" ,
   "license" "apache" ,
   "source" "/tmp" ,
   "issues_url" "no" ,
   "project_page" "51cto.com" ,
   "dependencies" : [
     { "version_requirement" : ">= 1.0.0" , "name" : "puppetlabs-stdlib" }
   ]
}
----------------------------------------
About to generate this metadata;  continue ? [n /Y ]
--> y
Notice: Generating module at  /root/example-meng ...
Notice: Populating templates...
Finished; module generated  in  example-meng.
example-meng /Gemfile
example-meng /spec
example-meng /spec/classes
example-meng /spec/classes/init_spec .rb
example-meng /spec/spec_helper .rb
example-meng /tests
example-meng /tests/init .pp
example-meng /manifests
example-meng /manifests/init .pp
example-meng /README .md
example-meng /metadata .json
example-meng /Rakefile


本文转自青衫解衣 51CTO博客,原文链接:http://blog.51cto.com/215687833/1963792