1

我一直在尝试为我的同事建立一个开发环境,使用 vagrant 和 puppet 进行配置(Vagrant 版本 1.2.2,precision64 框)。我目前一直在下载和导入数据库。

在某些情况下,我的公司每天都有存储在 Amazon S3 服务上的数据库备份,开发环境应该获取最新的数据库备份并将其导入。我们目前使用Tim Kays aws 工具从 S3 获取备份。

我已经成功地使用以下 puppet 设置了 aws 工具(并确认它通过'vagrant ssh'工作):

file { '/usr/local/bin/aws':
  owner => 'root',
  group => 'root',
  mode  => 755,
  source  => '/puppet-files/aws',
}

file { '/home/vagrant/.awssecret':
  owner => 'vagrant',
  group => 'vagrant',
  mode  => 400,
  source => '/puppet-files/.awssecret',
}

我尝试使用谷歌群组上的帖子中的“wget”建议的修改版本,但没有运气。以下是获取数据库的配置。

# Get and import latest db copy
exec { "download-reduced-db" :
    cwd => "/tmp",
    command => "/usr/local/bin/aws get sqldump.example.com/2013-01-02-db-backup.sql.gz /tmp/2013-01-02-db-backup.sql.gz",
    creates => "/tmp/2013-01-02-db-backup.sql.gz",
    timeout => 3600,
    require => [File["/usr/local/bin/aws"], File["/home/vagrant/.awssecret"]],
}

'vagrant up' 的(缩短的)输出如下,表明它已成功完成。

notice: /Stage[main]//File[/home/vagrant/.awssecret]/ensure: defined content as '{md5}a4b7b1ac48eb207d93cb0b1541766718'
notice: /Stage[main]//File[/usr/local/bin/aws]/ensure: defined content as '{md5}92fa9a6d77c8185fdaf970e2c4eb254e'
notice: /Stage[main]//Exec[download-reduced-db]/returns: executed successfully

但是,当使用 'vagrant ssh' 并检查 /tmp/ 目录时,该文件未列出。如果我手动执行上面的命令,它会成功完成,我可以看到 /tmp/ 中列出的文件

感谢您的时间和帮助。

4

1 回答 1

0

尝试使用

puppet.options = "--verbose --debug"

如此处所述http://docs.puppetlabs.com/references/latest/configuration.html

可能,尝试使用user参数运行 exec 以确保它运行为vagrant,但首先检查调试输出。

还将您的命令的标准输出和标准错误重定向到一个文件,这样您就可以检查出了什么问题。在 Puppet 默认使用的 Bourne shell 中,这样做是:

command > file.log 2>&1

让我知道事情的后续。

于 2013-07-11T08:27:56.773 回答