apt-getでインストールできるs3cmdのバージョンは古いためマルチパートアップロード機能が使えません。IDCFオブジェクトストレージで使うs3cmdをGitHubから最新バージョンをcloneしてビルドして使ってみます。
Salt Formula
前回作成したFormulaのディレクトリ構造に、common.slsとs3cmdのFormulaを追加します。
$ tree /srv/salt/ |
base.sls
base.slsは前回から変更はありません。
ja_JP.UTF-8: |
top.sls
roles:dev
をGrainsで指定しているminionに、s3cmdのFormula SLSを適用します。
base: |
common.sls
SLSファイルで共通して使うstatesをcommon.slsに定義します。個別のSLSファイルからincludeして使います。
pkg-core: |
Pillar
Pillarはminionに定義するGrainと違い、masterに定義するデータです。masterに保存しますが、該当のminionしか利用できないデータです。最初にディレクトリを作成します。
$ mkdir -p /srv/pillar/ |
masterのディレクトリ構成は以下のようになります。
$ tree /srv/pillar/ |
Salt Formula
と同じようにtop.slsファイルを作成します。
base: |
s3cmdのPillarには、IDCFオブジェクトストレージの認証に利用するaccess_key
とsecret_key
を定義します。
s3cmd: |
pillar
モジュールのitems
functionを使い、Pillarに定義したデータを確認します。
$ salt '*' pillar.items |
Pillarで定義したデータは、Formulaをminionに適用するときに以下のように参照することができます。.s3cfgのテンプレートは通常の設定ファイルを使いますが、エンドポイントの設定をIDCFオブジェクトストレージ用に変更します。また、access_keyとsecret_keyをPillarから動的に取得します。
[default] |
s3cmd Formula
s3cmdのSLSファイルでは、common.slsをincludeして使います。s3cmdはGitHubからcloneします。cmd.waitのstateではgit clone
の状態を監視して、リポジトリが更新されたらpython setup.py install
を実行してs3cmdをビルドします。s3cmdのビルドにはpython-dateutilが必要なので、pipからインストールします。それぞれrequireでcommon.slsの実行を前提条件にします。
file stateを使いテンプレートとPillarに定義したキー情報を代入して/root/.s3cfg
に配置します。
include: |
state.highstateで全てのFormulaを適用する
highstate
functionを使い、Salt Formula
のすべてのSLSファイルをminionに適用します。'*'
のワイルドカードを指定して、すべてのminionを対象にします。s3cmdはroles:dev
をGrainsで指定しているminion1とminion2にインストールされます。
$ salt '*' state.highstate |
確認
s3cmdのバージョンを確認します。
$ salt 'minion2*' cmd.run 's3cmd --version' |
s3cmd ls
を実行してIDCFオブジェクトストレージのバケツを一覧します。
$ salt 'minion1*' cmd.run 's3cmd ls' |