CentOS 7にGoCDをインストールして構成する方法

GoCDは、オープンソースの継続的デリバリーおよび自動化システムです。並列および順次実行を使用して、複雑なワークフローをモデル化できます。バリューストリームマップにより、複雑なワークフローを簡単に視覚化できます。GoCDを使用すると、2つのビルドを簡単に比較して、必要なアプリケーションの任意のバージョンをデプロイできます。GoCDエコシステムは、GoCDサーバーとGoCDエージェントで構成されています。GoCDは、Webベースのユーザーインターフェースの実行、エージェントへのジョブの管理と提供など、すべての制御を担当します。Goエージェントは、ジョブとデプロイメントの実行を担当します。

前提条件

  • 1GB以上のRAMを備えたVultr CentOS 7サーバーインスタンス。
  • sudoのユーザー
  • サーバーに向けられたドメイン名。

このチュートリアルでは192.168.1.1、パブリックIPアドレスおよびgocd.example.comVultrインスタンスを指すドメイン名として使用します。サンプルのドメイン名とIPアドレスをすべて実際のものに置き換えてください。

CentOS 7のアップデート方法ガイドを使用して、ベースシステムをアップデートします。システムが更新されたら、Javaのインストールに進みます。

Javaをインストールする

GoCDはJavaバージョン8を必要とし、Oracle JavaとOpenJDKの両方をサポートします。このチュートリアルでは、OpenJDKからJava 8をインストールします。

OpenJDKは、パッケージがデフォルトのYUMリポジトリで利用できるため、簡単にインストールできます。

sudo yum -y install java-1.8.0-openjdk-devel

Javaが正しくインストールされている場合は、そのバージョンを確認できます。

java -version

次のテキストと同様の出力が得られます。

[user@vultr ~]$ java -version
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)

さらに先に進む前に、JAVA_HOMEおよびJRE_HOME環境変数を設定する必要があります。システム内のJava実行可能ファイルの絶対パスを見つけます。

readlink -f $(which java)

次のテキストが端末に出力されます。

[user@vultr ~]$ readlink -f $(which java)
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-5.b12.el7_4.x86_64/jre/bin/java

次に、Javaディレクトリーのパスに従ってJAVA_HOMEJRE_HOME環境変数を設定します。

echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-5.b12.el7_4.x86_64" >> ~/.bash_profile
echo "export JRE_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-5.b12.el7_4.x86_64/jre" >> ~/.bash_profile

注: システムで取得したJavaパスを使用してください。このチュートリアルで使用されるパスは、Java 8の新しいバージョンがリリースされると変更される可能性があります。

bash_profileファイルを実行します。

source ~/.bash_profile

これで、echo $JAVA_HOMEコマンドを実行して、環境変数が設定されていることを確認できます。

[user@vultr ~]$ echo $JAVA_HOME
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64

GoCDをインストールする

GoCDはJavaで記述されているため、GoCDを実行するにはJavaが唯一の依存関係です。GoCDはを使用してインストールできますYUM。公式リポジトリをシステムにインストールします。

sudo curl https://download.gocd.org/gocd.repo -o /etc/yum.repos.d/gocd.repo

システムにGoCDサーバーをインストールします。

sudo yum install -y go-server

GoCDを起動して、起動時に自動的に起動するようにします。

sudo systemctl start go-server
sudo systemctl enable go-server

GoCDダッシュボードにアクセスする前に、アーティファクトを保存するための新しいディレクトリを作成しましょう。アーティファクトは、オペレーティングシステムとアプリケーションがインストールされているのと同じディスクに保存できます。または、専用のディスクまたはブロックストレージドライブを使用してアーティファクトを保存することもできます。

同じディスクを使用してアーティファクトを保存する場合は、新しいディレクトリを作成し、GoCDユーザーに所有権を提供します。

sudo mkdir /opt/artifacts
sudo chown -R go:go /opt/artifacts

ブロックストレージの構成

GoCDソフトウェアでは、追加のパーティションまたはドライブを使用してアーティファクトを保存することをお勧めします。継続的な統合および配信プラットフォームでは、アーティファクトが非常に頻繁に生成されます。新しいアーチファクトが継続的に生成されると、時間の経過とともにディスク領域が減少します。ある段階で、システムの空きディスク領域が不足し、システムで実行されているサービスが失敗します。この問題を解決するには、新しいVultrブロックストレージドライブを接続して、アーティファクトを保存します。同じドライブにアーティファクトを保存する場合は、「ファイアウォールのセットアップ」セクションに進んでください。

新しいブロックストレージドライブ展開し、GoCDサーバーインスタンスに接続します。次に、ブロックストレージデバイスに新しいパーティションを作成します。

sudo parted -s /dev/vdb mklabel gpt
sudo parted -s /dev/vdb unit mib mkpart primary 0% 100%

新しいディスクにファイルシステムを作成します。

sudo mkfs.ext4 /dev/vdb1

ブロックストレージドライブをマウントします。

sudo mkdir /mnt/artifacts
sudo cp /etc/fstab /etc/fstab.backup
echo "
/dev/vdb1 /mnt/artifacts ext4 defaults,noatime 0 0" | sudo tee -a /etc/fstab
sudo mount /mnt/artifacts

次に、を実行dfすると、新しいブロックストレージドライブがにマウントされてい/mnt/artifactsます。

[user@vultr ~]$ df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/vda1       20616252 6313892  13237464  33% /

...
/dev/vdb1       10188052   36888   9610596   1% /mnt/artifacts

ディレクトリの所有権をGoCDユーザーに提供します。

sudo chown -R go:go /mnt/artifacts

ファイアウォールのセットアップ

ファイアウォール構成を変更して、ポートを許可し、ファイアウォール81538154通過できるようにします。ポート8153は、8154保護されていない接続をリッスンし、ポートは保護された接続をリッスンします。

sudo firewall-cmd --zone=public --add-port=8153/tcp --permanent
sudo firewall-cmd --zone=public --add-port=8154/tcp --permanent
sudo firewall-cmd --reload

これで、GoCDダッシュボードにアクセスできますhttp://192.168.1.1:8153。保護された接続でGoCDダッシュボードにアクセスするには、にアクセスしますhttps://192.168.1.1:8154。証明書が無効であることを示すエラーが表示されます。証明書は自己署名されているため、エラーを無視しても問題ありません。セキュリティ上の理由から、常に安全な接続でダッシュボードを使用する必要があります。

新しいパイプラインを設定する前にAdmin >> Server Configuration、上部のナビゲーションバーから「」に移動します。

Site URL」フィールドに保護されていないサイトへのURLを入力し、「」フィールドに保護されたサイトを入力しますSecure Site URL

CentOS 7にGoCDをインストールして構成する方法

次に、GoCDから電子メール通知を送信するためのSMTPサーバーの詳細を入力します。

CentOS 7にGoCDをインストールして構成する方法

最後に、アーティファクトを保存する場所へのパスを指定します。オペレーティングシステムと同じディスクにアーティファクトを保存することを選択した場合は、と入力し/opt/artifactsます。ブロックストレージドライブの接続を選択した場合は、と入力できます/mnt/artifacts

また、古いアーティファクトを自動削除するようにGoCDを構成できます。ディスクサイズに応じて次のオプションを構成します。ただし、自動削除オプションでは、古いアーティファクトのバックアップは作成されません。手動でバックアップを作成してから古いアーティファクトを削除するには、「Never」オプションの「」オプションを選択して自動削除を無効にしAuto delete old artifactsます。

CentOS 7にGoCDをインストールして構成する方法

新しい変更を適用するには、GoCDサーバーを再起動する必要があります。

sudo systemctl restart go-server

認証のセットアップ

デフォルトでは、GoCDダッシュボードはどのような種類の認証も使用するように構成されていませんが、パスワードファイルとLDAPを使用した認証をサポートしています。このチュートリアルでは、パスワードベースの認証を設定します。

認証の設定はオプションのステップですが、Vultrなどの公開サーバーには強く推奨されます。

htpasswdコマンドを使用して暗号化されたパスワードファイルを作成できるように、Apacheツールをインストールします。

sudo yum -y install httpd-tools

htpasswdBcrypt暗号化を使用するコマンドでパスワードファイルを作成します。

sudo htpasswd -B -c /etc/go/passwd_auth goadmin

ユーザーのパスワードを2回入力します。次の出力が表示されます。

[user@vultr ~]$ sudo htpasswd -B -c /etc/go/passwd_auth goadmin
New password:
Re-type new password:
Adding password for user goadmin

上記と同じコマンドを使用して、-cオプションを削除して、必要な数のユーザーを追加できます。この-cオプションは、既存のファイルを置き換え、古いユーザーを新しいユーザーに置き換えます。

sudo htpasswd -B /etc/go/passwd_auth gouser1

パスワードファイルを作成したので、GoCDダッシュボードに再度アクセスします。Admin >> Security >> Authorization Configurations上部のナビゲーションバーから「」に移動します。ボタンをクリックしてAdd、IDを入力します。Password File Authentication Plugin for GoCDプラグインIDとして「」を選択し、パスワードファイルへのパスを指定します。次に、「Check Connection」ボタンをクリックして、GoCDが認証にパスワードファイルを使用できることを確認します。

CentOS 7にGoCDをインストールして構成する方法

最後に、認証方法を保存します。ダッシュボードをリロードすると、自動的にログアウトされます。ログイン画面が表示されます。以前に作成した資格情報を使用してログインします。

管理者ユーザーを手動で昇格する必要があります。そうしないと、すべてのユーザーに管理者権限が付与されます。Admin >> User Summary上部のナビゲーションバーから「」に移動します。

次に、作成した管理者ユーザーを選択して、「Roles」ドロップダウンをクリックします。「Go System Administrator」チェックボックスを選択して、ユーザーを唯一の管理者に昇格させます。

CentOS 7にGoCDをインストールして構成する方法

パスワードファイルに作成されたGoCDのユーザーを追加するには、[] ADDボタンをクリックして、追加するユーザーを検索します。また、ユーザーは最初のログイン時にGoCDダッシュボードに自動的に追加されます。明らかに、ユーザーがログインするには、前に作成したパスワードファイルに追加する必要があります。

Let's Encrypt SSLによるGoCDの保護

デフォルトでは、GoCDはポート81538154安全な接続をリッスンします。ポート8154はアプリケーションへの安全な接続を提供しますが、自己署名証明書を使用するため、ブラウザエラーも表示します。チュートリアルのこのセクションでは、Nginxをインストールして、Let's Encryptの無料SSL証明書で保護します。Nginxウェブサーバーは、着信リクエストをGoCDのHTTPエンドポイントに転送するリバースプロキシとして機能します。

Nginxをインストールします。

sudo yum -y install nginx

Nginxを起動し、起動時に自動的に起動するようにします。

sudo systemctl start nginx
sudo systemctl enable nginx

Let's Encrypt CAのクライアントアプリケーションであるCertbotをインストールします。

sudo yum -y install certbot

証明書を要求する前に、ポート80443、または標準HTTPHTTPSサービスをファイアウォール経由で許可する必要があります。また、8153保護されていない接続をリッスンするポートを削除します。

sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --zone=public --remove-port=8153/tcp --permanent
sudo firewall-cmd --reload

Let's Encrypt CAから証明書を取得するには、証明書を生成するドメインをサーバーに向ける必要があります。そうでない場合は、ドメインのDNSレコードに必要な変更を加え、DNSが伝播するのを待ってから、証明書要求を再度行ってください。証明書ボットは、証明書を提供する前にドメイン認証局をチェックします。

SSL証明書を生成します。

sudo certbot certonly --webroot -w /usr/share/nginx/html -d gocd.example.com

生成された証明書は、おそらくに保存され/etc/letsencrypt/live/gocd.example.com/ます。SSL証明書はとして保存されfullchain.pem、秘密鍵はとして保存されprivkey.pemます。

証明書を暗号化しましょう90日で有効期限が切れるので、cronジョブを使用して証明書の自動更新を設定することをお勧めします。

cronジョブファイルを開きます。

sudo crontab -e

ファイルの最後に次の行を追加します。

30 5 * * * /usr/bin/certbot renew --quiet

上記のcronジョブは、毎日午前5時30分に実行されます。証明書の有効期限が切れる場合は、自動的に更新されます。

次に、Nginxのデフォルト構成ファイルを変更して、default_server行を削除します。

sudo sed -i 's/default_server//g' /etc/nginx/nginx.conf

GoCD Webインターフェース用の新しい構成ファイルを作成します。

sudo nano /etc/nginx/conf.d/gocd.conf

ファイルに入力します。

upstream gocd {
server 127.0.0.1:8153;
}

server {
    listen 80 default_server;
    server_name gocd.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 default_server;
    server_name gocd.example.com;

    ssl_certificate           /etc/letsencrypt/live/gocd.example.com/fullchain.pem;
    ssl_certificate_key       /etc/letsencrypt/live/gocd.example.com/privkey.pem;

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    access_log  /var/log/nginx/gocd.access.log;

location / {
        proxy_pass http://gocd;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
        proxy_redirect off;
    }
location /go {
    proxy_pass http://gocd/go;
    proxy_http_version 1.1;
    proxy_set_header Upgrade websocket;
    proxy_set_header Connection upgrade;
    proxy_read_timeout 86400;
    }
  }

新しい構成ファイルのエラーを確認します。

sudo nginx -t

次の出力が表示された場合、構成にエラーはありません。

[user@vultr ~]$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

何らかのエラーを受け取った場合は、SSL証明書へのパスを再確認してください。Nginx Webサーバーを再起動して、構成の変更を実装します。

sudo systemctl restart nginx

これで、GoCDダッシュボードにアクセスできますhttps://gocd.example.com。管理者の資格情報を使用してダッシュボードにログインしAdmin >> Server Configuration、上部のナビゲーションバーから「」に移動します。

CentOS 7にGoCDをインストールして構成する方法

Site URL」と「Secure Site URL」をに設定しhttps://gocd.example.comます。ポートは8154まだ、リモートエージェントはポートを介してサーバーに接続できるようにファイアウォールを経由してアクセスできるようにする必要があります8154彼らは標準を介して接続することができない場合には、HTTPポート。

GoCDエージェントのインストール

GoCD継続的統合環境では、GoCDエージェントはすべてのタスクの実行を担当するワーカーです。ソースの変更が検出されると、パイプラインがトリガーされ、実行可能なジョブにジョブが割り当てられます。次に、エージェントはタスクを実行し、実行後の最終ステータスを報告します。

パイプラインを実行するには、少なくとも1つのエージェントを構成する必要があります。GoCDサーバーへのGoCDエージェントのインストールに進みます。

GoCDリポジトリはサーバーにすでにインポートされているため、Go Agentを直接インストールできます。

sudo yum install -y go-agent

GoCDサーバーを起動し、起動時に自動的に起動するようにします。

sudo systemctl start go-agent
sudo systemctl enable go-agent

ローカルホストで実行されているGoCDエージェントは、検出されると自動的に有効になります。



Leave a Comment

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。