Merge "Some fixes in cloud-init templates in fuel-agent"
This commit is contained in:
commit
ab5f2860dd
@ -94,7 +94,11 @@ cloud-init-per instance nailgun_agent echo 'flock -w 0 -o /var/lock/agent.lock -
|
||||
# Copying default bash settings to the root directory
|
||||
cloud-init-per instance skel_bash cp -f /etc/skel/.bash* /root/
|
||||
|
||||
cloud-init-per instance clean_repos find /etc/yum.repos.d/. -name '*.repo' -delete
|
||||
|
||||
# Puppet config
|
||||
cloud-init-per instance hiera_puppet mkdir -p /etc/puppet /var/lib/hiera
|
||||
cloud-init-per instance touch_puppet touch /var/lib/hiera/common.yaml /etc/puppet/hiera.yaml
|
||||
|
||||
cloud-init-per instance clean_repos find /etc/yum.repos.d/. -name '*.repo' -delete
|
||||
# Mcollective enable
|
||||
cloud-init-per instance mcollective_enable sed -i /etc/rc.d/init.d/mcollective -e 's/\(# chkconfig:\s\+[-0-6]\+\) [0-9]\+ \([0-9]\+\)/\1 81 \2/'
|
||||
|
@ -2,8 +2,14 @@
|
||||
disable_ec2_metadata: true
|
||||
disable_root: false
|
||||
|
||||
# password: RANDOM
|
||||
# chpasswd: { expire: True }
|
||||
|
||||
ssh_pwauth: True
|
||||
ssh_authorized_keys:
|
||||
- {{ common.ssh_auth_key }}
|
||||
{% for key in common.ssh_auth_keys %}
|
||||
- {{ key }}
|
||||
{% endfor %}
|
||||
|
||||
# set the locale to a given locale
|
||||
# default: en_US.UTF-8
|
||||
@ -24,7 +30,6 @@ resolv_conf:
|
||||
# rotate: true
|
||||
# timeout: 1
|
||||
|
||||
|
||||
# add entries to rsyslog configuration
|
||||
rsyslog:
|
||||
- filename: 10-log2master.conf
|
||||
@ -32,15 +37,17 @@ rsyslog:
|
||||
$template LogToMaster, "<%%PRI%>1 %$NOW%T%TIMESTAMP:8:$%Z %HOSTNAME% %APP-NAME% %PROCID% %MSGID% -%msg%\n"
|
||||
*.* @{{ common.master_ip }};LogToMaster
|
||||
|
||||
|
||||
#TODO(agordeev):
|
||||
#mounts: fill /etc/fstab
|
||||
|
||||
|
||||
runcmd:
|
||||
- sed -i /etc/rc.d/init.d/mcollective -e 's/\(# chkconfig:\s\+[-0-6]\+\) [0-9]\+ \([0-9]\+\)/\1 81 \2/'
|
||||
- /sbin/chkconfig mcollective on
|
||||
|
||||
{% if puppet.enable != 1 %}
|
||||
- service puppet stop
|
||||
- chkconfig puppet off
|
||||
{% endif %}
|
||||
{% if mcollective.enable != 1 %}
|
||||
- service mcollective stop
|
||||
- chkconfig mcollective off
|
||||
{% endif %}
|
||||
- iptables -t filter -F INPUT
|
||||
- iptables -t filter -F FORWARD
|
||||
|
||||
# that module's missing in 0.6.3, but existent for >= 0.7.3
|
||||
write_files:
|
||||
@ -53,28 +60,34 @@ write_files:
|
||||
|
||||
|
||||
yum_repos:
|
||||
{% for repo in common.ks_repos %}
|
||||
{{ repo.name }}:
|
||||
baseurl: {{ repo.url }}
|
||||
enabled: true
|
||||
gpgcheck: false
|
||||
{% endfor %}
|
||||
{% for reponame, repourl in common.ks_repos.items() %}
|
||||
{{ reponame }}:
|
||||
baseurl: {{ repourl }}
|
||||
enabled: true
|
||||
gpgcheck: false
|
||||
{% endfor %}
|
||||
|
||||
|
||||
mcollective:
|
||||
conf:
|
||||
main_collective: mcollective
|
||||
collectives: mcollective
|
||||
libdir: /usr/share/mcollective/plugins
|
||||
libdir: /usr/libexec/mcollective
|
||||
logfile: /var/log/mcollective.log
|
||||
loglevel: debug
|
||||
daemonize: 1
|
||||
#NOTE: direct_addressing is 1 for ubuntu
|
||||
direct_addressing: 1
|
||||
ttl: 4294957
|
||||
securityprovider: psk
|
||||
plugin.psk: {{ mcollective.pskey }}
|
||||
connector: {{ mcollective.connector }}
|
||||
{% if mcollective.connector == 'stomp' %}
|
||||
connector = stomp
|
||||
plugin.stomp.host: {{ mcollective.host }}
|
||||
plugin.stomp.port: {{ mcollective.port|default(61613) }}
|
||||
plugin.stomp.user: {{ mcollective.user }}
|
||||
plugin.stomp.password: {{ mcollective.password }}
|
||||
{% else %}
|
||||
connector: rabbitmq
|
||||
plugin.rabbitmq.vhost: {{ mcollective.vhost }}
|
||||
plugin.rabbitmq.pool.size: 1
|
||||
plugin.rabbitmq.pool.1.host: {{ mcollective.host }}
|
||||
@ -82,10 +95,10 @@ mcollective:
|
||||
plugin.rabbitmq.pool.1.user: {{ mcollective.user }}
|
||||
plugin.rabbitmq.pool.1.password: {{ mcollective.password }}
|
||||
plugin.rabbitmq.heartbeat_interval: 30
|
||||
{% endif %}
|
||||
factsource: yaml
|
||||
plugin.yaml: /etc/mcollective/facts.yaml
|
||||
|
||||
|
||||
puppet:
|
||||
conf:
|
||||
main:
|
||||
@ -102,4 +115,3 @@ puppet:
|
||||
|
||||
|
||||
final_message: "YAY! The system is finally up, after $UPTIME seconds"
|
||||
|
||||
|
@ -2,8 +2,11 @@
|
||||
disable_ec2_metadata: true
|
||||
disable_root: false
|
||||
|
||||
ssh_pwauth: True
|
||||
ssh_authorized_keys:
|
||||
- {{ common.ssh_auth_key }}
|
||||
{% for key in common.ssh_auth_keys %}
|
||||
- {{ key }}
|
||||
{% endfor %}
|
||||
|
||||
# set the locale to a given locale
|
||||
# default: en_US.UTF-8
|
||||
@ -33,9 +36,6 @@ rsyslog:
|
||||
*.* @{{ common.master_ip }};LogToMaster
|
||||
|
||||
|
||||
#TODO(agordeev):
|
||||
#mounts: fill /etc/fstab
|
||||
|
||||
# that module's missing in 0.6.3, but existent for >= 0.7.3
|
||||
write_files:
|
||||
- content: |
|
||||
@ -47,10 +47,10 @@ write_files:
|
||||
- content: APT::Get::AllowUnauthenticated 1;
|
||||
path: /etc/apt/apt.conf.d/02mirantis-allow-unsigned
|
||||
|
||||
|
||||
apt_sources:
|
||||
- source: deb http://{{ common.master_ip }}:8080/ubuntu/x86_64 precise main
|
||||
|
||||
{% for reponame, repourl in common.ks_repos.items() %}
|
||||
- source: deb {{ repourl }}
|
||||
{% endfor %}
|
||||
|
||||
mcollective:
|
||||
conf:
|
||||
@ -59,12 +59,19 @@ mcollective:
|
||||
libdir: /usr/share/mcollective/plugins
|
||||
logfile: /var/log/mcollective.log
|
||||
loglevel: debug
|
||||
daemonize: 1
|
||||
direct_addressing: 0
|
||||
daemonize: 0
|
||||
direct_addressing: 1
|
||||
ttl: 4294957
|
||||
securityprovider: psk
|
||||
plugin.psk: {{ mcollective.pskey }}
|
||||
connector: {{ mcollective.connector }}
|
||||
{% if mcollective.connector == 'stomp' %}
|
||||
connector = stomp
|
||||
plugin.stomp.host: {{ mcollective.host }}
|
||||
plugin.stomp.port: {{ mcollective.port|default(61613) }}
|
||||
plugin.stomp.user: {{ mcollective.user }}
|
||||
plugin.stomp.password: {{ mcollective.password }}
|
||||
{% else %}
|
||||
connector: rabbitmq
|
||||
plugin.rabbitmq.vhost: {{ mcollective.vhost }}
|
||||
plugin.rabbitmq.pool.size: 1
|
||||
plugin.rabbitmq.pool.1.host: {{ mcollective.host }}
|
||||
@ -72,10 +79,10 @@ mcollective:
|
||||
plugin.rabbitmq.pool.1.user: {{ mcollective.user }}
|
||||
plugin.rabbitmq.pool.1.password: {{ mcollective.password }}
|
||||
plugin.rabbitmq.heartbeat_interval: 30
|
||||
{% endif %}
|
||||
factsource: yaml
|
||||
plugin.yaml: /etc/mcollective/facts.yaml
|
||||
|
||||
|
||||
puppet:
|
||||
conf:
|
||||
main:
|
||||
@ -90,5 +97,16 @@ puppet:
|
||||
report: false
|
||||
configtimeout: 600
|
||||
|
||||
runcmd:
|
||||
{% if puppet.enable != 1 %}
|
||||
- /usr/sbin/invoke-rc.d puppet stop
|
||||
- /usr/sbin/update-rc.d -f puppet remove
|
||||
{% endif %}
|
||||
{% if mcollective.enable != 1 %}
|
||||
- /usr/sbin/invoke-rc.d mcollective stop
|
||||
- /usr/sbin/update-rc.d -f mcollective remove
|
||||
{% endif %}
|
||||
- iptables -t filter -F INPUT
|
||||
- iptables -t filter -F FORWARD
|
||||
|
||||
final_message: "YAY! The system is finally up, after $UPTIME seconds"
|
||||
|
@ -247,8 +247,13 @@ class Nailgun(object):
|
||||
data['kernel_options']['netcfg/choose_interface']),
|
||||
[dict(name=name, **spec) for name, spec
|
||||
in data['interfaces'].iteritems()])[0]
|
||||
|
||||
ssh_auth_keys = data['ks_meta']['authorized_keys']
|
||||
if data['ks_meta']['auth_key']:
|
||||
ssh_auth_keys.append(data['ks_meta']['auth_key'])
|
||||
|
||||
configdrive_scheme.set_common(
|
||||
ssh_auth_key=data['ks_meta']['auth_key'],
|
||||
ssh_auth_keys=ssh_auth_keys,
|
||||
hostname=data['hostname'],
|
||||
fqdn=data['hostname'],
|
||||
name_servers=data['name_servers'],
|
||||
@ -260,11 +265,14 @@ class Nailgun(object):
|
||||
admin_ip=admin_interface['ip_address'],
|
||||
admin_mask=admin_interface['netmask'],
|
||||
admin_iface_name=admin_interface['name'],
|
||||
timezone=data['ks_meta']['timezone'],
|
||||
timezone=data['ks_meta'].get('timezone', 'America/Los_Angeles'),
|
||||
ks_repos=dict(item.split('=') for item in
|
||||
data['ks_meta']['repo_metadata'].split(','))
|
||||
)
|
||||
|
||||
configdrive_scheme.set_puppet(
|
||||
master=data['ks_meta']['puppet_master']
|
||||
master=data['ks_meta']['puppet_master'],
|
||||
enable=data['ks_meta']['puppet_enable']
|
||||
)
|
||||
|
||||
configdrive_scheme.set_mcollective(
|
||||
@ -273,7 +281,8 @@ class Nailgun(object):
|
||||
host=data['ks_meta']['mco_host'],
|
||||
user=data['ks_meta']['mco_user'],
|
||||
password=data['ks_meta']['mco_password'],
|
||||
connector=data['ks_meta']['mco_connector']
|
||||
connector=data['ks_meta']['mco_connector'],
|
||||
enable=data['ks_meta']['mco_enable']
|
||||
)
|
||||
|
||||
configdrive_scheme.set_profile(profile=data['profile'])
|
||||
@ -294,9 +303,9 @@ class Nailgun(object):
|
||||
image_scheme.add_image(
|
||||
uri=image_data['uri'],
|
||||
target_device=fs.device,
|
||||
# In the future we will get image_format and container format
|
||||
# In the future we will get format and container
|
||||
# from provision.json, but currently it is hard coded.
|
||||
image_format=image_data['format'],
|
||||
format=image_data['format'],
|
||||
container=image_data['container'],
|
||||
)
|
||||
return image_scheme
|
||||
|
@ -174,7 +174,7 @@ class Manager(object):
|
||||
self.image_scheme.add_image(
|
||||
uri='file://%s' % CONF.config_drive_path,
|
||||
target_device=configdrive_device,
|
||||
image_format='iso9660',
|
||||
format='iso9660',
|
||||
container='raw'
|
||||
)
|
||||
|
||||
|
@ -16,10 +16,10 @@ from fuel_agent import errors
|
||||
|
||||
|
||||
class ConfigDriveCommon(object):
|
||||
def __init__(self, ssh_auth_key, hostname, fqdn, name_servers,
|
||||
def __init__(self, ssh_auth_keys, hostname, fqdn, name_servers,
|
||||
search_domain, master_ip, master_url, udevrules, admin_mac,
|
||||
admin_ip, admin_mask, admin_iface_name, timezone):
|
||||
self.ssh_auth_key = ssh_auth_key
|
||||
admin_ip, admin_mask, admin_iface_name, timezone, ks_repos):
|
||||
self.ssh_auth_keys = ssh_auth_keys
|
||||
self.hostname = hostname
|
||||
self.fqdn = fqdn
|
||||
self.name_servers = name_servers
|
||||
@ -32,21 +32,24 @@ class ConfigDriveCommon(object):
|
||||
self.admin_mask = admin_mask
|
||||
self.admin_iface_name = admin_iface_name
|
||||
self.timezone = timezone
|
||||
self.ks_repos = ks_repos
|
||||
|
||||
|
||||
class ConfigDrivePuppet(object):
|
||||
def __init__(self, master):
|
||||
def __init__(self, master, enable):
|
||||
self.master = master
|
||||
self.enable = enable
|
||||
|
||||
|
||||
class ConfigDriveMcollective(object):
|
||||
def __init__(self, pskey, vhost, host, user, password, connector):
|
||||
def __init__(self, pskey, vhost, host, user, password, connector, enable):
|
||||
self.pskey = pskey
|
||||
self.vhost = vhost
|
||||
self.host = host
|
||||
self.user = user
|
||||
self.password = password
|
||||
self.connector = connector
|
||||
self.enable = enable
|
||||
|
||||
|
||||
class ConfigDriveScheme(object):
|
||||
|
@ -19,14 +19,14 @@ class Image(object):
|
||||
SUPPORTED_CONTAINERS = ['raw', 'gzip']
|
||||
|
||||
def __init__(self, uri, target_device,
|
||||
image_format, container, size=None):
|
||||
format, container, size=None):
|
||||
# uri is something like
|
||||
# http://host:port/path/to/image.img or
|
||||
# file:///tmp/image.img
|
||||
self.uri = uri
|
||||
self.target_device = target_device
|
||||
# this must be one of 'iso9660', 'ext[234]', 'xfs'
|
||||
self.image_format = image_format
|
||||
self.format = format
|
||||
if container not in self.SUPPORTED_CONTAINERS:
|
||||
raise errors.WrongImageDataError(
|
||||
'Error while image initialization: '
|
||||
|
@ -40,13 +40,13 @@ class TestConfigDriveScheme(test_base.BaseTestCase):
|
||||
|
||||
def test_template_data_ok(self):
|
||||
cd_common = configdrive.ConfigDriveCommon(
|
||||
'ssh_auth_key', 'hostname', 'fqdn', 'name_servers',
|
||||
['auth_key1', 'auth_key2'], 'hostname', 'fqdn', 'name_servers',
|
||||
'search_domain', 'master_ip', 'master_url', 'udevrules',
|
||||
'admin_mac', 'admin_ip', 'admin_mask', 'admin_iface_name',
|
||||
'timezone')
|
||||
cd_puppet = configdrive.ConfigDrivePuppet('master')
|
||||
'timezone', {'repo1': 'repo1_url', 'repo2': 'repo2_url'})
|
||||
cd_puppet = configdrive.ConfigDrivePuppet('master', 0)
|
||||
cd_mcollective = configdrive.ConfigDriveMcollective(
|
||||
'pskey', 'vhost', 'host', 'user', 'password', 'connector')
|
||||
'pskey', 'vhost', 'host', 'user', 'password', 'connector', 1)
|
||||
self.cd_scheme.common = cd_common
|
||||
self.cd_scheme.puppet = cd_puppet
|
||||
self.cd_scheme.mcollective = cd_mcollective
|
||||
|
@ -176,7 +176,7 @@ class TestManager(test_base.BaseTestCase):
|
||||
self.assertEqual('file://%s' % CONF.config_drive_path, cf_drv_img.uri)
|
||||
self.assertEqual('/dev/sda7',
|
||||
self.mgr.partition_scheme.configdrive_device())
|
||||
self.assertEqual('iso9660', cf_drv_img.image_format)
|
||||
self.assertEqual('iso9660', cf_drv_img.format)
|
||||
self.assertEqual('raw', cf_drv_img.container)
|
||||
|
||||
@mock.patch.object(partition.PartitionScheme, 'configdrive_device')
|
||||
|
@ -105,6 +105,8 @@ PROVISION_SAMPLE_DATA = {
|
||||
"puppet_master": "fuel.domain.tld",
|
||||
"mco_auto_setup": 1,
|
||||
"auth_key": "fake_auth_key",
|
||||
"authorized_keys": ["fake_authorized_key1", "fake_authorized_key2"],
|
||||
"repo_metadata": "repo1=repo1_url,repo2=repo2_url",
|
||||
"pm_data": {
|
||||
"kernel_params": "console=ttyS0,9600 console=tty0 rootdelay=90 "
|
||||
"nomodeset",
|
||||
@ -441,7 +443,8 @@ class TestNailgun(test_base.BaseTestCase):
|
||||
|
||||
def test_configdrive_scheme(self):
|
||||
cd_scheme = self.drv.configdrive_scheme()
|
||||
self.assertEqual('fake_auth_key', cd_scheme.common.ssh_auth_key)
|
||||
self.assertEqual(['fake_authorized_key1', 'fake_authorized_key2',
|
||||
'fake_auth_key'], cd_scheme.common.ssh_auth_keys)
|
||||
self.assertEqual('node-1.domain.tld', cd_scheme.common.hostname)
|
||||
self.assertEqual('node-1.domain.tld', cd_scheme.common.fqdn)
|
||||
self.assertEqual('node-1.domain.tld', cd_scheme.common.fqdn)
|
||||
@ -465,6 +468,8 @@ class TestNailgun(test_base.BaseTestCase):
|
||||
self.assertEqual('marionette', cd_scheme.mcollective.password)
|
||||
self.assertEqual('rabbitmq', cd_scheme.mcollective.connector)
|
||||
self.assertEqual('ubuntu_1204_x86_64', cd_scheme.profile)
|
||||
self.assertEqual({'repo1': 'repo1_url', 'repo2': 'repo2_url'},
|
||||
cd_scheme.common.ks_repos)
|
||||
|
||||
@mock.patch.object(hu, 'list_block_devices')
|
||||
def test_partition_scheme(self, mock_lbd):
|
||||
@ -490,7 +495,7 @@ class TestNailgun(test_base.BaseTestCase):
|
||||
expected_images.append(image.Image(
|
||||
uri=i_data['uri'],
|
||||
target_device=fs.device,
|
||||
image_format=i_data['format'],
|
||||
format=i_data['format'],
|
||||
container=i_data['container'],
|
||||
))
|
||||
expected_images = sorted(expected_images, key=lambda x: x.uri)
|
||||
@ -498,8 +503,8 @@ class TestNailgun(test_base.BaseTestCase):
|
||||
self.assertEqual(img.uri, expected_images[i].uri)
|
||||
self.assertEqual(img.target_device,
|
||||
expected_images[i].target_device)
|
||||
self.assertEqual(img.image_format,
|
||||
expected_images[i].image_format)
|
||||
self.assertEqual(img.format,
|
||||
expected_images[i].format)
|
||||
self.assertEqual(img.container,
|
||||
expected_images[i].container)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user