mirror of
https://github.com/kevingruesser/bootstrap-vz.git
synced 2025-08-22 09:50:37 +00:00

As the printed strings contain newlines, this causes a space to be written as the first character of the following line causing them to be indented. An example config that is broken. Here disabling modules indents all the other lines of cloud.cfg except the first one causing the username name setting to fail as it expects indenting to be certain number of spaces. plugins: cloud_init: metadata_sources: Ec2 username: admin disable_modules: - locale - mounts This commit removes the spaces by specifying end=''.
34 lines
1.1 KiB
Python
34 lines
1.1 KiB
Python
from __future__ import print_function
|
|
|
|
from bootstrapvz.base import Task
|
|
from bootstrapvz.common import phases
|
|
|
|
|
|
class AddNtpPackage(Task):
|
|
description = 'Adding NTP Package'
|
|
phase = phases.preparation
|
|
|
|
@classmethod
|
|
def run(cls, info):
|
|
info.packages.add('ntp')
|
|
|
|
|
|
class SetNtpServers(Task):
|
|
description = 'Setting NTP servers'
|
|
phase = phases.system_modification
|
|
|
|
@classmethod
|
|
def run(cls, info):
|
|
import fileinput
|
|
import os
|
|
import re
|
|
ntp_path = os.path.join(info.root, 'etc/ntp.conf')
|
|
servers = list(info.manifest.plugins['ntp']['servers'])
|
|
debian_ntp_server = re.compile('.*[0-9]\.debian\.pool\.ntp\.org.*')
|
|
for line in fileinput.input(files=ntp_path, inplace=True):
|
|
# Will write all the specified servers on the first match, then supress all other default servers
|
|
if re.match(debian_ntp_server, line):
|
|
while servers:
|
|
print('server {server_address} iburst'.format(server_address=servers.pop(0)))
|
|
else:
|
|
print(line, end='')
|