これはYahoo! JAPAN 18 新卒 Advent Calendar 2018の9日目の記事、及びConcourse Advent Calendar 2018の9日目です。
同じ記事で複数advent calendarなんて不思議な話ですが、まあそれはそれ(そんなことするから、Concourseの他の記事と内容が類似しちゃうんだよ)
題名通り、AWSでConcourseを試してみよう的な記事。
Concourseを自前でも欲しいって事で、やってみる。
今回はDockerを使います。BOSHを使ってもよいのですが、AWSの無料枠は1ヶ月750時間なので複数インスタンスを使うのはお財布に厳しい!
事前準備
- AWSのインスタンス(今回はAmazon Linux AMI 2018.03.0 (HVM), SSD Volume Type)の用意。
- Docker install
- Docker Compose install
- (gitも入れておくと良い)
インスタンスの立ち上げ方とか、dockerのinstallとかは無限に記事があるので、そちらをご参照下さい。
Concourseを立ち上げる
wget https://raw.githubusercontent.com/starkandwayne/concourse-tutorial/master/docker-compose.yml
ありがたい事に公式のdockerイメージと、それを利用したdocker-compose.ymlがあるので、それを手に入れましょう。
ただしこれはlocalで使う用途のものなので、23行目を下記のように編集して下さい(YOUR_AWS_IPは、インスタンスのIPに書き換えてください)
- CONCOURSE_EXTERNAL_URL=http://YOUR_AWS_IP:8080
これで準備は出来たので、後は
docker-compose up -d
を実行するだけ。これで http://YOUR_AWS_IP:8080 にアクセスするとConcourseが立ち上がってるのが確認できます。
※ アクセスできない場合は、恐らくAWSのインスタンスが8080ポートを開放してない可能性があります。インスタンのセキュリティグループ=>インバウンド=>編集から8080/tcpを追加して下さい。
後は右上のloginから、userとpassにadminと入力するだけ!(今回はローカルではないので、docker-compose.ymlからuserとpasswordを変更しておくと良いかも) loginが上手くいかない場合は、CONCOURSE_EXTERNAL_URLに正しい値が入ってないからかも。
Concourseを操作する
基本、Concourseはflyと呼ばれるコマンドを使って操作します。fly自体のinstallは
wget "http://YOUR_AWS_IP:8080/api/v1/cli?arch=amd64&platform=linux" -O fly
sudo install fly /usr/local/bin
で出来ます。fly --version
で4.2.1
と表示されたらOK。
此処まで出来たら、後は好き勝手にpipelineを作って自由にできる!
fly --target admin login --concourse-url http://YOUR_AWS_IP:8080 -u admin -p admin
fly -t admin set-pipeline -c pipeline.yml -p hello-world
終わりに
今回は、Concourseを取り敢えず個人用に使って見たかったので、AWSとかいう簡単にインスタンスを立ち上げられるものと一緒に合わせて作りました。
此処まで出来たら、後は豊富なConcourseのresourceを使って何でも出来ます。discordのbotとかいうニッチな物も作られてるので、俺はslackじゃなくてdiscordで情報管理をしたいんだ! みたいな要望にも答えられて素敵!
参考