Database 用于导入数据库的路径

Database 用于导入数据库的路径,database,import,chef-infra,vagrant,Database,Import,Chef Infra,Vagrant,我已经学到了很多关于设置流浪者与厨师,我击中了墙,因为我是新的ruby-vagrant-chef,我不是最大的开发人员。主要是前端,但试图建立一个更好的发展环境 我已经搜索并找到了很好的答案,但只剩下最后一个问题 我有这段代码创建数据库,但我不知道从何处导入数据库 # import an sql dump from your app_root/data/dump.sql to the my_database database execute "import" do command "mysq

我已经学到了很多关于设置流浪者与厨师,我击中了墙,因为我是新的ruby-vagrant-chef,我不是最大的开发人员。主要是前端,但试图建立一个更好的发展环境

我已经搜索并找到了很好的答案,但只剩下最后一个问题

我有这段代码创建数据库,但我不知道从何处导入数据库

# import an sql dump from your app_root/data/dump.sql to the my_database database
execute "import" do
  command "mysql -u root -p\"#{node['mysql']['server_root_password']}\" my_database < /chef/vagrant_db/database-name.mysql"
  action :run
end
#将sql转储从您的应用程序_root/data/dump.sql导入my_数据库
执行“导入”操作
命令“mysql-u root-p\”{node['mysql']['server\u root\u password']}\“我的数据库”
所以我需要知道路径应该从哪里开始,顶层主目录,从我运行vagrant的顶层文件夹开始?它目前所在的地方和其他一些尝试过的地方都不起作用

任何想法都很好。我已经在谷歌搜索了这么多,以至于我几乎准备放弃了

谢谢
Tim

我建议使用
Chef::Config[:file\u cache\u path]
来实现此目的。假设您希望从远程web服务器获取该SQL文件:

db = File.join(Chef::Config[:file_cache_path], 'database.mysql')

remote_file db do
  source   'http://my.web.server/db.mysql
  action   :create_if_missing
  notifies :run, 'execute[import]', :immediately
end

execute "import" do
  command "mysql -u root -p\"#{node['mysql']['server_root_password']}\" my_database < #{db}"
  action :nothing
end
db=File.join(Chef::Config[:File\u cache\u path],'database.mysql')
远程文件数据库
来源'http://my.web.server/db.mysql
操作:如果缺少,则创建
通知:立即运行“执行[import]”
结束
执行“导入”操作
命令“mysql-u root-p\”#{node['mysql']['server\u root\u password']}\“my#u database<#{db}”
行动:没什么
结束
这将:

  • 添加幂等性-意味着它不会在每次运行时尝试导入数据库
  • 利用Chef的文件缓存路径,该路径是持久的,并保证在受支持的Chef系统上可写
  • 可扩展(您可以轻松地将
    remote\u文件
    更改为
    cookbook\u文件
    或一些自定义资源以获取数据库)
  • 现在,从流浪汉那里得到文件是另一回事了。默认情况下,Vagrant将
    /Vagrant
    文件所在的目录装载到主机(本地笔记本电脑)上的VM(来宾计算机)上的
    /Vagrant
    。您可以在本地笔记本电脑的任何位置安装其他位置(称为“共享文件夹”)

    奖金 如果您正在本地计算机上运行数据库,则实际上可以通过Vagrant:)共享文件夹共享套接字。然后你甚至不需要在你的虚拟机上安装MySQL——它将使用在你的主机笔记本电脑上运行的MySQL

    资料来源:

    • 我写了很多文章:)

    感谢您抽出时间解释。那要花我一段时间才能弄明白。如果您可以共享一个或两个链接,也许我将开始研究这两个选项,localhost数据库的共享文件夹和上面的代码。还有一个问题,上面的代码,它是否会进入cookbooks/mysql/recipes/default.rb文件?至于共享文件夹。我想我已经准备好了。因此,在上面的代码中,如果我添加路径start/vagrant/shared folder/database.mysql,我没有任何教程或指南。我推荐learnchef教程()。代码可以放入您想要的任何配方中,您只需将该配方包含在运行列表中即可。