templates: separate genesis and join sources
Currently, the package, repository, and key lists are used by up.sh for genesis and join. This is not desirable when using an in-cluster mirroring service, as the service address may change after it has been deployed. This commit separates the sources for genesis and join to circumvent the aforementioned pain point. A 'common' entry in the 'promenade/HostSystem/v1' document can be used if a common source for genesis and join is desired. Co-authored-by: Rick Bartra <rb560u@att.com> Change-Id: Ieb2513da0cff587297cfcbf5629d908696349621
This commit is contained in:
parent
09ce03160a
commit
8748348b96
@ -37,44 +37,127 @@ data:
|
||||
kubernetes:
|
||||
kubectl: gcr.io/google_containers/hyperkube-amd64:v1.11.6
|
||||
packages:
|
||||
repositories:
|
||||
- deb http://apt.dockerproject.org/repo ubuntu-xenial main
|
||||
keys:
|
||||
- |-
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
common:
|
||||
repositories:
|
||||
- deb http://apt.dockerproject.org/repo ubuntu-xenial main
|
||||
keys:
|
||||
- |-
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
mQINBFWln24BEADrBl5p99uKh8+rpvqJ48u4eTtjeXAWbslJotmC/CakbNSqOb9o
|
||||
ddfzRvGVeJVERt/Q/mlvEqgnyTQy+e6oEYN2Y2kqXceUhXagThnqCoxcEJ3+KM4R
|
||||
mYdoe/BJ/J/6rHOjq7Omk24z2qB3RU1uAv57iY5VGw5p45uZB4C4pNNsBJXoCvPn
|
||||
TGAs/7IrekFZDDgVraPx/hdiwopQ8NltSfZCyu/jPpWFK28TR8yfVlzYFwibj5WK
|
||||
dHM7ZTqlA1tHIG+agyPf3Rae0jPMsHR6q+arXVwMccyOi+ULU0z8mHUJ3iEMIrpT
|
||||
X+80KaN/ZjibfsBOCjcfiJSB/acn4nxQQgNZigna32velafhQivsNREFeJpzENiG
|
||||
HOoyC6qVeOgKrRiKxzymj0FIMLru/iFF5pSWcBQB7PYlt8J0G80lAcPr6VCiN+4c
|
||||
NKv03SdvA69dCOj79PuO9IIvQsJXsSq96HB+TeEmmL+xSdpGtGdCJHHM1fDeCqkZ
|
||||
hT+RtBGQL2SEdWjxbF43oQopocT8cHvyX6Zaltn0svoGs+wX3Z/H6/8P5anog43U
|
||||
65c0A+64Jj00rNDr8j31izhtQMRo892kGeQAaaxg4Pz6HnS7hRC+cOMHUU4HA7iM
|
||||
zHrouAdYeTZeZEQOA7SxtCME9ZnGwe2grxPXh/U/80WJGkzLFNcTKdv+rwARAQAB
|
||||
tDdEb2NrZXIgUmVsZWFzZSBUb29sIChyZWxlYXNlZG9ja2VyKSA8ZG9ja2VyQGRv
|
||||
Y2tlci5jb20+iQI4BBMBAgAiBQJVpZ9uAhsvBgsJCAcDAgYVCAIJCgsEFgIDAQIe
|
||||
AQIXgAAKCRD3YiFXLFJgnbRfEAC9Uai7Rv20QIDlDogRzd+Vebg4ahyoUdj0CH+n
|
||||
Ak40RIoq6G26u1e+sdgjpCa8jF6vrx+smpgd1HeJdmpahUX0XN3X9f9qU9oj9A4I
|
||||
1WDalRWJh+tP5WNv2ySy6AwcP9QnjuBMRTnTK27pk1sEMg9oJHK5p+ts8hlSC4Sl
|
||||
uyMKH5NMVy9c+A9yqq9NF6M6d6/ehKfBFFLG9BX+XLBATvf1ZemGVHQusCQebTGv
|
||||
0C0V9yqtdPdRWVIEhHxyNHATaVYOafTj/EF0lDxLl6zDT6trRV5n9F1VCEh4Aal8
|
||||
L5MxVPcIZVO7NHT2EkQgn8CvWjV3oKl2GopZF8V4XdJRl90U/WDv/6cmfI08GkzD
|
||||
YBHhS8ULWRFwGKobsSTyIvnbk4NtKdnTGyTJCQ8+6i52s+C54PiNgfj2ieNn6oOR
|
||||
7d+bNCcG1CdOYY+ZXVOcsjl73UYvtJrO0Rl/NpYERkZ5d/tzw4jZ6FCXgggA/Zxc
|
||||
jk6Y1ZvIm8Mt8wLRFH9Nww+FVsCtaCXJLP8DlJLASMD9rl5QS9Ku3u7ZNrr5HWXP
|
||||
HXITX660jglyshch6CWeiUATqjIAzkEQom/kEnOrvJAtkypRJ59vYQOedZ1sFVEL
|
||||
MXg2UCkD/FwojfnVtjzYaTCeGwFQeqzHmM241iuOmBYPeyTY5veF49aBJA1gEJOQ
|
||||
TvBR8Q==
|
||||
=Fm3p
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
additional:
|
||||
- ceph-common
|
||||
- curl
|
||||
- jq
|
||||
required:
|
||||
docker: docker-engine
|
||||
socat: socat
|
||||
mQINBFWln24BEADrBl5p99uKh8+rpvqJ48u4eTtjeXAWbslJotmC/CakbNSqOb9o
|
||||
ddfzRvGVeJVERt/Q/mlvEqgnyTQy+e6oEYN2Y2kqXceUhXagThnqCoxcEJ3+KM4R
|
||||
mYdoe/BJ/J/6rHOjq7Omk24z2qB3RU1uAv57iY5VGw5p45uZB4C4pNNsBJXoCvPn
|
||||
TGAs/7IrekFZDDgVraPx/hdiwopQ8NltSfZCyu/jPpWFK28TR8yfVlzYFwibj5WK
|
||||
dHM7ZTqlA1tHIG+agyPf3Rae0jPMsHR6q+arXVwMccyOi+ULU0z8mHUJ3iEMIrpT
|
||||
X+80KaN/ZjibfsBOCjcfiJSB/acn4nxQQgNZigna32velafhQivsNREFeJpzENiG
|
||||
HOoyC6qVeOgKrRiKxzymj0FIMLru/iFF5pSWcBQB7PYlt8J0G80lAcPr6VCiN+4c
|
||||
NKv03SdvA69dCOj79PuO9IIvQsJXsSq96HB+TeEmmL+xSdpGtGdCJHHM1fDeCqkZ
|
||||
hT+RtBGQL2SEdWjxbF43oQopocT8cHvyX6Zaltn0svoGs+wX3Z/H6/8P5anog43U
|
||||
65c0A+64Jj00rNDr8j31izhtQMRo892kGeQAaaxg4Pz6HnS7hRC+cOMHUU4HA7iM
|
||||
zHrouAdYeTZeZEQOA7SxtCME9ZnGwe2grxPXh/U/80WJGkzLFNcTKdv+rwARAQAB
|
||||
tDdEb2NrZXIgUmVsZWFzZSBUb29sIChyZWxlYXNlZG9ja2VyKSA8ZG9ja2VyQGRv
|
||||
Y2tlci5jb20+iQI4BBMBAgAiBQJVpZ9uAhsvBgsJCAcDAgYVCAIJCgsEFgIDAQIe
|
||||
AQIXgAAKCRD3YiFXLFJgnbRfEAC9Uai7Rv20QIDlDogRzd+Vebg4ahyoUdj0CH+n
|
||||
Ak40RIoq6G26u1e+sdgjpCa8jF6vrx+smpgd1HeJdmpahUX0XN3X9f9qU9oj9A4I
|
||||
1WDalRWJh+tP5WNv2ySy6AwcP9QnjuBMRTnTK27pk1sEMg9oJHK5p+ts8hlSC4Sl
|
||||
uyMKH5NMVy9c+A9yqq9NF6M6d6/ehKfBFFLG9BX+XLBATvf1ZemGVHQusCQebTGv
|
||||
0C0V9yqtdPdRWVIEhHxyNHATaVYOafTj/EF0lDxLl6zDT6trRV5n9F1VCEh4Aal8
|
||||
L5MxVPcIZVO7NHT2EkQgn8CvWjV3oKl2GopZF8V4XdJRl90U/WDv/6cmfI08GkzD
|
||||
YBHhS8ULWRFwGKobsSTyIvnbk4NtKdnTGyTJCQ8+6i52s+C54PiNgfj2ieNn6oOR
|
||||
7d+bNCcG1CdOYY+ZXVOcsjl73UYvtJrO0Rl/NpYERkZ5d/tzw4jZ6FCXgggA/Zxc
|
||||
jk6Y1ZvIm8Mt8wLRFH9Nww+FVsCtaCXJLP8DlJLASMD9rl5QS9Ku3u7ZNrr5HWXP
|
||||
HXITX660jglyshch6CWeiUATqjIAzkEQom/kEnOrvJAtkypRJ59vYQOedZ1sFVEL
|
||||
MXg2UCkD/FwojfnVtjzYaTCeGwFQeqzHmM241iuOmBYPeyTY5veF49aBJA1gEJOQ
|
||||
TvBR8Q==
|
||||
=Fm3p
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
additional:
|
||||
- ceph-common
|
||||
- curl
|
||||
- jq
|
||||
required:
|
||||
docker: docker-engine
|
||||
socat: socat
|
||||
genesis:
|
||||
repositories:
|
||||
- deb http://apt.dockerproject.org/repo ubuntu-xenial main
|
||||
keys:
|
||||
- |-
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
mQINBFWln24BEADrBl5p99uKh8+rpvqJ48u4eTtjeXAWbslJotmC/CakbNSqOb9o
|
||||
ddfzRvGVeJVERt/Q/mlvEqgnyTQy+e6oEYN2Y2kqXceUhXagThnqCoxcEJ3+KM4R
|
||||
mYdoe/BJ/J/6rHOjq7Omk24z2qB3RU1uAv57iY5VGw5p45uZB4C4pNNsBJXoCvPn
|
||||
TGAs/7IrekFZDDgVraPx/hdiwopQ8NltSfZCyu/jPpWFK28TR8yfVlzYFwibj5WK
|
||||
dHM7ZTqlA1tHIG+agyPf3Rae0jPMsHR6q+arXVwMccyOi+ULU0z8mHUJ3iEMIrpT
|
||||
X+80KaN/ZjibfsBOCjcfiJSB/acn4nxQQgNZigna32velafhQivsNREFeJpzENiG
|
||||
HOoyC6qVeOgKrRiKxzymj0FIMLru/iFF5pSWcBQB7PYlt8J0G80lAcPr6VCiN+4c
|
||||
NKv03SdvA69dCOj79PuO9IIvQsJXsSq96HB+TeEmmL+xSdpGtGdCJHHM1fDeCqkZ
|
||||
hT+RtBGQL2SEdWjxbF43oQopocT8cHvyX6Zaltn0svoGs+wX3Z/H6/8P5anog43U
|
||||
65c0A+64Jj00rNDr8j31izhtQMRo892kGeQAaaxg4Pz6HnS7hRC+cOMHUU4HA7iM
|
||||
zHrouAdYeTZeZEQOA7SxtCME9ZnGwe2grxPXh/U/80WJGkzLFNcTKdv+rwARAQAB
|
||||
tDdEb2NrZXIgUmVsZWFzZSBUb29sIChyZWxlYXNlZG9ja2VyKSA8ZG9ja2VyQGRv
|
||||
Y2tlci5jb20+iQI4BBMBAgAiBQJVpZ9uAhsvBgsJCAcDAgYVCAIJCgsEFgIDAQIe
|
||||
AQIXgAAKCRD3YiFXLFJgnbRfEAC9Uai7Rv20QIDlDogRzd+Vebg4ahyoUdj0CH+n
|
||||
Ak40RIoq6G26u1e+sdgjpCa8jF6vrx+smpgd1HeJdmpahUX0XN3X9f9qU9oj9A4I
|
||||
1WDalRWJh+tP5WNv2ySy6AwcP9QnjuBMRTnTK27pk1sEMg9oJHK5p+ts8hlSC4Sl
|
||||
uyMKH5NMVy9c+A9yqq9NF6M6d6/ehKfBFFLG9BX+XLBATvf1ZemGVHQusCQebTGv
|
||||
0C0V9yqtdPdRWVIEhHxyNHATaVYOafTj/EF0lDxLl6zDT6trRV5n9F1VCEh4Aal8
|
||||
L5MxVPcIZVO7NHT2EkQgn8CvWjV3oKl2GopZF8V4XdJRl90U/WDv/6cmfI08GkzD
|
||||
YBHhS8ULWRFwGKobsSTyIvnbk4NtKdnTGyTJCQ8+6i52s+C54PiNgfj2ieNn6oOR
|
||||
7d+bNCcG1CdOYY+ZXVOcsjl73UYvtJrO0Rl/NpYERkZ5d/tzw4jZ6FCXgggA/Zxc
|
||||
jk6Y1ZvIm8Mt8wLRFH9Nww+FVsCtaCXJLP8DlJLASMD9rl5QS9Ku3u7ZNrr5HWXP
|
||||
HXITX660jglyshch6CWeiUATqjIAzkEQom/kEnOrvJAtkypRJ59vYQOedZ1sFVEL
|
||||
MXg2UCkD/FwojfnVtjzYaTCeGwFQeqzHmM241iuOmBYPeyTY5veF49aBJA1gEJOQ
|
||||
TvBR8Q==
|
||||
=Fm3p
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
additional:
|
||||
- ceph-common
|
||||
- curl
|
||||
- jq
|
||||
required:
|
||||
docker: docker-engine
|
||||
socat: socat
|
||||
join:
|
||||
repositories:
|
||||
- deb http://apt.dockerproject.org/repo ubuntu-xenial main
|
||||
keys:
|
||||
- |-
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
mQINBFWln24BEADrBl5p99uKh8+rpvqJ48u4eTtjeXAWbslJotmC/CakbNSqOb9o
|
||||
ddfzRvGVeJVERt/Q/mlvEqgnyTQy+e6oEYN2Y2kqXceUhXagThnqCoxcEJ3+KM4R
|
||||
mYdoe/BJ/J/6rHOjq7Omk24z2qB3RU1uAv57iY5VGw5p45uZB4C4pNNsBJXoCvPn
|
||||
TGAs/7IrekFZDDgVraPx/hdiwopQ8NltSfZCyu/jPpWFK28TR8yfVlzYFwibj5WK
|
||||
dHM7ZTqlA1tHIG+agyPf3Rae0jPMsHR6q+arXVwMccyOi+ULU0z8mHUJ3iEMIrpT
|
||||
X+80KaN/ZjibfsBOCjcfiJSB/acn4nxQQgNZigna32velafhQivsNREFeJpzENiG
|
||||
HOoyC6qVeOgKrRiKxzymj0FIMLru/iFF5pSWcBQB7PYlt8J0G80lAcPr6VCiN+4c
|
||||
NKv03SdvA69dCOj79PuO9IIvQsJXsSq96HB+TeEmmL+xSdpGtGdCJHHM1fDeCqkZ
|
||||
hT+RtBGQL2SEdWjxbF43oQopocT8cHvyX6Zaltn0svoGs+wX3Z/H6/8P5anog43U
|
||||
65c0A+64Jj00rNDr8j31izhtQMRo892kGeQAaaxg4Pz6HnS7hRC+cOMHUU4HA7iM
|
||||
zHrouAdYeTZeZEQOA7SxtCME9ZnGwe2grxPXh/U/80WJGkzLFNcTKdv+rwARAQAB
|
||||
tDdEb2NrZXIgUmVsZWFzZSBUb29sIChyZWxlYXNlZG9ja2VyKSA8ZG9ja2VyQGRv
|
||||
Y2tlci5jb20+iQI4BBMBAgAiBQJVpZ9uAhsvBgsJCAcDAgYVCAIJCgsEFgIDAQIe
|
||||
AQIXgAAKCRD3YiFXLFJgnbRfEAC9Uai7Rv20QIDlDogRzd+Vebg4ahyoUdj0CH+n
|
||||
Ak40RIoq6G26u1e+sdgjpCa8jF6vrx+smpgd1HeJdmpahUX0XN3X9f9qU9oj9A4I
|
||||
1WDalRWJh+tP5WNv2ySy6AwcP9QnjuBMRTnTK27pk1sEMg9oJHK5p+ts8hlSC4Sl
|
||||
uyMKH5NMVy9c+A9yqq9NF6M6d6/ehKfBFFLG9BX+XLBATvf1ZemGVHQusCQebTGv
|
||||
0C0V9yqtdPdRWVIEhHxyNHATaVYOafTj/EF0lDxLl6zDT6trRV5n9F1VCEh4Aal8
|
||||
L5MxVPcIZVO7NHT2EkQgn8CvWjV3oKl2GopZF8V4XdJRl90U/WDv/6cmfI08GkzD
|
||||
YBHhS8ULWRFwGKobsSTyIvnbk4NtKdnTGyTJCQ8+6i52s+C54PiNgfj2ieNn6oOR
|
||||
7d+bNCcG1CdOYY+ZXVOcsjl73UYvtJrO0Rl/NpYERkZ5d/tzw4jZ6FCXgggA/Zxc
|
||||
jk6Y1ZvIm8Mt8wLRFH9Nww+FVsCtaCXJLP8DlJLASMD9rl5QS9Ku3u7ZNrr5HWXP
|
||||
HXITX660jglyshch6CWeiUATqjIAzkEQom/kEnOrvJAtkypRJ59vYQOedZ1sFVEL
|
||||
MXg2UCkD/FwojfnVtjzYaTCeGwFQeqzHmM241iuOmBYPeyTY5veF49aBJA1gEJOQ
|
||||
TvBR8Q==
|
||||
=Fm3p
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
additional:
|
||||
- ceph-common
|
||||
- curl
|
||||
- jq
|
||||
required:
|
||||
docker: docker-engine
|
||||
socat: socat
|
||||
...
|
||||
|
@ -81,10 +81,11 @@ class Builder:
|
||||
|
||||
def build_genesis_script(self):
|
||||
LOG.info('Building genesis script')
|
||||
genesis_roles = ['common', 'genesis']
|
||||
sub_config = self.config.extract_genesis_config()
|
||||
tarball = renderer.build_tarball_from_roles(
|
||||
config=sub_config,
|
||||
roles=['common', 'genesis'],
|
||||
roles=genesis_roles,
|
||||
file_specs=self.file_cache.values())
|
||||
|
||||
(encrypted_tarball, decrypt_setup_command, decrypt_command,
|
||||
@ -98,7 +99,8 @@ class Builder:
|
||||
'decrypt_setup_command': decrypt_setup_command,
|
||||
'decrypt_teardown_command': decrypt_teardown_command,
|
||||
'encrypted_tarball': encrypted_tarball,
|
||||
})
|
||||
},
|
||||
roles=genesis_roles)
|
||||
|
||||
def _build_genesis_validate_script(self):
|
||||
sub_config = self.config.extract_genesis_config()
|
||||
@ -118,13 +120,14 @@ class Builder:
|
||||
validate_script)
|
||||
|
||||
def build_node_script(self, node_name):
|
||||
build_roles = ['common', 'join']
|
||||
sub_config = self.config.extract_node_config(node_name)
|
||||
file_spec_paths = [
|
||||
f['path'] for f in self.config.get_path('HostSystem:files', [])
|
||||
]
|
||||
file_specs = [self.file_cache[p] for p in file_spec_paths]
|
||||
tarball = renderer.build_tarball_from_roles(
|
||||
config=sub_config, roles=['common', 'join'], file_specs=file_specs)
|
||||
config=sub_config, roles=build_roles, file_specs=file_specs)
|
||||
|
||||
(encrypted_tarball, decrypt_setup_command, decrypt_command,
|
||||
decrypt_teardown_command) = _encrypt_node(sub_config, tarball)
|
||||
@ -137,7 +140,8 @@ class Builder:
|
||||
'decrypt_setup_command': decrypt_setup_command,
|
||||
'decrypt_teardown_command': decrypt_teardown_command,
|
||||
'encrypted_tarball': encrypted_tarball,
|
||||
})
|
||||
},
|
||||
roles=build_roles)
|
||||
|
||||
def _build_node_validate_script(self, node_name):
|
||||
sub_config = self.config.extract_node_config(node_name)
|
||||
|
@ -82,10 +82,13 @@ def render_template_into_bundler(*, bundler, config, destination_path,
|
||||
bundler.add(path=destination_path, data=data, mode=mode)
|
||||
|
||||
|
||||
def render_template(config, *, template, context=None):
|
||||
def render_template(config, *, template, context=None, roles=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
|
||||
if roles is None:
|
||||
roles = {}
|
||||
|
||||
template_contents = pkg_resources.resource_string(
|
||||
'promenade', os.path.join('templates', template))
|
||||
|
||||
@ -93,7 +96,7 @@ def render_template(config, *, template, context=None):
|
||||
|
||||
template_obj = env.from_string(template_contents.decode('utf-8'))
|
||||
try:
|
||||
return template_obj.render(config=config, **context)
|
||||
return template_obj.render(config=config, roles=roles, **context)
|
||||
except jinja2.exceptions.TemplateRuntimeError as e:
|
||||
LOG.exception('Error rendering template (%s)' % template)
|
||||
raise exceptions.TemplateRenderException(
|
||||
|
@ -115,36 +115,104 @@ data:
|
||||
|
||||
packages:
|
||||
type: object
|
||||
properties:
|
||||
additional:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/definitions/package'
|
||||
keys:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/definitions/public_key'
|
||||
common:
|
||||
type: object
|
||||
properties:
|
||||
additional:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/definitions/package'
|
||||
keys:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/definitions/public_key'
|
||||
|
||||
required:
|
||||
type: object
|
||||
properties:
|
||||
docker:
|
||||
$ref: '#/definitions/package'
|
||||
socat:
|
||||
$ref: '#/definitions/package'
|
||||
required:
|
||||
- docker
|
||||
- socat
|
||||
additionalProperties: false
|
||||
|
||||
repositories:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/definitions/apt_source_line'
|
||||
|
||||
required:
|
||||
type: object
|
||||
properties:
|
||||
docker:
|
||||
$ref: '#/definitions/package'
|
||||
socat:
|
||||
- required
|
||||
additionalProperties: false
|
||||
|
||||
genesis:
|
||||
type: object
|
||||
properties:
|
||||
additional:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/definitions/package'
|
||||
keys:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/definitions/public_key'
|
||||
|
||||
required:
|
||||
- docker
|
||||
- socat
|
||||
additionalProperties: false
|
||||
type: object
|
||||
properties:
|
||||
docker:
|
||||
$ref: '#/definitions/package'
|
||||
socat:
|
||||
$ref: '#/definitions/package'
|
||||
required:
|
||||
- docker
|
||||
- socat
|
||||
additionalProperties: false
|
||||
|
||||
repositories:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/definitions/apt_source_line'
|
||||
repositories:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/definitions/apt_source_line'
|
||||
|
||||
required:
|
||||
- required
|
||||
additionalProperties: false
|
||||
required:
|
||||
- required
|
||||
additionalProperties: false
|
||||
|
||||
join:
|
||||
type: object
|
||||
properties:
|
||||
additional:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/definitions/package'
|
||||
keys:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/definitions/public_key'
|
||||
|
||||
required:
|
||||
type: object
|
||||
properties:
|
||||
docker:
|
||||
$ref: '#/definitions/package'
|
||||
socat:
|
||||
$ref: '#/definitions/package'
|
||||
required:
|
||||
- docker
|
||||
- socat
|
||||
additionalProperties: false
|
||||
|
||||
repositories:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/definitions/apt_source_line'
|
||||
|
||||
required:
|
||||
- required
|
||||
additionalProperties: false
|
||||
|
||||
validation:
|
||||
type: object
|
||||
|
@ -32,11 +32,13 @@ set +x
|
||||
log
|
||||
log === Adding APT Keys===
|
||||
set -x
|
||||
{%- for key in config.get_path('HostSystem:packages.keys', []) %}
|
||||
{% for role in roles %}
|
||||
{%- for key in config.get_path('HostSystem:packages.' + role + '.keys', []) %}
|
||||
apt-key add - <<"ENDKEY"
|
||||
{{ key }}
|
||||
ENDKEY
|
||||
{%- endfor %}
|
||||
{%- endfor %}
|
||||
|
||||
# Disable swap
|
||||
#
|
||||
@ -79,24 +81,28 @@ while true; do
|
||||
fi
|
||||
done
|
||||
|
||||
end=$(($(date +%s) + 600))
|
||||
while true; do
|
||||
if ! DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
|
||||
{%- for package in config['HostSystem:packages.additional'] | default([]) %}
|
||||
{{ package }} \
|
||||
{%- endfor %}
|
||||
{{ config['HostSystem:packages.required.docker'] }} \
|
||||
{{ config['HostSystem:packages.required.socat'] }}; then
|
||||
now=$(date +%s)
|
||||
if [[ ${now} -gt ${end} ]]; then
|
||||
log Failed to install apt packages.
|
||||
exit 1
|
||||
fi
|
||||
sleep 10
|
||||
else
|
||||
break
|
||||
fi
|
||||
done
|
||||
{% for role in roles %}
|
||||
{%- if config['HostSystem:packages.' + role + '.repositories'] is defined %}
|
||||
end=$(($(date +%s) + 600))
|
||||
while true; do
|
||||
if ! DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
|
||||
{%- for package in config['HostSystem:packages.' + role + '.additional'] | default([]) %}
|
||||
{{ package }} \
|
||||
{%- endfor %}
|
||||
{{ config['HostSystem:packages.' + role + '.required.docker'] }} \
|
||||
{{ config['HostSystem:packages.' + role + '.required.socat'] }}; then
|
||||
now=$(date +%s)
|
||||
if [[ ${now} -gt ${end} ]]; then
|
||||
log Failed to install apt packages.
|
||||
exit 1
|
||||
fi
|
||||
sleep 10
|
||||
else
|
||||
break
|
||||
fi
|
||||
done
|
||||
{%- endif %}
|
||||
{% endfor %}
|
||||
|
||||
# Start core processes
|
||||
#
|
||||
|
@ -1,3 +1,3 @@
|
||||
{%- for repo in config.get_path('HostSystem:packages.repositories', []) %}
|
||||
{%- for repo in config.get_path('HostSystem:packages.common.repositories', []) %}
|
||||
{{ repo }}
|
||||
{%- endfor %}
|
||||
|
@ -0,0 +1,3 @@
|
||||
{%- for repo in config.get_path('HostSystem:packages.genesis.repositories', []) %}
|
||||
{{ repo }}
|
||||
{%- endfor %}
|
@ -0,0 +1,3 @@
|
||||
{%- for repo in config.get_path('HostSystem:packages.join.repositories', []) %}
|
||||
{{ repo }}
|
||||
{%- endfor %}
|
@ -10,6 +10,8 @@ log () {
|
||||
TO_RM=(
|
||||
"/etc/apt/apt.conf.d/20-proxy.conf"
|
||||
"/etc/apt/sources.list.d/promenade-sources.list"
|
||||
"/etc/apt/sources.list.d/promenade-genesis-sources.list"
|
||||
"/etc/apt/sources.list.d/promenade-join-sources.list"
|
||||
"/etc/cni"
|
||||
"/etc/coredns"
|
||||
"/etc/docker/daemon.json"
|
||||
|
Loading…
x
Reference in New Issue
Block a user