web-dev-qa-db-ja.com

MAAS-ゾーンまたはタグに基づいて異なるプレシードスクリプトを使用する

MAASゾーンに基づいた異なるプレシードスクリプトを使用したいと思います。しかし、現時点ではこれは不可能だと思います。タグなどに基づくスクリプトなど、さまざまなプレシードを使用する別の解決策があるのではないでしょうか。

documentation 可能であれば、例や情報は表示されませんでした。

ご協力いただきありがとうございます!

1
drscream

genericpreseed_masterはテンプレートエンジンによって自動的に生成されるため Tempita Django/pythonからオブジェクトにアクセスできますプレシードスクリプトのどの部分を呼び出すかを決定します。

たとえば、いくつかのゾーン(本番、ステージング)を作成し、必要なリソースに異なるミラーを使用しています。 genericファイルを変更して、定義を追加しました。

{{def example}}
# set repository based on zone name
#·{{node.zone}}
{{if node.zone.name in {'staging',} }}
d-i apt-setup/local0/repository string deb https://repo.example.com/ubuntu staging/
d-i apt-setup/local0/comment string staging repository
d-i apt-setup/local0/key sting http://repo.example.com/repo.key
{{endif}}
{{if node.zone.name in {'production',} }}
d-i apt-setup/local0/repository string deb https://repo.example.com/ubuntu production/
d-i apt-setup/local0/comment string production repository
d-i apt-setup/local0/key sting http://repo.example.com/repo.key
{{endif}}
d-i apt-setup/local1/repository string deb https://repo.example.com/ubuntu common/
d-i apt-setup/local1/comment string common reposiotry
d-i apt-setup/local1/key sting http://repo.example.com/repo.key
d-i pkgsel/include string git jenkins-slave jenkins-scripts ntp
{{enddef}}

この定義は、次の方法でpreseed_masterファイルで簡単に呼び出すことができます。

{{self.example}}

オブジェクトnodeを使用してすべてのノード情報にアクセスできます。すべてのオブジェクト/モジュールの詳細は、/usr/lib/python2.7/dist-packages/maasserver/models/node.pyのソースコードで確認できます。

1
drscream

タグに基づくpreseedの場合、次のことができます。

{{if 'bigDisk' in (node.tag_names())}}
  ...
{{Elif 'smallDisk' in (node.tag_names())}}
  ...
{{else}}
  ...
{{endif}}

これを使用する「preseed」部分が継承されている場合、{{inherit "File"}}は使用できません。現時点では。

0
Rein