MAASゾーンに基づいた異なるプレシードスクリプトを使用したいと思います。しかし、現時点ではこれは不可能だと思います。タグなどに基づくスクリプトなど、さまざまなプレシードを使用する別の解決策があるのではないでしょうか。
documentation 可能であれば、例や情報は表示されませんでした。
ご協力いただきありがとうございます!
generic
とpreseed_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
のソースコードで確認できます。
タグに基づくpreseedの場合、次のことができます。
{{if 'bigDisk' in (node.tag_names())}}
...
{{Elif 'smallDisk' in (node.tag_names())}}
...
{{else}}
...
{{endif}}
これを使用する「preseed」部分が継承されている場合、{{inherit "File"}}は使用できません。現時点では。