新手使用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中指定密钥等内容。

总之,安装已经完成。

這個句子在日語中的原文是「が・・・」。

这种方法真的可以吗?

bannerAds