mirror of
https://github.com/kevingruesser/bootstrap-vz.git
synced 2025-12-17 23:20:21 +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='')
|