このページについて
ライブラリ管理のススメ(概要)のほぼ続きです。
主にArtifactoryについて書きます。
動機
構成管理サーバって毎回似たようなもの入れるけど、無駄じゃない?
最近Infrastructure as Codeって流行ってるからコード化して楽しよう。
なぜVagrant + Ansibleにしたか
簡単に使えるため。
Ansibleのエージェントレスというのが特に気に入ってます。
扱わないもの
インフラのテスト
プロダクト
動作確認環境
- OS:Windows7 Pro(64bit)、Windows10、Windows Server 2012 R2
- RAM: 4GB
※ゲストは2GB設定
構成
色々入れていますが、Artifactoryの部分だけこのページでは扱います。
使い方
- 上記のGitHubリポジトリをcloneする or zipダウンロード
- Vagrantをダウンロードする(1.9.3はprivateなゲストにport forwardするとIPアドレスのチェック(0.0.0.0は許さん)でエラーになるため、それ以外を入れてください(1.9.4で修正されるはず))
- Oracle Virtual boxをインストールする
- vagrantにboxを追加する
vagrant box add centos7.2 https://github.com/CommanderK5/packer-centos-template/releases/download/0.7.2/vagrant-centos-7.2.box
5.git cloneした配下でvagrant up
ページ
- GitBucket
http://localhost:48081/gitbucket - Jenkins
http://localhost:48080 - Artifactory
http://localhost:48081/artifactory
永続領域
git(gitbucket)、jenkins、Artifactoryの各種データはVagrant上のゲストOS上には置いてません。
データはゲストから見た"/vagrant"配下に置くことで、ホストOS上に配置し、
サーバーの引越しなどはしやすいようにしています。
※Artifactoryだけderby使っているためデータのExportが必要
Artifactoryについて
メリット
- 対応リポジトリがとにかく多い
- リポジトリのアクセスをするための設定を作ってくれるので、コピペできる
- どこがセントラルと繋がっていて、どこがローカルオンリーかがわかる
- リポジトリが(Cache含め)持っているArtifactを見せてくれる
デメリット
- RPMインストールすると、ディレクトリを作りすぎ&シンボリックリンク当てまくりなため、どこに何があるのかが判りづらい
Artifactoryに登録してみる
MAVENを使ってデプロイしてみます。
登録するプロダクトは以下です。
https://github.com/sh-ogawa/artifactory-demo-parent
※pom.xmlだけを登録するプロダクト
今は何も登録されていないです。
libs-snapshot-localに登録してみます。
mvn deploy -e
登録されました。
いま登録したartifactを各サブプロダクトのpomに、parentで取り込んであげれば、
いちいちサーバーの設定を入れなくて済んでスマートですね。
注意事項
別のサーバーに引っ越す場合
Artifactory以外はフォルダのコピペすればOKなのですが、
ArtifactoryのデータだけはExportが必要です。
これをやらないとderbyのチェックサムに引っかかって、データを移せないです。
ZIPファイルが出てくるので、引越し先でインポートしてあげればOK。
※同じ画面にインポートがある
最後に
ローカル環境にリポジトリを持つことを取り扱ってみました。
SIの現場でこういった環境で開発している現場は、まだまだ稀です。
その原因は「無知」な訳ですが、有識者がレッスンしても私の経験では何も変えられなかったです。
それは、環境が自分たちで用意できないことが特に大きいと感じているので、
このプロダクトで以って、色々啓蒙できたらな、と思っています。
こういう開発をしたいけどできていない人、是非このプロダクトを使って提案をしてみてください。
2017/4/8追加
プロキシで虐げられるであろう会社内では以下を行ってください。
- vagrantfileでproxyの設定をできるようにする
どこでも良いので以下のコマンドを実行
vagrant plugin install vagrant-proxyconf
- Vagrantfileの最後のendの前に以下を記述
config.proxy.http = "http://ホスト:ポート"
config.proxy.https = "http://ホスト:ポート"
config.proxy.no_proxy = "localhost,127.0.0.1"