Puppet 如何分割傀儡文件

Puppet 如何分割傀儡文件,puppet,devops,Puppet,Devops,只是想知道我是否有下面的木偶文件,我想把它们分割成不同的文件。我必须创建模块吗?我不能把它们包括进去吗 node default { include mysql } class mysql { # Make sure MySQL is ... notify {"Mysql":} # installed package { 'mysql': require => Exec['apt-update'], # require 'apt-update' before

只是想知道我是否有下面的木偶文件,我想把它们分割成不同的文件。我必须创建模块吗?我不能把它们包括进去吗

node default {
  include mysql
}


class mysql {

  # Make sure MySQL is ...
  notify {"Mysql":}

  # installed
  package { 'mysql':
  require => Exec['apt-update'], # require 'apt-update' before installing
  ensure => installed,
  }

  # and running
  service { 'mysql':
    ensure => running,
    enable => true,
  }
}

...
我只想把mysql类放在单独的文件中。如何做这件简单的事情?顺便说一句,我用的是无主人木偶

编辑

非常抱歉,事实上我只是在用木偶,没有流浪汉。但由于我不是devops专家,当我的问题被修改为包括流浪汉时,我只是接受了它。对不起,让我修改一下我的问题

我能在没有流浪汉的情况下分居吗?如果我必须这样做的话


谢谢

您可以将您的
mysql
类移动到它自己的模块中

你最终会得到这样的结果

.
├── Vagrantfile
├── puppet
|   ├── manifests
|         ├──── base.pp
|   └── modules
|         └── mysql
|               └── manifests
|                     └──── init.pp
流浪汉档案会是什么样子

Vagrant.configure("2") do |config|
    <make all your configuration here>
    config.vm.provision :puppet do |puppet|
      puppet.manifests_path = "puppet/manifests"
      puppet.manifest_file = "base.pp"
      puppet.module_path = "puppet/modules"
    end
  end

end
您的mysql/init.pp文件将包含mysql类本身

class mysql {

  # Make sure MySQL is ...
  notify {"Mysql":}

  # installed
  package { 'mysql':
  require => Exec['apt-update'], # require 'apt-update' before installing
  ensure => installed,
  }

  # and running
  service { 'mysql':
    ensure => running,
    enable => true,
  }
}

在puppet中进行模块练习可能是一个好主意,但老实说,您更可能使用现有模块,而不是重新发明轮子:这将是一个好的模块使用

您可以将您的
mysql
类移动到它自己的模块中

你最终会得到这样的结果

.
├── Vagrantfile
├── puppet
|   ├── manifests
|         ├──── base.pp
|   └── modules
|         └── mysql
|               └── manifests
|                     └──── init.pp
流浪汉档案会是什么样子

Vagrant.configure("2") do |config|
    <make all your configuration here>
    config.vm.provision :puppet do |puppet|
      puppet.manifests_path = "puppet/manifests"
      puppet.manifest_file = "base.pp"
      puppet.module_path = "puppet/modules"
    end
  end

end
您的mysql/init.pp文件将包含mysql类本身

class mysql {

  # Make sure MySQL is ...
  notify {"Mysql":}

  # installed
  package { 'mysql':
  require => Exec['apt-update'], # require 'apt-update' before installing
  ensure => installed,
  }

  # and running
  service { 'mysql':
    ensure => running,
    enable => true,
  }
}

在木偶中进行模块练习是个好主意,但老实说,你更可能使用现有的模块,而不是重新发明轮子:这将是一个很好的模块使用

@JohnBollinger确实,但它被标记为vagrant,所以我假设OP使用的是来自vagrant的木偶-真的,没有vagrant也可以这样做,并且拆分将与此答案相同,现在我知道OP要求的是什么了。问题中的表达太难理解了。谢谢@FrédéricHenri我很感激你的回答(+1),我已经更新了我的问题以澄清一些困惑。没有流浪汉,我怎么能像你说的那样?如何在不使用vagrant的情况下设置路径只需关闭此文件,不使用vagrant即可将这些文件结构放在ubuntu中的默认文件夹
/etc/puppet
。应该与其他linux非常相似distro@JohnBollinger的确,但它被标记为“流浪者”,所以我假设OP使用的是“流浪者的木偶”——没错,没有“流浪者”也可以做到同样的事情,拆分将与此答案相同,现在我知道OP要求的是什么。问题中的表达太难理解了。谢谢@FrédéricHenri我很感激你的回答(+1),我已经更新了我的问题以澄清一些困惑。没有流浪汉,我怎么能像你说的那样?如何在不使用vagrant的情况下设置路径只需关闭此文件,不使用vagrant即可将这些文件结构放在ubuntu中的默认文件夹
/etc/puppet
。应该与您标记为[vagrant]的其他linux发行版非常相似,但不清楚您的问题与vagrant的关系。最简单的形式是,创建模块只意味着将包含您的
mysql
类的文件放在适当的目录中。如果你想把舱单一分为二,那就是你应该做的。对不起,我的问题更清楚了。那是我的错。不幸的是,即使我将文件放在适当的目录中,也没有检测到我的文件,可能是因为包含路径设置不正确。这里有一个“模块路径”,我猜这就是你的意思。您可以在Puppet的配置中设置自己的,也可以在命令行中指定,或者使用默认值(取决于Puppet的版本)@FrédéricHenri的回答演示了如何放置文件(
init.pp
),因为
/puppet/modules
是模块路径中的一个目录。感谢@JohnBollinger,默认路径和
模块路径
变量确实有助于您标记[vagrant],但不清楚你的问题与Vagrant有何关系。最简单的形式是,创建模块只意味着将包含
mysql
类的文件放在适当的目录中。如果你想把舱单一分为二,那就是你应该做的。对不起,我的问题更清楚了。那是我的错。不幸的是,即使我将文件放在适当的目录中,也没有检测到我的文件,可能是因为包含路径设置不正确。这里有一个“模块路径”,我猜这就是你的意思。您可以在Puppet的配置中设置自己的,也可以在命令行中指定,或者使用默认值(取决于Puppet的版本)@FrédéricHenri的回答演示了如何放置文件(
init.pp
),因为
/puppet/modules
是模块路径中的一个目录。感谢@JohnBollinger,默认路径和
模块路径
变量确实有帮助