Merge "Added ntpd service start to prescript" into folsom

This commit is contained in:
Jenkins
2013-01-28 14:18:27 +00:00
committed by Gerrit Code Review
2 changed files with 121 additions and 1 deletions

View File

@@ -2,6 +2,7 @@
Plugin responsible for setting Openstack global options
"""
import uuid
import logging
import packstack.installer.engine_validators as validate
@@ -96,6 +97,18 @@ def initConfig(controllerObject):
"USE_DEFAULT" : False,
"NEED_CONFIRM" : False,
"CONDITION" : False },
{"CMD_OPTION" : "ntp-severs",
"USAGE" : "Comma separated list of NTP servers. Leave plain if packstack should not install ntpd on instances.",
"PROMPT" : "Enter list of NTP server(s). Leave plain if packstack should not install ntpd on instances.",
"OPTION_LIST" : [],
"VALIDATION_FUNC" : lambda param, options: True,
"DEFAULT_VALUE" : '',
"MASK_INPUT" : False,
"LOOSE_VALIDATION": False,
"CONF_NAME" : "CONFIG_NTP_SERVERS",
"USE_DEFAULT" : False,
"NEED_CONFIRM" : False,
"CONDITION" : False },
]
groupDict = { "GROUP_NAME" : "GLOBAL",
"DESCRIPTION" : "Global Options",
@@ -111,8 +124,34 @@ def initSequences(controller):
]
controller.addSequence("Running Pre install scripts", [], [], osclientsteps)
if controller.CONF['CONFIG_NTP_SERVERS']:
ntp_step = [{'functions': [create_ntp_manifest],
'title': 'Installing time synchronization via NTP'}]
controller.addSequence('Installing time synchronization via NTP', [], [], ntp_step)
else:
controler.MESSAGES.append('Time synchronization installation was '
'skipped. Please note that unsynchronized '
'time on server instances might be problem '
'for some OpenStack components.')
def createmanifest():
for hostname in gethostlist(controller.CONF):
manifestfile = "%s_prescript.pp" % hostname
manifestdata = getManifestTemplate("prescript.pp")
appendManifestFile(manifestfile, manifestdata)
appendManifestFile(manifestfile, manifestdata)
def create_ntp_manifest():
servers = ''
for srv in controller.CONF['CONFIG_NTP_SERVERS'].split(','):
srv = srv.strip()
validate.validatePing(srv)
servers += 'server %s\n' % srv
controller.CONF.setdefault('CONFIG_NTP_FIRST_SERVER', srv)
controller.CONF['CONFIG_NTP_SERVERS'] = servers
marker = uuid.uuid4().hex[:16]
for hostname in gethostlist(controller.CONF):
manifestdata = getManifestTemplate('ntpd.pp')
appendManifestFile('%s_ntpd.pp' % hostname,
manifestdata,
marker=marker)

View File

@@ -0,0 +1,81 @@
$config_content = "
driftfile /var/lib/ntp/drift
# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system.
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
# Permit all access over the loopback interface. This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
restrict 127.0.0.1
restrict -6 ::1
# Hosts on local network are less restricted.
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
%(CONFIG_NTP_SERVERS)s
#broadcast 192.168.1.255 autokey # broadcast server
#broadcastclient # broadcast client
#broadcast 224.0.1.1 autokey # multicast server
#multicastclient 224.0.1.1 # multicast client
#manycastserver 239.255.254.254 # manycast server
#manycastclient 239.255.254.254 autokey # manycast client
# Undisciplined Local Clock. This is a fake driver intended for backup
# and when no outside source of synchronized time is available.
#server 127.127.1.0 # local clock
#fudge 127.127.1.0 stratum 10
# Enable public key cryptography.
#crypto
includefile /etc/ntp/crypto/pw
# Key file containing the keys and key identifiers used when operating
# with symmetric key cryptography.
keys /etc/ntp/keys
# Specify the key identifiers which are trusted.
#trustedkey 4 8 42
# Specify the key identifier to use with the ntpdc utility.
#requestkey 8
# Specify the key identifier to use with the ntpq utility.
#controlkey 8
# Enable writing of statistics records.
#statistics clockstats cryptostats loopstats peerstats
"
package {'ntp':
ensure => 'installed',
name => 'ntp',
}
file {'ntp_config':
path => '/etc/ntp.conf',
ensure => file,
mode => '0644',
content => $config_content,
}
exec {'ntpdate':
command => '/usr/sbin/ntpdate %(CONFIG_NTP_FIRST_SERVER)s',
}
service {'ntpd':
ensure => 'running',
enable => true,
name => 'ntpd',
hasstatus => true,
hasrestart => true,
}
Package['ntp'] -> File['ntp_config'] -> Exec['ntpdate'] -> Service['ntpd']