我正在尝试在我已经通过puppet创建的数据库中创建一个表。
我正在使用puppet forge的mysql模块,并且一直在搜索如何创建表格......关于模块的文档似乎只解释数据库而不是表格。
网上的其他地方并没有真正提到这个案例,这让我觉得我遗漏了一些非常基本的东西:我错过了什么?
答案 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。