MAAS - use scripts de preseeds diferentes baseados em zona ou tag

1

Eu gostaria de usar scripts de preseeds diferentes baseados na zona do MAAS. Mas acho que isso não é possível no momento, talvez haja outra solução de como usar scripts de preseeds diferentes baseados em tags ou algo similar?

A documentação não mostrou nenhum exemplo ou informação se é possível .

Obrigado pela sua ajuda!

    
por drscream 15.05.2014 / 18:33

2 respostas

1

Como os generic e preseed_master são gerados automaticamente pelo mecanismo de modelo Tempita , podemos acessar os objetos do django / python e decidir quais partes de um script preseed são chamadas.

Por exemplo, eu criei algumas zonas (produção, teste) e usei espelhos diferentes para o recurso que é necessário. Eu modifiquei o arquivo generic para adicionar uma definição extra:

{{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}}

Esta definição pode ser facilmente chamada no arquivo preseed_master via:

{{self.example}}

Você pode acessar todas as informações do nó com o objeto node . Todos os detalhes do objeto / módulo podem ser verificados no código-fonte em /usr/lib/python2.7/dist-packages/maasserver/models/node.py

    
por drscream 16.05.2014 / 15:29
0

Para um preseed baseado em tags, você pode fazer:

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

Se a sua parte 'preseed', em que você usa isso, for herdada, então você não pode usar o {{inherit "File"}}. Neste momento.

    
por Rein 13.06.2014 / 13:59