web-dev-qa-db-ja.com

ローカルバンドルを既存のマシンに展開する

私の現在の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にデプロイする代わりに新しいマシンが作成されます。バンドル内のチャームを既存のマシンにデプロイするソリューションはありますか?

1
SebastienPattyn

最新の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

1
SebastienPattyn

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
2
Junaid