私の現在のjujuモデルには、いくつかのコンテナを備えた1台のマシンがあります
Machine State
14 started
14/lxd/2 started
14/lxd/20 started
2つのローカルチャームを含むローカルバンドルをデプロイしたい。俺の bundle.yaml
は次のようになります。
services:
elasticsearch:
charm: /home/user/charms/trusty/elasticsearch
num_units: 1
to: ['lxd:14']
metricbeat:
charm: /home/user/charms/trusty/metricbeat
series: trusty
relations:
- - "elasticsearch:client"
- "metricbeat:elasticsearch"
今、14番マシンのLXDコンテナーにelasticsearchチャームが欲しいのですが、juju deploy ~/elastic5-bundle
次のエラーが表示されます。
ERROR the provided bundle has the following errors:
placement "lxd:14" refers to a machine not defined in this bundle
しかし、bundle.yamlにマシン14を追加すると、チャームをマシン14にデプロイする代わりに新しいマシンが作成されます。バンドル内のチャームを既存のマシンにデプロイするソリューションはありますか?
最新のJujuバージョン(2.3)では、バンドルのデプロイ時に使用できるフラグがあることに気付きました。ドキュメントを見つけました ここ :
新しいマシンを作成するのではなく、バンドルにモデルの既存のマシンを使用させるには、--map-machines=existing
オプションが使用されます。さらに、マッピングに特定のマシンを指定するために、バンドルIDと既存IDがトップレベルのマシンIDを参照する「bundle-id = existing-id」形式のコンマ区切り値を渡すことができます。
たとえば、YAMLファイルがマシン1、2、3、および4で構成されているバンドルと、マシン1、2、3、4、および5を含むモデルを考えます。次の展開では、バンドルに既存のマシン1および2を使用しますマシン1および2が、バンドルマシン3には既存のマシン4を使用し、バンドルマシン4には既存のマシン5を使用します。
juju deploy some-bundle --map-machines=existing,3=4,4=5
Juju deployコマンドを使用して、チャームを既存のマシンにデプロイすることはできません。そのためには、マシンをバンドルで定義する必要があります。
バンドルは次のようになります。
machines:
'14':
constraints: <any constraint for example tags=machine14 or mem=3048 or Arch=AMD64>
services:
elasticsearch:
charm: /home/user/charms/trusty/elasticsearch
num_units: 1
to: ['lxd:14']
metricbeat:
charm: /home/user/charms/trusty/metricbeat
series: trusty
relations:
- - "elasticsearch:client"
- "metricbeat:elasticsearch"
おそらくjuju-deployerを使用して可能です。このリポジトリを追加してjuju-deployerをインストールします。
$ Sudo add-apt-repository ppa:tvansteenburgh/ppa
バンドルを次のように定義します。
phase1:
services:
elasticsearch:
charm: /home/user/charms/trusty/elasticsearch
num_units: 1
to: ['lxd:14']
metricbeat:
charm: /home/user/charms/trusty/metricbeat
series: trusty
relations:
- - "elasticsearch:client"
- "metricbeat:elasticsearch"
次に、次のコマンドを実行してデプロイします。
$ juju-deployer -c bundle.yaml phase1