CircleCI Server v3.x VM サービス

CircleCI Server の VM サービスでは、https://circleci.com/docs/2.0/executor-types/#using-machin[machine]Executor (Linux イメージおよび Windows イメージ) とhttps://circleci.com/docs/2.0/building-docker-images[リモート Docker]ジョブの実行方法を制御できます。

このセクションでは、VM サービスで利用可能な構成オプションについて説明します。

CircleCI Server の構成と検証が完了するまで、これらのオプションはデフォルトのままにしておくことをお勧めします。

AWS EC2

AWS EC2 を使う場合は、以下のフィールドを設定して VM サービスを構成する必要があります。 VM サービスで使用するアクセス キーとシークレット キーは、前述のオブジェクト ストレージ用のポリシーとは異なることに注意してください。

  1. [AWS Region (AWS リージョン)] (必須): アプリケーションのリージョンを指定します。

  2. [AWS Windows AMI ID] (オプション): Windows ビルダーが必要な場合、その AMI ID をここに指定できます。

  3. [Subnet ID (サブネット ID)] (必須): VM のデプロイ先になるサブネット (パブリックまたはプライベート) を選択します。 なお、すべてのサブネットが同じアベイラビリティーゾーンにある必要があります。

  4. [Security Group ID (セキュリティ グループ ID)] (必須): VM にアタッチするセキュリティ グループを指定します。

推奨されるセキュリティ グループ構成については、https://circleci.com/docs/2.0/server-3-install-hardening-your-cluster[クラスタのハードニング]を参照してください。

  1. [AWS IAM Access Key ID (AWS IAM アクセス キー ID)] (必須): EC2 へのアクセス用の AWS アクセス キー ID を指定します。

  2. [AWS IAM Secret Key (AWS IAM シークレット キー)] (必須): EC2 へのアクセス用の IAM シークレット キーを指定します。

プログラムでのアクセスが可能な新規ユーザーを作成することをお勧めします。 新規ユーザーには、以下の IAM ポリシーをアタッチしてください。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": "ec2:RunInstances",
      "Effect": "Allow",
      "Resource": [
        "arn:aws:ec2:*::image/*",
        "arn:aws:ec2:*::snapshot/*",
        "arn:aws:ec2:*:*:key-pair/*",
        "arn:aws:ec2:*:*:launch-template/*",
        "arn:aws:ec2:*:*:network-interface/*",
        "arn:aws:ec2:*:*:placement-group/*",
        "arn:aws:ec2:*:*:volume/*",
        "arn:aws:ec2:*:*:subnet/*",
        "arn:aws:ec2:*:*:security-group/${SECURITY_GROUP_ID}"
      ]
    },
    {
      "Action": "ec2:RunInstances",
      "Effect": "Allow",
      "Resource": "arn:aws:ec2:*:*:instance/*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/ManagedBy": "circleci-vm-service"
        }
      }
    },
    {
      "Action": [
        "ec2:CreateVolume"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:ec2:*:*:volume/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/ManagedBy": "circleci-vm-service"
        }
      }
    },
    {
      "Action": [
        "ec2:Describe*"
      ],
      "Effect": "Allow",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:CreateTags"
      ],
      "Resource": "arn:aws:ec2:*:*:*/*",
      "Condition": {
        "StringEquals": {
          "ec2:CreateAction" : "CreateVolume"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:CreateTags"
      ],
      "Resource": "arn:aws:ec2:*:*:*/*",
      "Condition": {
        "StringEquals": {
          "ec2:CreateAction" : "RunInstances"
        }
      }
    },
    {
      "Action": [
        "ec2:CreateTags",
        "ec2:StartInstances",
        "ec2:StopInstances",
        "ec2:TerminateInstances",
        "ec2:AttachVolume",
        "ec2:DetachVolume",
        "ec2:DeleteVolume"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:ec2:*:*:*/*",
      "Condition": {
        "StringEquals": {
          "ec2:ResourceTag/ManagedBy": "circleci-vm-service"
        }
      }
    },
    {
      "Action": [
        "ec2:RunInstances",
        "ec2:StartInstances",
        "ec2:StopInstances",
        "ec2:TerminateInstances"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:ec2:*:*:subnet/*",
      "Condition": {
        "StringEquals": {
          "ec2:Vpc": "${VPC_ARN}"
        }
      }
    }
  ]
}

Google Cloud Platform

Google Cloud Platform (GCP) を使う場合は、以下のフィールドを設定して VM サービスを構成する必要があります。

  1. [GCP project ID (GCP プロジェクト ID)] (必須): クラスタが存在する GCP プロジェクトの名前を指定します。

  2. [GCP Zone (GCP ゾーン)] (必須): IEの `us-east1-b`に仮想マシン インスタンスを作成する GCP ゾーンを指定します。

  3. [GCP Windows Image (GCP Windows イメージ)] (オプション): Windows ビルドに使用するイメージの名前を指定します。 Windows ビルドが不要な場合は、このフィールドを空欄にします。

  4. [GCP VPC Network (GCP VPC ネットワーク)] (必須): VPC ネットワークの名前を指定します。

  5. [GCP VPC Subnet (GCP VPC サブネット)] (オプション): VPC サブネットの名前を指定します。 自動サブネット化を使用する場合は、このフィールドは空欄にします。

  6. [GCP Service Account JSON file (GCP サービス アカウントの JSON ファイル)] (必須): サービス アカウントの JSON ファイルの内容をコピー & ペーストします。

VM サービス専用の一意のサービス アカウントを作成することをお勧めします。 コンピューティング インスタンス管理者 (ベータ版) ロールは、VM サービスを運用するための広範な権限を持っています。 アクセス権限をより詳細に設定したい場合は、https://cloud.google.com/compute/docs/access/iam#compute.instanceAdmin[コンピューティング インスタンス管理者 (ベータ版) ロール]のドキュメント]を参照してください。

VM サービスの設定

  1. [Number of <VM type> VMs to keep prescaled (事前スケーリングする <VM タイプ> の VM 数)]: デフォルトでは、このフィールドは 0 に設定されています。 この値の場合、該当するリソース タイプのインスタンスがオンデマンドで作成、プロビジョニングされます。 リソース タイプごとにインスタンスを最大 5 つまで事前割り当てできます。 インスタンスを事前に割り当てると、起動時間が短くなり、マシンと remote_docker のビルド速度が速くなります。 ただし、事前割り当てされたインスタンスは常に実行されるため、コストが増加する可能性があります。 また、この設定値を減らす場合、変更が反映されるまで最大で 24 時間かかります。 これらのインスタンスは、必要に応じて手動で終了できます。

  2. [VM Service Custom Configuration (VM サービスのカスタム構成)]: カスタム構成では、VM サービスのさまざまな点を微調整することができます。 これは高度なオプションですので、詳細については担当のアカウント マネージャーに問い合わせることをお勧めします。



ドキュメントの改善にご協力ください

このガイドは、CircleCI の他のドキュメントと同様にオープンソースで、GitHub で使用できます。 ご協力いただき、ありがとうございます。


クリエイティブ・コモンズ・ライセンス
CircleCICircleCI ドキュメントは、クリエイティブ・コモンズの表示--非営利-継承 4.0 国際ライセンス に基づいてライセンス供与されています。