Continuous Everythingな昨今、CI/CDツールは無償・有償を問わず市場に出回っていますがPuppet Pipeliensにはどんな特徴があるのでしょうか?
Puppet Pipelinesとは?
Puppet PipelinesはPuppet社が提供しているCI/CDツールです。従来型のアプリケーションを対象としたPipelines for Applicationsとコンテナ型のアプリケーションを対象としたPipelines for Containersの2種類があります。直感的なUIでデリバリーパイプラインを可視化できることが売りです。
環境
Puppet Pilenes for Application : 2019年2月時点の最新版
OS : CentOS 7(3.10.0-957.1.3.el7.x86_64)
Docker : version 18.09.1, build 4c52b90
Docker Compose : version 1.23.2, build 1110ad01
ブラウザ : Chrome
インストール
Puppet PipelinesはDockerコンテナ上で稼働するApplicationで、JFrog Artifactory/MySQL/Pipelinesの3つのコンテナで構成されていまqす。インストールするにはDockerとDocker Composeがインストールされている必要があります。この記事ではこちらとこちらの記事を参考にインストールしています。
docker-compose.yamlを任意のディレクトリに置きます。
version: '2.1'
services:
pfa:
container_name: pfa
ports:
- "8080:8080"
- "7000:7000"
- "8000:8000"
image: puppet/pipelines-for-applications:latest
environment:
DB_ENDPOINT: mysql://db:3306/pfa
USER: pfa
MYSQL_PWD: puppetlabs
depends_on:
- db
- artifactory
db:
image: mysql:5.7
container_name: pfa_db
restart: always
environment:
MYSQL_ROOT_PASSWORD: puppetlabs
MYSQL_DATABASE: pfa
MYSQL_USER: pfa
MYSQL_PASSWORD: puppetlabs
artifactory:
image: docker.bintray.io/jfrog/artifactory-oss:5.8.3
container_name: pfa_artifactory
ports:
- 8081:8081
volumes:
- data_s3:/var/opt/jfrog/artifactory
volumes:
db_data:
name: pfa_db_data
data_s3:
name: pfa_data_s3
docker-compose.yamlを置いたディレクトリでdocker-composeを実行してコンテナイメージをダウンロード、コンテナを作成します。
$ docker-compose up -d
コンテナの稼働状況を確認します。
$ docker ps --all
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
73bb20314f47 puppet/pipelines-for-applications:latest "/sbin/init" About a minute ago Up About a minute 0.0.0.0:7000->7000/tcp, 0.0.0.0:8000->8000/tcp, 0.0.0.0:8080->8080/tcp pfa
92b1aaf5533f docker.bintray.io/jfrog/artifactory-oss:5.8.3 "/entrypoint-artifac…" About a minute ago Up About a minute 0.0.0.0:8081->8081/tcp pfa_artifactory
4e97877517ff mysql:5.7 "docker-entrypoint.s…" About a minute ago Up About a minute 3306/tcp, 33060/tcp pfa_db
念の為コンテナが利用しているポートがListenしているか確認します。
$ netstat -tulpn
-- 省略 --
tcp6 0 0 :::7000 :::* LISTEN -
tcp6 0 0 :::8000 :::* LISTEN -
tcp6 0 0 :::8080 :::* LISTEN -
tcp6 0 0 :::8081 :::* LISTEN -
-- 省略 --
設定
JFrog
Chromeでhttp://:8081にアクセスしてWelcome画面でNextを押します。
Genericを選択してCreateを押します。次の画面でFinishを押します。JFrogの設定はおわりです。
Pipelines for Applications
Puppet社のライセンス管理サイトから30日間無償で利用可能な評価版ライセンスを入手します。アカウントの登録が必要です。
Chromeでhttp://:8080にアクセスして管理者アカウントを設定して次の画面でライセンスファイルを投入します。
WebUI, Backend Service, Agent Serviceのエンドポイントを設定します。hostnameはFQDNを指定します。
- WebUI : http://:8081
- Backend Service : http://:8080
- Agent Service : http://:7000
StorageはArtifactoryチェックボックスを選択します。
- Artifactory Repository : JFrogの設定時に選択したリポジトリ
- Artifactory Endpoint : http://:8081/ --> hostnameはFQDNを指定します。
- Artifactory Access Token : 下記のコマンドで取得します。--> 画面右に記載されているコマンドをコピーペーストするとうまく動かないため手で入力する必要があります。
- Path Prefix : 任意の名前
$ curl -X POST -u admin:ncya6t4x http://localhost:8081/artifactory/api/security/apiKey
{"apiKey":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}
Integrationsは後でデリバリーパイプラインを作るときに設定できるためここではSkipします。
おわりに
この記事はオンプレミス環境で利用するシーンを想定していますがPipelinesはSaaS版もあります。SaaS版を使えば面倒なインストール作業はいらないよね?クラウドファースト時代なのに何故?と思われがちですが、重要な企業資産をインターネット上に安易に公開できない、SaaSの利用は企業ポリシーで制限されているというお客様も多いのが実情です。
Puppet Pipelinesはあらゆるお客様のご事情を鑑みたCI/CDツールです!