LoginSignup
2
2

More than 5 years have passed since last update.

OpsWorks上にGitlabを建てる

Posted at

概要

OpsWorks 上に Gitlab を建てる機会があったのでその時のメモです。

手順

ざっくり以下の4手順で構築可能です。

  1. Gitlab AMI から EC2 インスタンスを起動する
  2. ドメインの設定を DNS と Gitlab に行う
  3. EC2 インスタンスを OpsWorks 配下にする
  4. SES を使い迷惑メールにならないようにする(オプション)

Gitlab AMI から EC2 インスタンスを起動する

GitLab CE AWS AMIにある AMI を使いインスタンスを立ち上げます。

リージョンを Gitlab のページから選択すると AMI ID が表示されるので c4.large でインスタンスを起動します。

AMI の仮想化方式が hvm になっているため、c4.large などのその方式に適応したインスタンスを選ぶ必要があります。
Gitlab のページで c4.large を推奨していたためそちらを選択しました。

インスタンス起動後、インスタンスにログインしsudo gitlab-ctl reconfigureを実行します。
ログインユーザは Gitlab のページにある通り ubuntu です。

するとなんと!もうアクセスできるようになります!

凄い……。

ドメインの設定を DNS と Gitlab に行う

外からアクセスするためにインスタンスにドメインを設定します。

ドメインがない場合はドメインを購入しておきます。
次に必要であれば Hosted Zone を作成します。
そして Created Record Set でドメインを割り振ります。

ここまでの手順は Route 53 を何も考えずにポチポチするだけでできます。

Gitlab へドメインを設定する

正常に動作させるためには、Gitlab 自身が参照する URL を変更する必要があります。

Gitlabの設定ファイルは/etc/gitlab/gitlab.rbだそうです。
ここのexternal_urlを変更すれば OK です。

sudo vi /etc/gitlab/gitlab.rbexternal_url # 設定変更
sudo gitlab-ctl reconfigure # 設定反映

これで Gitlab の基本的な設定は完了です。
設定ファイルの変更とかは Cookbook で管理したくなりますね!

EC2 インスタンスを OpsWorks 配下にする

まずはスタックを作成し、Custom Layer を追加します。
Layer の名前は Gitlab App Serverとしました。

そして OpsWorks 上で Register Instances を行います。

気をつけるべき点はユーザ名が ubuntu である点のみです。
最後に Regster コマンドを AWS CLI から叩くときに指定する必要があります。

ぽちぽちして登録実行!

以上、終了!

SES を使い迷惑メールにならないようにする(オプション)

アカウントなどを作成した時、ユーザにメールが送信されるのですが、現在のままだと Gmail などでは迷惑メールとして処理されてしまします。

これを回避しようと思った場合、SES という Amazon のメール配信サービスを使うと良いそうです。
迷惑メールとして扱われるのを回避する必要がある場合はこちらを使おうと思います。

今回は設定しませんでした。

失敗談

cookbook-omnibus-gitlab-cookbook を使って自動で作れないか、きちんと調べることなく試してみましたが、ダメでした(´・ω・`)

cookbook-gitlab-opsworks というのもありましたが、こちらはどうやら既にメンテもされてなく、deprecated だそうだったのでそちらには触っていません。

詳細

cookbook-omnibus-gitlab-cookbook というのを見つけたため、こちらを用いて OpsWorks 上に Gitlab が簡単構築できないかを試してみます。

まずは何も考えずにスタックの Custom JSON に以下を追記します。

{
  "omnibus-gitlab": {
    "package": {
      "repo": "gitlab/gitlab-ee",
      "name": "gitlab-ee",
      "version": "7.11.1~ee.omnibus-1"
    },
    "gitlab_rb": {
      "external_url": "http://gitlab.example.com"
    }
  }
}

スタックの Custom Cookbook にhttps://gitlab.com/gitlab-org/cookbook-omnibus-gitlab.gitを指定します。

Rayers に Custom Layer を追加します。
名前は Gitlab App Server としました。

Custom Chef Recipes の Setup にomnibus-gitlab::defaultomnibus-gitlab::backup_cron_jobを追加してみます。

いざ実行!

ERROR: undefined method `allow_downgrade' for Chef::Resource::Packageで落ちました。無念。

Chef の Version が 11.10 なのが原因なのでしょうか?それとも何か設定不足……?

必要なパッケージが足りないっぽいエラーですが、Chef も OpsWorks も初心者過ぎてどうしていいかわからず、調べていたら最初に紹介した AMI を見つけたので作業を中止しました。

そもそもその CookBook を OpsWorks でどう使うか、全く理解していないまま始めていたのがダメダメですね。

修行して出直してきます。

まとめ

AMI 準備してくれてる Gitlab さん素敵!
AWS を使えば爆速で Gitlab が建設できちゃいます!

Chef 力あげたい!

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2