【问题标题】:use vagrant to provision simple mysql setup (with shell provisioner)使用 vagrant 配置简单的 mysql 设置(使用 shell 配置器)
【发布时间】:2014-10-19 06:56:10
【问题描述】:

配置 Vagrant 来回显“hello world”是一件轻而易举的事。哎呀,即使是我也可以处理!

但是当涉及到用户在配置盒子时真正想做的事情时,例如安装 mysql、创建数据库和创建 mysql 用户,嗯……这些事情似乎不起作用.啊。

我正在使用虚拟 CentOS 服务器并且安装 MySQL 顺利进行,但这就是我遇到众所周知的砖墙的地方。请记住,我可以通过 SSH 进入盒子轻松地完成所有这些事情(但这当然违背了配置的目的):

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

我一直在谷歌搜索,最接近的是this article,但由于它基于 Ubuntu 而不是 CentOS,我马上就被卡住了,因为显然 yum 不知道 debconf- utils 是,而 apt 是。

谁能帮我解释一下?我不认为我的用例是一个离谱的用例,我想做的就是拥有 shell 配置器

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

请不要告诉我“使用厨师或木偶”。我已经尝试过,他们有自己的问题,老实说,对于这些简单的要求,我觉得有点矫枉过正。这些项目肯定可以通过 shell 配置器来完成吗?

非常感谢您提供任何见解。你也许能看出我已经无计可施了。

【问题讨论】:

  • 你能和我们分享你的 Vagrantfile 和配置脚本吗?你正在运行什么版本的 Vagrant?

标签: mysql linux centos vagrant virtualbox


【解决方案1】:

这是我的 Vagrantfile:

# -*- 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 应该为您提供一个带有 mysql 和用户 'mycooluser' 的 centos-6.5 操作系统。

验证:

vagrant ssh 在完成配置后添加到该框,并在 centos 客户操作系统中执行以下操作。

mysql -uroot

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

注意:您可能需要授予“mycooluser”权限,以便使用 mysql shell 等登录。

更多详情请见here

【讨论】:

  • 感谢您的回复,但为我编写 shell 脚本的全部目的是消除手动 SSH 进入框以创建数据库、用户、授予权限等的需要。跨度>
  • 作为vagrant up 进程的一部分,Vagrantfile 顶部的 shell 脚本将运行。我列出的步骤是一种验证用户是否已创建的方法。添加/修改/删除到 shell 脚本以满足您的需要。
  • 哦!对不起,我看错了你帖子的那一部分。我尝试使用相同的语法来添加用户(假设它在外部 shell 脚本中而不是内联文件中),但你是说你让它成功工作了吗?我会试试这个并发布结果。
猜你喜欢
  • 1970-01-01
  • 2013-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-14
相关资源
最近更新 更多