Merge "template-based test for fuel installation on Centos node"
This commit is contained in:
@@ -706,3 +706,8 @@ Test for network outage
|
|||||||
-----------------------
|
-----------------------
|
||||||
.. automodule:: fuelweb_test.tests.tests_strength.test_network_outage
|
.. automodule:: fuelweb_test.tests.tests_strength.test_network_outage
|
||||||
:members:
|
:members:
|
||||||
|
|
||||||
|
Test for separate master node deployment
|
||||||
|
----------------------------------------
|
||||||
|
.. automodule:: system_test.tests.test_centos_master_deploy_ceph
|
||||||
|
:members:
|
||||||
@@ -30,9 +30,9 @@ def generate_cloud_image_settings(cloud_image_settings_path, admin_network,
|
|||||||
os.makedirs(dir_path)
|
os.makedirs(dir_path)
|
||||||
|
|
||||||
meta_data_path = os.path.join(dir_path,
|
meta_data_path = os.path.join(dir_path,
|
||||||
"meta_data")
|
"meta-data")
|
||||||
user_data_path = os.path.join(dir_path,
|
user_data_path = os.path.join(dir_path,
|
||||||
"user_data")
|
"user-data")
|
||||||
|
|
||||||
# create meta_data and user_data
|
# create meta_data and user_data
|
||||||
|
|
||||||
@@ -71,12 +71,12 @@ def generate_cloud_image_settings(cloud_image_settings_path, admin_network,
|
|||||||
"password": password
|
"password": password
|
||||||
}
|
}
|
||||||
|
|
||||||
user_data_content = ("#cloud-config\n"
|
user_data_content = ("\n#cloud-config\n"
|
||||||
"ssh_pwauth: True\n"
|
"ssh_pwauth: True\n"
|
||||||
"chpasswd:\n"
|
"chpasswd:\n"
|
||||||
"list: |\n"
|
" list: |\n"
|
||||||
" {user}:{password}\n"
|
" {user}:{password}\n"
|
||||||
"expire: False \n\n"
|
" expire: False \n\n"
|
||||||
"runcmd:\n"
|
"runcmd:\n"
|
||||||
" - sudo ifup {interface_name}\n"
|
" - sudo ifup {interface_name}\n"
|
||||||
" - sudo sed -i -e '/^PermitRootLogin/s/^"
|
" - sudo sed -i -e '/^PermitRootLogin/s/^"
|
||||||
@@ -98,6 +98,4 @@ def generate_cloud_image_settings(cloud_image_settings_path, admin_network,
|
|||||||
user_data_path,
|
user_data_path,
|
||||||
meta_data_path)
|
meta_data_path)
|
||||||
|
|
||||||
cmd = cmd.split()
|
|
||||||
|
|
||||||
subprocess.check_call(cmd, shell=True)
|
subprocess.check_call(cmd, shell=True)
|
||||||
|
|||||||
@@ -476,6 +476,12 @@ class EnvironmentModel(object):
|
|||||||
|
|
||||||
@logwrap
|
@logwrap
|
||||||
def wait_for_external_config(self, timeout=120):
|
def wait_for_external_config(self, timeout=120):
|
||||||
|
|
||||||
|
wait(lambda: self.ssh_manager.exists_on_remote(
|
||||||
|
self.ssh_manager.admin_ip,
|
||||||
|
'/var/lock/wait_for_external_config'),
|
||||||
|
timeout=600)
|
||||||
|
|
||||||
check_cmd = 'pkill -0 -f wait_for_external_config'
|
check_cmd = 'pkill -0 -f wait_for_external_config'
|
||||||
|
|
||||||
wait(
|
wait(
|
||||||
|
|||||||
@@ -655,3 +655,5 @@ GERRIT_PATCHSET_NUMBER = os.environ.get("GERRIT_PATCHSET_NUMBER")
|
|||||||
DOWNLOAD_FACTS = get_var_as_bool("DOWNLOAD_FACTS", False)
|
DOWNLOAD_FACTS = get_var_as_bool("DOWNLOAD_FACTS", False)
|
||||||
|
|
||||||
TASK_BASED_ENGINE = get_var_as_bool("TASK_BASED_ENGINE", True)
|
TASK_BASED_ENGINE = get_var_as_bool("TASK_BASED_ENGINE", True)
|
||||||
|
|
||||||
|
FUEL_RELEASE_PATH = os.environ.get("FUEL_RELEASE_PATH")
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
import os
|
||||||
import time
|
import time
|
||||||
|
|
||||||
from proboscis import TestProgram
|
from proboscis import TestProgram
|
||||||
@@ -31,6 +32,8 @@ from fuelweb_test.settings import MULTIPLE_NETWORKS_TEMPLATE
|
|||||||
from fuelweb_test.settings import REPLACE_DEFAULT_REPOS
|
from fuelweb_test.settings import REPLACE_DEFAULT_REPOS
|
||||||
from fuelweb_test.settings import REPLACE_DEFAULT_REPOS_ONLY_ONCE
|
from fuelweb_test.settings import REPLACE_DEFAULT_REPOS_ONLY_ONCE
|
||||||
|
|
||||||
|
from gates_tests.helpers import exceptions
|
||||||
|
|
||||||
|
|
||||||
class TestBasic(object):
|
class TestBasic(object):
|
||||||
"""Basic test case class for all system tests.
|
"""Basic test case class for all system tests.
|
||||||
@@ -265,6 +268,65 @@ class TestBasic(object):
|
|||||||
self.env.setup_environment()
|
self.env.setup_environment()
|
||||||
self.fuel_post_install_actions()
|
self.fuel_post_install_actions()
|
||||||
|
|
||||||
|
def centos_setup_fuel(self, hostname):
|
||||||
|
logger.info("upload fuel-release packet")
|
||||||
|
if not settings.FUEL_RELEASE_PATH:
|
||||||
|
raise exceptions.FuelQAVariableNotSet('FUEL_RELEASE_PATH', '/path')
|
||||||
|
try:
|
||||||
|
ssh = SSHManager()
|
||||||
|
pack_path = '/tmp/'
|
||||||
|
full_pack_path = os.path.join(pack_path,
|
||||||
|
'fuel-release*.noarch.rpm')
|
||||||
|
ssh.upload_to_remote(
|
||||||
|
ip=ssh.admin_ip,
|
||||||
|
source=settings.FUEL_RELEASE_PATH.rstrip('/'),
|
||||||
|
target=pack_path)
|
||||||
|
|
||||||
|
except Exception:
|
||||||
|
logger.exception("Could not upload package")
|
||||||
|
|
||||||
|
logger.debug("Update host information")
|
||||||
|
cmd = "echo HOSTNAME={} >> /etc/sysconfig/network".format(hostname)
|
||||||
|
ssh.execute_on_remote(ssh.admin_ip, cmd=cmd)
|
||||||
|
|
||||||
|
cmd = "echo {0} {1} {2} >> /etc/hosts".format(
|
||||||
|
ssh.admin_ip,
|
||||||
|
hostname,
|
||||||
|
settings.FUEL_MASTER_HOSTNAME)
|
||||||
|
|
||||||
|
ssh.execute_on_remote(ssh.admin_ip, cmd=cmd)
|
||||||
|
|
||||||
|
cmd = "hostname {}".format(hostname)
|
||||||
|
ssh.execute_on_remote(ssh.admin_ip, cmd=cmd)
|
||||||
|
|
||||||
|
logger.debug("setup MOS repositories")
|
||||||
|
cmd = "rpm -ivh {}".format(full_pack_path)
|
||||||
|
ssh.execute_on_remote(ssh.admin_ip, cmd=cmd)
|
||||||
|
|
||||||
|
cmd = "yum install -y fuel-setup"
|
||||||
|
ssh.execute_on_remote(ssh.admin_ip, cmd=cmd)
|
||||||
|
|
||||||
|
cmd = "yum install -y screen"
|
||||||
|
ssh.execute_on_remote(ssh.admin_ip, cmd=cmd)
|
||||||
|
|
||||||
|
logger.info("Install Fuel services")
|
||||||
|
|
||||||
|
cmd = "screen -dm bash -c 'showmenu=no wait_for_external_config=yes " \
|
||||||
|
"bootstrap_admin_node.sh'"
|
||||||
|
ssh.execute_on_remote(ssh.admin_ip, cmd=cmd)
|
||||||
|
|
||||||
|
self.env.wait_for_external_config()
|
||||||
|
self.env.admin_actions.modify_configs(self.env.d_env.router())
|
||||||
|
self.env.kill_wait_for_external_config()
|
||||||
|
|
||||||
|
self.env.wait_bootstrap()
|
||||||
|
|
||||||
|
logger.debug("Check Fuel services")
|
||||||
|
self.env.admin_actions.wait_for_fuel_ready()
|
||||||
|
|
||||||
|
logger.debug("post-installation configuration of Fuel services")
|
||||||
|
self.fuel_post_install_actions()
|
||||||
|
|
||||||
|
|
||||||
@test
|
@test
|
||||||
class SetupEnvironment(TestBasic):
|
class SetupEnvironment(TestBasic):
|
||||||
|
|||||||
@@ -14,9 +14,12 @@
|
|||||||
|
|
||||||
from __future__ import division
|
from __future__ import division
|
||||||
|
|
||||||
|
import os
|
||||||
import time
|
import time
|
||||||
import itertools
|
import itertools
|
||||||
|
|
||||||
|
from devops.helpers.helpers import wait
|
||||||
|
|
||||||
from proboscis import SkipTest
|
from proboscis import SkipTest
|
||||||
from proboscis.asserts import assert_equal
|
from proboscis.asserts import assert_equal
|
||||||
from proboscis.asserts import assert_true
|
from proboscis.asserts import assert_true
|
||||||
@@ -24,7 +27,9 @@ from proboscis.asserts import assert_true
|
|||||||
from six.moves import xrange
|
from six.moves import xrange
|
||||||
# pylint: enable=redefined-builtin
|
# pylint: enable=redefined-builtin
|
||||||
|
|
||||||
|
import fuelweb_test
|
||||||
from fuelweb_test.helpers import checkers
|
from fuelweb_test.helpers import checkers
|
||||||
|
from fuelweb_test.helpers.cloud_image import generate_cloud_image_settings
|
||||||
from fuelweb_test.helpers.utils import TimeStat
|
from fuelweb_test.helpers.utils import TimeStat
|
||||||
from fuelweb_test import settings
|
from fuelweb_test import settings
|
||||||
|
|
||||||
@@ -118,6 +123,62 @@ class PrepareActions(object):
|
|||||||
|
|
||||||
self.env.make_snapshot("empty", is_make=True)
|
self.env.make_snapshot("empty", is_make=True)
|
||||||
|
|
||||||
|
@deferred_decorator([make_snapshot_if_step_fail])
|
||||||
|
@action
|
||||||
|
def setup_centos_master(self):
|
||||||
|
"""Create environment, bootstrap centos_master
|
||||||
|
and install fuel services
|
||||||
|
|
||||||
|
Snapshot "empty_centos"
|
||||||
|
|
||||||
|
1. bootstrap_centos_master
|
||||||
|
2. Download fuel_release from remote repository
|
||||||
|
3. install fuel_setup package
|
||||||
|
4. Install Fuel services by executing bootstrap_admin_node.sh
|
||||||
|
5. check Fuel services
|
||||||
|
|
||||||
|
|
||||||
|
"""
|
||||||
|
self.check_run("empty_centos")
|
||||||
|
self.show_step(1, initialize=True)
|
||||||
|
cloud_image_settings_path = os.path.join(
|
||||||
|
os.path.dirname(fuelweb_test.__file__),
|
||||||
|
'cloud_image_settings/cloud_settings.iso')
|
||||||
|
|
||||||
|
admin_net_object = self.env.d_env.get_network(
|
||||||
|
name=self.env.d_env.admin_net)
|
||||||
|
admin_network = admin_net_object.ip.network
|
||||||
|
admin_netmask = admin_net_object.ip.netmask
|
||||||
|
admin_ip = str(self.env.d_env.nodes(
|
||||||
|
).admin.get_ip_address_by_network_name(self.env.d_env.admin_net))
|
||||||
|
interface_name = settings.iface_alias("eth0")
|
||||||
|
gateway = self.env.d_env.router()
|
||||||
|
dns = settings.DNS
|
||||||
|
dns_ext = ''.join(settings.EXTERNAL_DNS)
|
||||||
|
hostname = ''.join((settings.FUEL_MASTER_HOSTNAME,
|
||||||
|
settings.DNS_SUFFIX))
|
||||||
|
user = settings.SSH_CREDENTIALS['login']
|
||||||
|
password = settings.SSH_CREDENTIALS['password']
|
||||||
|
generate_cloud_image_settings(cloud_image_settings_path, admin_network,
|
||||||
|
interface_name, admin_ip, admin_netmask,
|
||||||
|
gateway, dns, dns_ext,
|
||||||
|
hostname, user, password)
|
||||||
|
|
||||||
|
with TimeStat("bootstrap_centos_node", is_uniq=True):
|
||||||
|
admin = self.env.d_env.nodes().admin
|
||||||
|
logger.info(cloud_image_settings_path)
|
||||||
|
admin.disk_devices.get(
|
||||||
|
device='cdrom').volume.upload(cloud_image_settings_path)
|
||||||
|
self.env.d_env.start([admin])
|
||||||
|
logger.info("Waiting for Centos node to start up")
|
||||||
|
wait(lambda: admin.driver.node_active(admin), 60)
|
||||||
|
logger.info("Waiting for Centos node ssh ready")
|
||||||
|
self.env.wait_for_provisioning()
|
||||||
|
|
||||||
|
self.centos_setup_fuel(hostname)
|
||||||
|
|
||||||
|
self.env.make_snapshot("empty", is_make=True)
|
||||||
|
|
||||||
@deferred_decorator([make_snapshot_if_step_fail])
|
@deferred_decorator([make_snapshot_if_step_fail])
|
||||||
@action
|
@action
|
||||||
def config_release(self):
|
def config_release(self):
|
||||||
|
|||||||
@@ -87,6 +87,11 @@ def define_custom_groups():
|
|||||||
add_group(group="fuel_master_migrate",
|
add_group(group="fuel_master_migrate",
|
||||||
systest_group="system_test.fuel_migration",
|
systest_group="system_test.fuel_migration",
|
||||||
config_name="1ctrl_1comp_neutronVLAN")
|
config_name="1ctrl_1comp_neutronVLAN")
|
||||||
|
|
||||||
add_group(group="fuel_master_migrate",
|
add_group(group="fuel_master_migrate",
|
||||||
systest_group="system_test.fuel_migration",
|
systest_group="system_test.fuel_migration",
|
||||||
config_name="1ctrl_1comp_neutronTUN")
|
config_name="1ctrl_1comp_neutronTUN")
|
||||||
|
|
||||||
|
add_group(group="system_test.deploy_centos_master",
|
||||||
|
systest_group="system_test.centos_deploy_and_check_radosgw",
|
||||||
|
config_name="centos_master_ceph_all_on_neutron_vlan")
|
||||||
|
|||||||
76
system_test/tests/test_centos_master_deploy_ceph.py
Normal file
76
system_test/tests/test_centos_master_deploy_ceph.py
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
# Copyright 2016 Mirantis, Inc.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
# a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE_2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
|
||||||
|
from proboscis.asserts import assert_true
|
||||||
|
|
||||||
|
from system_test import testcase
|
||||||
|
from system_test import action
|
||||||
|
from system_test import deferred_decorator
|
||||||
|
|
||||||
|
from system_test.tests import ActionTest
|
||||||
|
from system_test.actions import BaseActions
|
||||||
|
|
||||||
|
from system_test.helpers.decorators import make_snapshot_if_step_fail
|
||||||
|
|
||||||
|
|
||||||
|
@testcase(groups=['system_test',
|
||||||
|
'system_test.centos_deploy_and_check_radosgw'])
|
||||||
|
class CentosDeployCheckRadosGW(ActionTest, BaseActions):
|
||||||
|
"""Deploy cluster and check RadosGW
|
||||||
|
|
||||||
|
Scenario:
|
||||||
|
1. Bootstrap Centos node and install Fuel services
|
||||||
|
2. Create Environment
|
||||||
|
3. Add nodes to Environment
|
||||||
|
4. Run network checker
|
||||||
|
5. Deploy Environment
|
||||||
|
6. Run network checker
|
||||||
|
7. Check HAProxy backends
|
||||||
|
8. Check ceph status
|
||||||
|
9. Run OSTF
|
||||||
|
10. Check the radosgw daemon is started
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
actions_order = [
|
||||||
|
'setup_centos_master',
|
||||||
|
'config_release',
|
||||||
|
'make_slaves',
|
||||||
|
'revert_slaves',
|
||||||
|
'create_env',
|
||||||
|
'add_nodes',
|
||||||
|
'network_check',
|
||||||
|
'deploy_cluster',
|
||||||
|
'network_check',
|
||||||
|
'check_haproxy',
|
||||||
|
'check_ceph_status',
|
||||||
|
'health_check',
|
||||||
|
'check_rados_daemon'
|
||||||
|
]
|
||||||
|
|
||||||
|
@deferred_decorator([make_snapshot_if_step_fail])
|
||||||
|
@action
|
||||||
|
def check_ceph_status(self):
|
||||||
|
"""Check Ceph status in cluster"""
|
||||||
|
self.fuel_web.check_ceph_status(self.cluster_id)
|
||||||
|
|
||||||
|
@deferred_decorator([make_snapshot_if_step_fail])
|
||||||
|
@action
|
||||||
|
def check_rados_daemon(self):
|
||||||
|
"""Check the radosgw daemon is started"""
|
||||||
|
def radosgw_started(remote):
|
||||||
|
return remote.check_call('pkill -0 radosgw')['exit_code'] == 0
|
||||||
|
|
||||||
|
with self.fuel_web.get_ssh_for_node('slave-01') as remote:
|
||||||
|
assert_true(radosgw_started(remote), 'radosgw daemon started')
|
||||||
189
system_test/tests_templates/devops_configs/centos_master.yaml
Normal file
189
system_test/tests_templates/devops_configs/centos_master.yaml
Normal file
@@ -0,0 +1,189 @@
|
|||||||
|
---
|
||||||
|
aliases:
|
||||||
|
|
||||||
|
dynamic_address_pool:
|
||||||
|
- &pool_default !os_env POOL_DEFAULT, 10.109.0.0/16:24
|
||||||
|
|
||||||
|
default_interface_model:
|
||||||
|
- &interface_model !os_env INTERFACE_MODEL, e1000
|
||||||
|
|
||||||
|
rack-01-slave-interfaces: &rack-01-slave-interfaces
|
||||||
|
- label: eth0
|
||||||
|
l2_network_device: admin # Libvirt bridge name. It is *NOT* Nailgun networks
|
||||||
|
interface_model: *interface_model
|
||||||
|
- label: eth1
|
||||||
|
l2_network_device: public
|
||||||
|
interface_model: *interface_model
|
||||||
|
- label: eth2
|
||||||
|
l2_network_device: storage
|
||||||
|
interface_model: *interface_model
|
||||||
|
- label: eth3
|
||||||
|
l2_network_device: management
|
||||||
|
interface_model: *interface_model
|
||||||
|
- label: eth4
|
||||||
|
l2_network_device: private
|
||||||
|
interface_model: *interface_model
|
||||||
|
|
||||||
|
rack-01-slave-network_config: &rack-01-slave-network_config
|
||||||
|
eth0:
|
||||||
|
networks:
|
||||||
|
- fuelweb_admin
|
||||||
|
eth1:
|
||||||
|
networks:
|
||||||
|
- public
|
||||||
|
eth2:
|
||||||
|
networks:
|
||||||
|
- storage
|
||||||
|
eth3:
|
||||||
|
networks:
|
||||||
|
- management
|
||||||
|
eth4:
|
||||||
|
networks:
|
||||||
|
- private
|
||||||
|
|
||||||
|
rack-01-slave-node-params: &rack-01-slave-node-params
|
||||||
|
vcpu: !os_env SLAVE_NODE_CPU, 2
|
||||||
|
memory: !os_env SLAVE_NODE_MEMORY, 3072
|
||||||
|
boot:
|
||||||
|
- network
|
||||||
|
- hd
|
||||||
|
volumes:
|
||||||
|
- name: system
|
||||||
|
capacity: !os_env NODE_VOLUME_SIZE, 55
|
||||||
|
format: qcow2
|
||||||
|
- name: cinder
|
||||||
|
capacity: !os_env NODE_VOLUME_SIZE, 55
|
||||||
|
format: qcow2
|
||||||
|
- name: swift
|
||||||
|
capacity: !os_env NODE_VOLUME_SIZE, 55
|
||||||
|
format: qcow2
|
||||||
|
interfaces: *rack-01-slave-interfaces
|
||||||
|
network_config: *rack-01-slave-network_config
|
||||||
|
|
||||||
|
|
||||||
|
env_name: !os_env ENV_NAME
|
||||||
|
|
||||||
|
address_pools:
|
||||||
|
# Network pools used by the environment
|
||||||
|
fuelweb_admin-pool01:
|
||||||
|
net: *pool_default
|
||||||
|
params:
|
||||||
|
tag: 0
|
||||||
|
public-pool01:
|
||||||
|
net: *pool_default
|
||||||
|
params:
|
||||||
|
tag: 0
|
||||||
|
storage-pool01:
|
||||||
|
net: *pool_default
|
||||||
|
params:
|
||||||
|
tag: 101
|
||||||
|
management-pool01:
|
||||||
|
net: *pool_default
|
||||||
|
params:
|
||||||
|
tag: 102
|
||||||
|
private-pool01:
|
||||||
|
net: *pool_default
|
||||||
|
params:
|
||||||
|
tag: 103
|
||||||
|
|
||||||
|
groups:
|
||||||
|
- name: rack-01
|
||||||
|
driver:
|
||||||
|
name: devops.driver.libvirt.libvirt_driver
|
||||||
|
params:
|
||||||
|
connection_string: !os_env CONNECTION_STRING, qemu:///system
|
||||||
|
storage_pool_name: !os_env STORAGE_POOL_NAME, default
|
||||||
|
stp: True
|
||||||
|
hpet: False
|
||||||
|
use_host_cpu: !os_env DRIVER_USE_HOST_CPU, true
|
||||||
|
|
||||||
|
network_pools: # Address pools for OpenStack networks.
|
||||||
|
# Actual names should be used for keys
|
||||||
|
# (the same as in Nailgun, for example)
|
||||||
|
|
||||||
|
fuelweb_admin: fuelweb_admin-pool01
|
||||||
|
public: public-pool01
|
||||||
|
storage: storage-pool01
|
||||||
|
management: management-pool01
|
||||||
|
private: private-pool01
|
||||||
|
|
||||||
|
l2_network_devices: # Libvirt bridges. It is *NOT* Nailgun networks
|
||||||
|
admin:
|
||||||
|
address_pool: fuelweb_admin-pool01
|
||||||
|
dhcp: false
|
||||||
|
forward:
|
||||||
|
mode: nat
|
||||||
|
|
||||||
|
public:
|
||||||
|
address_pool: public-pool01
|
||||||
|
dhcp: false
|
||||||
|
forward:
|
||||||
|
mode: nat
|
||||||
|
|
||||||
|
storage:
|
||||||
|
address_pool: storage-pool01
|
||||||
|
dhcp: false
|
||||||
|
|
||||||
|
management:
|
||||||
|
address_pool: management-pool01
|
||||||
|
dhcp: false
|
||||||
|
|
||||||
|
private:
|
||||||
|
address_pool: private-pool01
|
||||||
|
dhcp: false
|
||||||
|
|
||||||
|
nodes:
|
||||||
|
- name: admin # Custom name of VM for Fuel admin node
|
||||||
|
role: fuel_master # Fixed role for Fuel master node properties
|
||||||
|
params:
|
||||||
|
vcpu: !os_env ADMIN_NODE_CPU, 2
|
||||||
|
memory: !os_env ADMIN_NODE_MEMORY, 3072
|
||||||
|
boot:
|
||||||
|
- hd
|
||||||
|
- cdrom # for boot from usb - without 'cdrom'
|
||||||
|
volumes:
|
||||||
|
- name: system
|
||||||
|
source_image: !os_env CENTOS_CLOUD_IMAGE_PATH
|
||||||
|
format: qcow2
|
||||||
|
- name: iso
|
||||||
|
capacity: 1
|
||||||
|
format: raw
|
||||||
|
device: cdrom # for boot from usb - 'disk'
|
||||||
|
bus: ide # for boot from usb - 'usb'
|
||||||
|
interfaces:
|
||||||
|
- label: eth0
|
||||||
|
l2_network_device: admin # Libvirt bridge name. It is *NOT* a Nailgun network
|
||||||
|
interface_model: *interface_model
|
||||||
|
network_config:
|
||||||
|
eth0:
|
||||||
|
networks:
|
||||||
|
- fuelweb_admin
|
||||||
|
|
||||||
|
- name: slave-01
|
||||||
|
role: fuel_slave
|
||||||
|
params: *rack-01-slave-node-params
|
||||||
|
- name: slave-02
|
||||||
|
role: fuel_slave
|
||||||
|
params: *rack-01-slave-node-params
|
||||||
|
- name: slave-03
|
||||||
|
role: fuel_slave
|
||||||
|
params: *rack-01-slave-node-params
|
||||||
|
- name: slave-04
|
||||||
|
role: fuel_slave
|
||||||
|
params: *rack-01-slave-node-params
|
||||||
|
- name: slave-05
|
||||||
|
role: fuel_slave
|
||||||
|
params: *rack-01-slave-node-params
|
||||||
|
- name: slave-06
|
||||||
|
role: fuel_slave
|
||||||
|
params: *rack-01-slave-node-params
|
||||||
|
- name: slave-07
|
||||||
|
role: fuel_slave
|
||||||
|
params: *rack-01-slave-node-params
|
||||||
|
- name: slave-08
|
||||||
|
role: fuel_slave
|
||||||
|
params: *rack-01-slave-node-params
|
||||||
|
- name: slave-09
|
||||||
|
role: fuel_slave
|
||||||
|
params: *rack-01-slave-node-params
|
||||||
|
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
---
|
||||||
|
network-config: &network-config
|
||||||
|
provider: neutron
|
||||||
|
segment-type: vlan
|
||||||
|
pubip-to-all: false
|
||||||
|
|
||||||
|
storages-config: &storages-config
|
||||||
|
volume-lvm: false
|
||||||
|
volume-ceph: true
|
||||||
|
image-ceph: true
|
||||||
|
rados-ceph: true
|
||||||
|
ephemeral-ceph: false
|
||||||
|
replica-ceph: 1
|
||||||
|
|
||||||
|
nodes: &nodes
|
||||||
|
- roles:
|
||||||
|
- controller
|
||||||
|
count: 1
|
||||||
|
- roles:
|
||||||
|
- ceph-osd
|
||||||
|
count: 2
|
||||||
|
- roles:
|
||||||
|
- compute
|
||||||
|
count: 1
|
||||||
|
|
||||||
|
template:
|
||||||
|
name: 1 Controller, 1 Compute & 2 Ceph on Neutron/VLAN
|
||||||
|
slaves: 4
|
||||||
|
devops_settings: !include devops_configs/centos_master.yaml
|
||||||
|
cluster_template: &environment-config
|
||||||
|
name: rados
|
||||||
|
release: ubuntu
|
||||||
|
settings:
|
||||||
|
components:
|
||||||
|
sahara: false
|
||||||
|
murano: false
|
||||||
|
ceilometer: false
|
||||||
|
storages: *storages-config
|
||||||
|
network: *network-config
|
||||||
|
nodes: *nodes
|
||||||
Reference in New Issue
Block a user