MAAS - 根据区域或标签使用不同的预置脚本

MAAS - 根据区域或标签使用不同的预置脚本

我想根据 MA​​AS 区域使用不同的预置脚本。但我认为目前还不可能,也许还有其他解决方案,即如何根据标签或类似的东西使用不同的预置脚本?

文档如果可能的话,没有显示任何示例或信息。

感谢您的帮助!

答案1

因为genericpreseed_master是由模板引擎自动生成的坦皮塔我们可以从 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

答案2

对于基于标签的预置,您可以执行以下操作:

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

如果您使用的“预置”部分是继承的,那么您就无法使用 {{inherit "File"}}。目前。

相关内容