さくらのクラウドでGitLabを簡単に構築する

先日さくらのクラウドに「GitLab Community Edition」をインストールするためのスタートアップスクリプトが追加されました。

[さくらのクラウドニュース：スタートアップスクリプト「GitLab Community Edition」の提供を開始しました](https://cloud-news.sakura.ad.jp/2017/08/24/startupscript_gitlab/)

このスクリプトを用いてGitLab環境を構築してみます。

# 前提条件

- さくらのクラウドのアカウントが作成済みであること

まだの場合は以下のリンクを参考にアカウントの作成を行ってください。

[さくらのクラウド：サービスご利用の流れ](http://cloud.sakura.ad.jp/flow/)

# GitLabインストール済みのサーバ作成

## さくらのクラウド コントロールパネルへログイン

まずはコントロールパネルにログインします。

[さくらのクラウド：コントロールパネル](https://secure.sakura.ad.jp/cloud/)

![login.png](https://qiita-image-store.s3.amazonaws.com/0/20668/9c8bfe61-1525-e6c6-7aca-ddda2044d177.png)

## サーバ作成画面を開く

ログインできたらサーバ作成画面まで移動します。

- サービス選択画面で「IaaS」を選択

![02_select.png](https://qiita-image-store.s3.amazonaws.com/0/20668/acc6f37c-b9e4-ad35-e68c-d26151557525.png)

- 左上のゾーン選択ボタンから「SandBox」以外のゾーンを選択

![03_zone.png](https://qiita-image-store.s3.amazonaws.com/0/20668/26d7a25a-f251-3d08-abcb-e88788e4de56.png)

- 左のメニューから「サーバ」を選択後、右上の「追加」ボタンをクリック

![04_create_server.png](https://qiita-image-store.s3.amazonaws.com/0/20668/aed0428d-a111-b761-b295-2b832f50e1b1.png)

## サーバ作成画面

もし「シンプルモード」チェックボックスがチェックされている場合はチェックを外します。  

![05_simple_mode.png](https://qiita-image-store.s3.amazonaws.com/0/20668/fcdbee48-8512-cc8a-f23a-b539608f450c.png)

- 1. サーバプラン

CPUコア数/メモリサイズを選択します。  
後から変更することも可能ですのでお好みの値を選択してください。

![06_server_plan.png](https://qiita-image-store.s3.amazonaws.com/0/20668/c4bf4814-f6af-091a-07ca-72e4c92cc8a5.png)

- 2. ディスク

新規ディスクを作成し、そこにCentOS7.3をインストールします。  
ディスクソースに「アーカイブ」を選択した上で、アーカイブ選択欄で「CentOS7.3」を選択してください。  

ディスクプランやディスクサイズについてはお好みでOKです。

![07_disk.png](https://qiita-image-store.s3.amazonaws.com/0/20668/b90ecf62-7c54-2b3a-a40e-fe3c48de7464.png)

- 3. NIC

デフォルトでインターネットに接続するようになっているはずです。
ここは変更しなくてOKです。

![08_nic.png](https://qiita-image-store.s3.amazonaws.com/0/20668/5dcca908-ad5c-f86d-2d82-18c4c61440ab.png)

- 4. ディスクの修正

パスワードとホスト名を設定します。  

![09_edit_01.png](https://qiita-image-store.s3.amazonaws.com/0/20668/80d89845-dec9-ab19-bca7-534253d2c711.png)

公開鍵は「なし」でも良いですが、本番稼働させるサーバの場合は設定しておくのがオススメです。

- スタートアップスクリプトの選択

スタートアップスクリプト欄で「shell」を選択すると、配置するスタートアップスクリプトの選択が行えるようになります。  

ドロップダウンからGitLabを選択します。
その後、GitLab管理者(rootユーザ)の初期パスワード入力欄が表示されますので、任意の値を設定します。

![09_edit_02.png](https://qiita-image-store.s3.amazonaws.com/0/20668/c396ef3e-ecf4-f232-d26c-188ae1f26ec4.png)

- 5. シンプル監視 & 6. サーバの情報

シンプル監視は設定なしでもOKです。必要に応じて設定してください。

サーバの情報欄には名前やタグ、説明などを入力します。必要に応じて設定してください。

> ※ここで入力する名前はさくらのクラウド上でのサーバの表示名のようなものです。
日本語も使えますのでわかりやすい名前にしておくのがオススメです。

![10_info.png](https://qiita-image-store.s3.amazonaws.com/0/20668/851b9359-ea5c-dad3-3aa7-d3bed03269ec.png)

- 7. その他のオプションなど

変更しなくてOKです。作成数は1のままにしてください。

![11_option.png](https://qiita-image-store.s3.amazonaws.com/0/20668/145b3566-7af6-4333-be2a-b5ccb3d7853f.png)

あとは右下の「作成」ボタンを押すだけです。

サーバ作成が完了するまでしばらく待ちましょう。

## [TIPS]: スタートアップスクリプトの実行ログ確認

あとはしばらく待つだけでスタートアップスクリプトによりGitLabのインストール&環境設定が行われます。
このスタートアップのログは作成されたサーバ内の以下のファイルに出力されています。

    /root/.sacloud-api/notes/[12桁の数値].log

12桁の数値はサーバ作成時にランダムで割り当てられるものです。
インストールがうまくいかない場合などは上記のログを参照してみましょう。  

なお、今回利用しているGitLabのスタートアップスクリプトでは以下のようなログが出力されるはずです。

```console
-------------------------------------------------- Sat Aug 26 18:46:40 JST 2017
Loaded plugins: fastestmirror, priorities
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
Determining fastest mirrors
Package curl-7.29.0-35.el7.centos.x86_64 already installed and latest version
Resolving Dependencies
--> Running transaction check
---> Package openssh-clients.x86_64 0:6.6.1p1-31.el7 will be updated
---> Package openssh-clients.x86_64 0:6.6.1p1-35.el7_3 will be an update
--> Processing Dependency: openssh = 6.6.1p1-35.el7_3 for package: openssh-clients-6.6.1p1-35.el7_3.x86_64
---> Package openssh-server.x86_64 0:6.6.1p1-31.el7 will be updated
---> Package openssh-server.x86_64 0:6.6.1p1-35.el7_3 will be an update
---> Package policycoreutils.x86_64 0:2.5-9.el7 will be updated
---> Package policycoreutils.x86_64 0:2.5-11.el7_3 will be an update
--> Running transaction check
---> Package openssh.x86_64 0:6.6.1p1-31.el7 will be updated
---> Package openssh.x86_64 0:6.6.1p1-35.el7_3 will be an update
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package               Arch         Version                 Repository     Size
================================================================================
Updating:
 openssh-clients       x86_64       6.6.1p1-35.el7_3        updates       642 k
 openssh-server        x86_64       6.6.1p1-35.el7_3        updates       440 k
 policycoreutils       x86_64       2.5-11.el7_3            updates       841 k
Updating for dependencies:
 openssh               x86_64       6.6.1p1-35.el7_3        updates       438 k

Transaction Summary
================================================================================
Upgrade  3 Packages (+1 Dependent package)

Total download size: 2.3 M
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
--------------------------------------------------------------------------------
Total                                              6.0 MB/s | 2.3 MB  00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Updating   : openssh-6.6.1p1-35.el7_3.x86_64                              1/8 
  Updating   : openssh-clients-6.6.1p1-35.el7_3.x86_64                      2/8 
  Updating   : openssh-server-6.6.1p1-35.el7_3.x86_64                       3/8 
  Updating   : policycoreutils-2.5-11.el7_3.x86_64                          4/8 
  Cleanup    : openssh-server-6.6.1p1-31.el7.x86_64                         5/8 
  Cleanup    : openssh-clients-6.6.1p1-31.el7.x86_64                        6/8 
  Cleanup    : openssh-6.6.1p1-31.el7.x86_64                                7/8 
  Cleanup    : policycoreutils-2.5-9.el7.x86_64                             8/8 
  Verifying  : openssh-6.6.1p1-35.el7_3.x86_64                              1/8 
  Verifying  : policycoreutils-2.5-11.el7_3.x86_64                          2/8 
  Verifying  : openssh-clients-6.6.1p1-35.el7_3.x86_64                      3/8 
  Verifying  : openssh-server-6.6.1p1-35.el7_3.x86_64                       4/8 
  Verifying  : openssh-6.6.1p1-31.el7.x86_64                                5/8 
  Verifying  : policycoreutils-2.5-9.el7.x86_64                             6/8 
  Verifying  : openssh-server-6.6.1p1-31.el7.x86_64                         7/8 
  Verifying  : openssh-clients-6.6.1p1-31.el7.x86_64                        8/8 

Updated:
  openssh-clients.x86_64 0:6.6.1p1-35.el7_3                                     
  openssh-server.x86_64 0:6.6.1p1-35.el7_3                                      
  policycoreutils.x86_64 0:2.5-11.el7_3                                         

Dependency Updated:
  openssh.x86_64 0:6.6.1p1-35.el7_3                                             

Complete!
Loaded plugins: fastestmirror, priorities
Loading mirror speeds from cached hostfile
Package 2:postfix-2.10.1-6.el7.x86_64 already installed and latest version
Nothing to do
success
success
Detected operating system as centos/7.
Checking for curl...
Detected curl...
Downloading repository file: https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/config_file.repo?os=centos&dist=7&source=script
done.
Installing pygpgme to verify GPG signatures...
Loaded plugins: fastestmirror, priorities
Retrieving key from https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey
Importing GPG key 0xE15E78F4:
 Userid     : "GitLab B.V. (package repository signing key) <packages@gitlab.com>"
 Fingerprint: 1a4c 919d b987 d435 9396 38b9 1421 9a96 e15e 78f4
 From       : https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey
Retrieving key from https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey/gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg
Loading mirror speeds from cached hostfile
Package pygpgme-0.3-9.el7.x86_64 already installed and latest version
Nothing to do
Installing yum-utils...
Loaded plugins: fastestmirror, priorities
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package yum-utils.noarch 0:1.1.31-40.el7 will be installed
--> Processing Dependency: python-kitchen for package: yum-utils-1.1.31-40.el7.noarch
--> Processing Dependency: libxml2-python for package: yum-utils-1.1.31-40.el7.noarch
--> Running transaction check
---> Package libxml2-python.x86_64 0:2.9.1-6.el7_2.3 will be installed
---> Package python-kitchen.noarch 0:1.1.1-5.el7 will be installed
--> Processing Dependency: python-chardet for package: python-kitchen-1.1.1-5.el7.noarch
--> Running transaction check
---> Package python-chardet.noarch 0:2.2.1-1.el7_1 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package               Arch          Version                  Repository   Size
================================================================================
Installing:
 yum-utils             noarch        1.1.31-40.el7            base        116 k
Installing for dependencies:
 libxml2-python        x86_64        2.9.1-6.el7_2.3          base        247 k
 python-chardet        noarch        2.2.1-1.el7_1            base        227 k
 python-kitchen        noarch        1.1.1-5.el7              base        267 k

Transaction Summary
================================================================================
Install  1 Package (+3 Dependent packages)

Total download size: 856 k
Installed size: 4.3 M
Downloading packages:
--------------------------------------------------------------------------------
Total                                              2.7 MB/s | 856 kB  00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : python-chardet-2.2.1-1.el7_1.noarch                          1/4 
  Installing : python-kitchen-1.1.1-5.el7.noarch                            2/4 
  Installing : libxml2-python-2.9.1-6.el7_2.3.x86_64                        3/4 
  Installing : yum-utils-1.1.31-40.el7.noarch                               4/4 
  Verifying  : yum-utils-1.1.31-40.el7.noarch                               1/4 
  Verifying  : python-kitchen-1.1.1-5.el7.noarch                            2/4 
  Verifying  : libxml2-python-2.9.1-6.el7_2.3.x86_64                        3/4 
  Verifying  : python-chardet-2.2.1-1.el7_1.noarch                          4/4 

Installed:
  yum-utils.noarch 0:1.1.31-40.el7                                              

Dependency Installed:
  libxml2-python.x86_64 0:2.9.1-6.el7_2.3 python-chardet.noarch 0:2.2.1-1.el7_1
  python-kitchen.noarch 0:1.1.1-5.el7    

Complete!
Generating yum cache for gitlab_gitlab-ce...
Importing GPG key 0xE15E78F4:
 Userid     : "GitLab B.V. (package repository signing key) <packages@gitlab.com>"
 Fingerprint: 1a4c 919d b987 d435 9396 38b9 1421 9a96 e15e 78f4
 From       : https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey

The repository is setup! You can now install packages.
Loaded plugins: fastestmirror, priorities
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package gitlab-ce.x86_64 0:9.5.1-ce.0.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package         Arch         Version              Repository              Size
================================================================================
Installing:
 gitlab-ce       x86_64       9.5.1-ce.0.el7       gitlab_gitlab-ce       378 M

Transaction Summary
================================================================================
Install  1 Package

Total download size: 378 M
Installed size: 1.1 G
Downloading packages:
warning: /var/cache/yum/x86_64/7/gitlab_gitlab-ce/packages/gitlab-ce-9.5.1-ce.0.el7.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID f27eab47: NOKEY
Public key for gitlab-ce-9.5.1-ce.0.el7.x86_64.rpm is not installed
Retrieving key from https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey
Importing GPG key 0xE15E78F4:
 Userid     : "GitLab B.V. (package repository signing key) <packages@gitlab.com>"
 Fingerprint: 1a4c 919d b987 d435 9396 38b9 1421 9a96 e15e 78f4
 From       : https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey
Retrieving key from https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey/gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg
Importing GPG key 0xF27EAB47:
 Userid     : "GitLab, Inc. <support@gitlab.com>"
 Fingerprint: dbef 8977 4ddb 9eb3 7d9f c3a0 3cfc f9ba f27e ab47
 From       : https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey/gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : gitlab-ce-9.5.1-ce.0.el7.x86_64                              1/1 
tput: No value for $TERM and no -T specified


       *.                  *.
      ***                 ***
     *****               *****
    .******             *******
    ********            ********
   ,,,,,,,,,***********,,,,,,,,,
  ,,,,,,,,,,,*********,,,,,,,,,,,
  .,,,,,,,,,,,*******,,,,,,,,,,,,
      ,,,,,,,,,*****,,,,,,,,,.
         ,,,,,,,****,,,,,,
            .,,,***,,,,
                ,*,.

     _______ __  __          __
    / ____(_) /_/ /   ____ _/ /_
   / / __/ / __/ /   / __ `/ __ \
  / /_/ / / /_/ /___/ /_/ / /_/ /
  \____/_/\__/_____/\__,_/_.___/


gitlab: Thank you for installing GitLab!
gitlab: To configure and start GitLab, RUN THE FOLLOWING COMMAND:

sudo gitlab-ctl reconfigure

gitlab: GitLab should be reachable at http://GitLab
gitlab: Otherwise configure GitLab for your system by editing /etc/gitlab/gitlab.rb file
gitlab: And running reconfigure again.
gitlab: 
gitlab: For a comprehensive list of configuration options please see the Omnibus GitLab readme
gitlab: https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md
gitlab: 
It looks like GitLab has not been configured yet; skipping the upgrade script.
  Verifying  : gitlab-ce-9.5.1-ce.0.el7.x86_64                              1/1 

Installed:
  gitlab-ce.x86_64 0:9.5.1-ce.0.el7                                             

Complete!


  * Moving existing certificates found in /opt/gitlab/embedded/ssl/certs

  * Symlinking existing certificates found in /etc/gitlab/trusted-certs
gitlab Reconfigured!

(exit code: 0)
```

最後に`(exit code: 0)`と出力されていればスタートアップスクリプトが正常終了しています。

## GitLabにサインイン

ブラウザでGitLabにサインインしてみます。
`http://サーバのIPアドレス/`にアクセスしてみましょう。

- サーバのIPアドレスの確認

サーバのIPアドレスはコントロールパネルから確認できます。

![12_ipaddress.png](https://qiita-image-store.s3.amazonaws.com/0/20668/539c2dac-9403-0111-a824-126087155635.png)

- サインイン画面

続いて`http://サーバのIPアドレス/`を開きます。  
ユーザ名に`root`、パスワードにはサーバ作成時に指定した値を入力します。

![13_gitlab.png](https://qiita-image-store.s3.amazonaws.com/0/20668/70985201-9105-35ba-1e83-c7a575702a7a.png)

サインインできたら次のような画面が表示されるはずです。

![14_complete.png](https://qiita-image-store.s3.amazonaws.com/0/20668/d02d8e7b-e079-263c-344d-9bd4de356061.png)

おめでとうございます！！以上でサーバ構築完了です。

あとはGitLabをガンガン使ってみましょう！！！

なお、このスクリプトでは以下の設定は行われていません。

- SSL対応
- メールの設定

必要に応じて設定してみてください。

以上です。