使用vagrant + puppet配置服务器

时间:2013-12-05 16:48:34

标签: vagrant puppet

我对使用puppet的概念非常陌生,只是想知道是否有人可以帮我正确思考如何在我的服务器上安装新软件。

例如,如果我想在我的服务器上添加“postgres”,我该怎么去弄清楚如何使用puppet来实现这个目标呢?

同样,我并没有具体询问postgres,而是任何包。 (虽然postgres示例会很棒。)如果我可以使用清单文件安装所有内容,我真的很喜欢它。例如,以下是我安装apache2的方法:

package {
    'apache2': ensure => installed
}

service {
    'apache2':
        ensure => true,
        enable => true,
        require => Package['apache2']
}

请简单解释一下我应该检查哪些网址,以便自己解决这些问题......

教我钓鱼:)

编辑:

  1. 这个apache2包来自哪里?
  2. 如何找到更多这样的套餐?
  3. 如果我找不到像'posgresql'这样的软件包,我应该如何安装呢?我需要一种允许我通过配置安装它的方法。我无法登录该框并手动安装。

3 个答案:

答案 0 :(得分:1)

最好的方法是使用已编写的模块。

Apache可能只是一个包,但是如何进一步配置它。

我建议使用模块Puppetforge

的默认forge存储库

在那里,您会发现每个要使用的包装或服务都有太多的模块。

还有一些很好的例子42模块......

我正在谈论的一个小例子。假设你有apache设置,你想安装php模块。这将需要重启apache等等。这可能会变得非常麻烦。

代码:

include apt, apache

# Enable rewrite module
apache::module { 'rewrite': }

# Add MySQL, curl and xdebug modules
php::module { 'mysql': }
php::module { 'curl': }
php::module { 'xdebug': }

# Set php ini params
php::ini { 'xdebug-remote':
  value  => [
     'xdebug.remote_enable = 1'
  ],
  notify  => Service['apache'],  # this sets up the relationship
}

php::ini { 'security' :
  target => 'security.ini',
  value => [
  'session.cookie_httponly = 1',
  'session.cookie_secure = 0',
  'allow_url_fopen = 0',
  'expose_php = 0',
  'max_input_vars = 250',
  'disable_functions = exec,passthru,shell_exec,system,proc_open,popen,show_source'
  ],
  notify  => Service['apache'],  # this sets up the relationship
}

关于你的问题:

  1. 它来自系统包管理器(apt,或yum或支持的任何内容,例如win)
  2. 您的操作系统软件包管理器和源支持的所有软件包。
  3. 您无需查找包裹。使用模块或自定义模块,所有内容都将包含在您的配置中。
  4. 还要记住,木偶是添加剂。这意味着如果删除安装apache的行并不意味着卸载apache,那么在已经配置的系统中将保持存在。

答案 1 :(得分:1)

你应该开始考虑如何在没有木偶的情况下安装这些东西,然后你就可以编写一个木偶清单,或者找到一个符合你期望的东西。

1和2:puppet中的包类型有一些提供者(apt,yum等),puppet将选择你正在安装的操作系统中的一个。

3:Puppet有一些“本机”类型,您可以在docs中找到它们。使用这种类型,您可以编写一个与您手动完成的清单。

F.E。如果您只是运行apt-get install apache2,那么您只需要package { 'apache2': ensure => installed },但是当安装需要更多步骤的内容时,例如来自源代码的nginx,那么您需要获取安装说明并转换为相应的execfileservice

关于puppet的另一个重要信息来源是伪造模块,大多数都可以在github上找到,这样你就可以检查它们是如何工作的。

答案 2 :(得分:0)

apache2包来自您的分发包管理器,对Puppet来说不是特别之处。您需要查看其文档以了解其他可用的软件包。

但是你可以做的最好的事情就是检查puppet forge,你会发现准备好使用包裹。