如何拆分人偶文件

How to split puppet files

只是想知道我是否有以下人偶文件,我想将它们拆分成单独的文件。我必须创建模块吗?我不能只包括它们吗?

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 class 放在单独的文件中。如何做这个简单的事情?顺便说一句,我正在使用无主傀儡

编辑

非常抱歉,事实是我只使用了 puppet 而没有使用 vagrant。但是由于我不是 devops 专家,所以当我的问题被修改为包含 vagrant 时,我就接受了。抱歉造成混淆,让我修改一下我的问题

我可以在没有 vagrant 的情况下进行分离吗?如果我必须这样做的话。

谢谢

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

你最终会得到这样的结果

.
├── Vagrantfile
├── puppet
|   ├── manifests
|         ├──── base.pp
|   └── modules
|         └── mysql
|               └── manifests
|                     └──── init.pp

Vagrantfile 会像

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

base.pp 文件将只包含

node default {
  include mysql
}

并且您的 mysql/init.pp 文件将包含 mysql class 本身

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 中进行模块练习可能是个好主意,但老实说,您更有可能使用现有模块而不是重新发明轮子:https://forge.puppet.com/puppetlabs/mysql/2.2.3 将是一个很好用的模块