新手使用chef-solo、vagrant、berkshelf等工具搭建的rails+mysql环境(第二部分)
首先
上次我们使用vagrant附带的chef功能来搭建环境。
然而,由于无法在实际服务器上进行设置,因此这次我们将使用Vagrant来构建环境,并将其设置为实际服务器的镜像。
虽然有一些重复的部分,但为了让本页成为一个完整的单独页面,我将保留重复的内容不做改动。
安装Mac所需的必备物品。
这次我参考的页面是这个。(其实,能理解参考网站的人就不需要读我的文章了…)
使用Chef工具来构建Rails环境(Ruby+Nginx+Unicorn+PostgreSQL+Redis+Fluentd)。
流浪者
首先,请从以下链接下载并安装Vagrant。
https://www.vagrantup.com/downloads.html
VirtualBox 虚拟机
请同样安装这个:https://www.virtualbox.org/wiki/Downloads。
安装vagrant-omnibus。
这次不会使用。
安装chef和knife-solo。
我会安装本次使用的主厨,并同时安装knife-solo。
$ gem install chef
$ gem install knife-solo
用以下的命令创建配置文件。
$ knife configure
※只需一个选项,以下是原文的中文释义:
全都按回车键就行。也就是说,这个是用来做什么的呢…?
安装Berkshelf。
Berkshelf是一个食谱管理工具。
$ gem install berkshelf
请亲自尝试执行
这是前阶段的内容。
从下一步开始,我们将实际进行构建。
创建一个名为chef的代码库。
首先,创建一个chef代码库。
$ mkdir chef-rep-test
$ cd chef-rep-test
$ knife solo init .
获取要使用的烹饪食谱。
按照上一次的步骤获取烹饪手册。
$ vi Berksfile
我会在文件中进行以下描述。
source "https://supermarket.chef.io"
cookbook 'git', '~>4.1.0'
cookbook 'rvm', '~>0.9.2'
cookbook 'mysql', "~> 5.3.6"
我要实际获取一本烹饪书。
$ berks vendor cookbooks
※伯克斯要消失了吗…。
我要启动Vagrant。
这次我会尝试使用CentOS。
我会在不同于chef-rep-test的目录下进行设置。
$ mkdir centos65
$ cd centos65
$ vagrant box add centos65 https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box
$ vagrant init centos65
在设置文件中,按照以下的方式进行设置。
$ vi Vagrant
Vagrant.configure(2) do |config|
config.vm.box = "centos65"
config.vm.network "private_network", ip: "192.168.33.11"
config.vm.provider "virtualbox" do |vb|
vb.customize ["modifyvm", :id, "--memory", "1024"]
end
end
暂时,只记录最基本的设置。
$ vagrant up
我們將啟動Vagrant並設定以SSH連接。
$ vagrant ssh-config --host centos65 >> ~/.ssh/config
运行此命令将把可用于SSH连接的信息写入~/.ssh/config文件中。
如果~/.ssh/config文件不存在,请先创建它。
我会实际访问一下。
$ ssh centos65
我会确认是否还没有安装Ruby等。
$ ruby -v
-bash: ruby: command not found
应用食谱。
我前面的厨师库要进行移动。
$ cd chef-rep-test/
创建一个用于应用已下载的烹饪书的配置文件。
文件名将以之前使用命令”vagrant ssh-config –host centos65 >> ~/.ssh/config”所设置的centos65创建。
(如果是在远程进行,则会使用IP地址或主机名。)
$ vi nodes/centos65.json
内容与上次相同。
{
"run_list":[
"recipe[git]",
"recipe[mysql::server]",
"recipe[mysql::client]",
"recipe[rvm::system]"
],
"rvm": {
"user": "vagrant",
"default_ruby": "ruby-2.2",
"rubies": ["ruby-2.2"]
},
"mysql": {
"service_name": "default",
"version": "5.5",
"server_root_password": "root"
}
}
我本来打算和上次一样的…但是在CentOS中以下的设置是不必要的。
在集成了Vagrant的Chef中,它可以正常运行,但如果使用knife solo导入时却不能正常运行。
通过查询,发现这个是用于Debian的包,而在CentOS上并不适用。(真是卡住了…)
"recipe[build-essential]"
在对目标服务器进行实际执行之前,请将chef-solo安装到服务器上。
(只需要安装一次)
$ knife solo prepare centos65
Bootstrapping Chef...
...
Thank you for installing Chef!
稍等一会儿,就会安装。
然后安装实际的配方。
$ knife solo cook centos65
请注意
nodes/centos65.json,knife solo prepare centos65,knife solo cook centos65等等中写有centos65的部分与ssh centos65匹配。
所以,如果ssh 192.168.1.1的情况下,分别对应nodes/192.168.1.1.json等等。
另外,需要在~/.ssh/config中指定密钥等内容。
总之,安装已经完成。
這個句子在日語中的原文是「が・・・」。
这种方法真的可以吗?