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