如何使用puppet创建一个mysql表?

时间:2015-02-19 11:07:12

标签: mysql puppet

我正在尝试在我已经通过puppet创建的数据库中创建一个表。

我正在使用puppet forge的mysql模块,并且一直在搜索如何创建表格......关于模块的文档似乎只解释数据库而不是表格。

网上的其他地方并没有真正提到这个案例,这让我觉得我遗漏了一些非常基本的东西:我错过了什么?

3 个答案:

答案 0 :(得分:3)

表格是您数据的一部分。数据库的模式本身不是配置的一部分。

因此,您应尝试通过Puppet管理表。

答案 1 :(得分:0)

目前还没有任何好的木偶模块可以从puppet管理数据库模式,虽然我同意这样的东西会很有用。

最接近的是使用单独的可执行文件来迁移数据库模式,并使用来自puppet清单的exec资源启动它。您可以使用several schema migration tools

例如,如果您使用Flyway,则会运行以下内容:

exec { 'Migrate Database Schema':
  path    => '/directory/with/flyway',
  cwd     => '/directory/with/migration/scripts',
  command => 'flyway migrate',
  onlyif  => 'flyway validate'
}

编辑:

应用模式更改的能力经常出现,所以我刚刚发布了一个木偶模块(database_schema),它使用flybase或liquibase来填充数据库作为木偶清单的一部分。由于它使用迁移工具,因此它既可以处理初始数据库填充,也可以将迁移脚本应用于现有数据库。

例如,如果您想使用flyway应用简单的sql迁移脚本,它看起来像这样(其中schema_source是带有版本前缀的sql脚本目录):

include ::database_schema::flyway

database_schema::flyway_migration { 'Migrate TestDB':
  db_username   => root,
  db_password   => password,
  jdbc_url      => 'jdbc:mysql://localhost/testdb',
  schema_source => '/vagrant/tests/data/stage1'
}

答案 2 :(得分:0)

您不应尝试通过Puppet管理表。 这不是生产中的理想做法

在伪造或开放源代码网站上使用liquibase或flyway模块,puppet仅可用于数据库模式版本控制,

对于DB内容传输自动化,我建议在构建SQL Loader(sqlldr)中使用批处理作业工具,例如autosys,controlm,oracle。