使用vagrant来提供简单的mysql设置(使用shellconfiguration程序)

提供stream浪话来回应“你好世界”是一件轻而易举的事情。 哎呀,即使我可以处理!

但是当提供一个盒子的时候,用户实际上会喜欢这样做,比如安装mysql,创build一个数据库,创build一个mysql用户,那么……这些东西似乎不起作用。 ARRG。

我正在使用一个虚拟的CentOS服务器,并且安装MySQL的过程并不顺畅,但是这就是我遇到的砖墙所在。 请记住,我可以通过SSH进入盒子来轻松地完成所有这些事情(当然,这也会影响configuration的目的):

echo "hello world"; <-- good sudo yum install mysql-server -y; <-- good sudo /sbin/service mysqld start; <-- good sudo mysql create user 'mycooluser'@'%' identified by 'mypassword'; <-- BAD 

我一直在谷歌search,最接近的是这篇文章 ,但由于它是基于Ubuntu而不是CentOS,所以我马上就被卡住了,因为yum并不知道debconf-utils是什么,而apt does。

任何人都可以为我阐明这一点吗? 我不认为我的是一个荒谬的用例,我想要做的就是有shell提供者

  1. 安装mysql
  2. 创build数据库
  3. 创build用户并授予他所有权限
  4. 运行db_setup.sql将表结构和数据添加到新数据库

请不要告诉我“使用厨师或木偶”。 我已经尝试过,他们有自己的问题,真的觉得这些简单的要求矫枉过正。 当然,这些项目可以用一个shell供应商完成?

非常感谢任何见解。 你可能能够告诉我在我的智慧结束。

这是我的流浪文件:

 # -*- mode: ruby -*- # vi: set ft=ruby : VAGRANTFILE_API_VERSION = "2" $script = <<SCRIPT set -x echo I am provisioning... date > /etc/vagrant_provisioned_at echo "hello world" yum install mysql-server -y /sbin/service mysqld start mysql -e "create user 'mycooluser'@'%' identified by 'mypassword'" SCRIPT Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "chef/centos-6.5" config.vm.provision :shell, :inline => $script end 

vagrant up应该得到一个centos-6.5操作系统与MySQL和用户'mycooluser'。

核实:

在完成配置并在CentOS客户端操作系统内执行以下操作后,将vagrant ssh到框中。

mysql -uroot

 mysql> SELECT User FROM mysql.user; +------------+ | User | +------------+ | mycooluser | | root | | | | root | | | | root | +------------+ 6 rows in set (0.00 sec) 

注意:您可能想授予“mycooluser”权限以便使用mysql shell等进行登录

更多细节可以在这里找到。