我可以通过puppet清单安装puppet模块吗?

我可以通过puppet清单安装puppet模块吗?,puppet,Puppet,主要目标是自动添加所有puppet模块,以便可以用一个命令启动所有dev env和prod env。如何通过puppet manifest安装puppet模块?似乎可以编写用于安装puppet模块的模块-它只是工具的包装器。然而,我还没有听说过这样的模块 我认为这种安装机制并不流行,因为您经常需要修改已安装的模块,进行一些定制。管理此类修改的实用工具是版本控制系统。例如,在我们的团队中,我们在git repository中保留/etc/puppetlabs/puppet目录。从Puppet Fo

主要目标是自动添加所有puppet模块,以便可以用一个命令启动所有dev env和prod env。如何通过puppet manifest安装puppet模块?

似乎可以编写用于安装puppet模块的模块-它只是工具的包装器。然而,我还没有听说过这样的模块

我认为这种安装机制并不流行,因为您经常需要修改已安装的模块,进行一些定制。管理此类修改的实用工具是版本控制系统。例如,在我们的团队中,我们在git repository中保留
/etc/puppetlabs/puppet
目录。从Puppet Forge安装任何模块后,我们将其文件添加到版本控制,并将其推送到远程git服务器。我们内部开发的模块也保存在这个存储库中。通过这种方式,多个puppet Master(开发和生产环境)与此中央存储库同步,并且始终具有所有模块的最新版本。

我们一直乐于使用它来同步所有第三方模块,它支持设置模块的位置和版本。因此,生产和开发运行完全相同的代码。 用法是一行

librarian-puppet install
在其他情况下,我们有一个shell脚本,它运行puppet两次,一次是一个只负责获取所需模块的最小模块,然后在所有模块都可用时运行完整的puppet流。

module { 'author/mymodule':
  ensure   => present,
}
module { 'puppetlabs/stdlib':
  ensure => '2.6.0',
}
module { 'puppetlabs/stdlib':
  ensure     => present,
  modulepath => '/etc/puppet/modules',
}
Puppet的最新版本还有一个
Puppet module
命令,允许您从安装任意Puppet模块,例如:

$ puppet module install rcoleman/puppet_module
Notice: Preparing to install into /home/anarcat/.puppet/modules ...
Notice: Created target directory /home/anarcat/.puppet/modules
Notice: Downloading from https://forgeapi.puppetlabs.com ...
Notice: Installing -- do not interrupt ...
/home/anarcat/.puppet/modules
└── rcoleman-puppet_module (v0.0.3)
其他备选方案包括:

  • (作为图书管理员的替代品),支持动态环境等

r10k现在是Puppet Enterprise 2015.03的一部分,因此它当然可以被视为最佳实践。

我做了这件事,它似乎起了作用

exec { 'puppet-fstab':
    path => '/bin:/usr/bin',
    command => 'puppet module install -i /usr/share/puppet/modules/AlexCline-fstab >>/tmp/err.log',
}

以下是我的一个例子:

  $module_stdlib = 'puppetlabs-stdlib'
  exec { 'puppet_module_stdlib':
    command => "puppet module install ${module_stdlib}",
    unless  => "puppet module list | grep ${module_stdlib}",
    path    => ['/bin', '/opt/puppetlabs/bin']
  }
其中$module_stdlib是一个需要安装的模块。
/bin
路径是
grep
的来源路径。
/opt/puppetlabs/bin
是我的安装中存在puppet二进制文件的路径。

我仍然无法理解此模块的用途。图书管理员是否也安装木偶模块而不仅仅是定制模块?使用git子模块时,您可以用一个命令更新所有模块吗?为了安装标准的puppet模块,我刚刚创建了install-me.sh脚本。只需要签出并运行方法,没有额外的麻烦。好的,这基本上和图书管理员厨师一样。我已经迁移到chef,但您的答案仍然有效。在我看来,这实际上并没有回答最初的问题,因为该模块不是由Puppet客户端安装的,而是由第三方工具安装的。因此,它要求用户首先安装该库,而不能使用Puppet安装该库!最好的解决方案是在Puppet客户端本身内置一些东西…当然,我会注意到,在我让它工作之后,我意识到Puppet内置了“mount”,它可以实现我想要的功能,所以我删除了这个模块,但希望其他模块能为某人指明正确的方向。这看起来很简单,很好,但是有更新版本的puppet@vikas027我添加了现在可用的其他选项,包括
puppet模块
命令,并更加强调r10k。