FUEL
Library
& more
Mirantis, 2014
Vladimir Kuklin
Fuel Library Tech Lead
FUEL Library & More
1. what is FUEL: main architecture components
2. getting started
3. starting development of your own component/plugin
4. how to test
5. FUEL roadmap for the near future
What is FUEL
What is FUEL: components
What is FUEL: How master node is bootstrapped
What is FUEL: How data is passed from Nailgun
What is FUEL: How data gets to the cobbler/puppet
What is FUEL: How node passes from null state to ready state
What is FUEL: How node passes from null state to ready state
Provision a node
cobbler system dumpvars --name node-1:
kernel_options: var1=val1,var2=val2 …
interfaces: JSON
ks_meta : mco_enable=1 mco_vhost=mcollective
Used by snippets and postinst scripts (cobbler templates)
What is FUEL: How node passes from null state to read state
Deploy a node
/etc/astute.yaml
/etc/puppet/manifests/site.pp (osnailyfacter module):
fetch vars from YAML->case switches for deployment mode/role
What is FUEL: Puppet cluster attrs
astute.yaml example:
glance:
user_password: u8BKT2Rm
image_cache_max_size: "13868466176"
db_password: gLDABw4S
storage:
ephemeral_ceph: false
images_ceph: false
What is FUEL: Puppet nodes attrs
astute.yaml example:
nodes:
- name: node-1
storage_address: 192.168.1.1
storage_netmask: 255.255.255.0
internal_address: 192.168.0.1
fqdn: node-1.test.domain.local
role: controller
uid: "1"
What is FUEL: Puppet run
puppet manifest part:
site.pp
$fuel_settings = parseyaml($astute_settings_yaml) …
cluster_ha.pp
$glance_hash = $::fuel_settings['glance']
…
class {'ceph':
...
use_rgw => $storage_hash['objects_ceph']
What is FUEL: Astute - role priorities
nailgun code piece:
271 def set_deployment_priorities(cls, nodes):
272 """Set priorities of deployment for HA mode."""
273 prior = Priority()
274
275 primary_swift_proxy_piror = prior.next
276 for n in cls.by_role(nodes, 'primary-swift-proxy'):
277 n['priority'] = primary_swift_proxy_piror
Getting Started
http://docs.mirantis.com/fuel-dev/develop/env.html#building-the-fuel-iso
Getting Started: Running FUEL
Getting Started: Running FUEL
Getting Started: Altering cluster params
Starting your own plugin/component
Starting your own plugin/component
Starting your own plugin/component
Your own plugin: I want...
Your own plugin: I want...
How to test
How to test: system tests
How to test: system tests
74 @test(depends_on=[SetupEnvironment.prepare_slaves_3],
75 groups=["smoke", "deploy_simple_flat"])
76 @log_snapshot_on_error
77 def deploy_simple_flat(self)
94 self.env.revert_snapshot("ready_with_3_slaves")
96 cluster_id = self.fuel_web.create_cluster(
97 name=self.__class__.__name__,
98 mode=DEPLOYMENT_MODE_SIMPLE
99 )
100 self.fuel_web.update_nodes(cluster_id,
102 {'slave-01': ['controller'], 'slave-02': ['compute']})
107 self.fuel_web.deploy_cluster_wait(cluster_id)
How to test: system tests
How to test: system tests return error
FUEL roadmap
FUEL roadmap
FUEL roadmap
Q&A