New in version 2.1.0.
Kameleon have an inheritance mecanism of recipes. You can create a new recipe which is based on another recipe. Thus, customize your appliances by focusing on the specific needs of the appliance.
By default, the Kameleon command
new creates a new recipe that
inherits a template recipe. The keyword
extend is used to specify
the recipe upon which will be based the new recipe.
Recipe example that inherits the recipe
--- extend: debian7 bootstrap: - "@base" setup: - "@base" - create_user: - name: my_super_user - groups: sudo admin - password: my_super_password export: ## do nothing
Inheritance and section¶
To manage more deeply the recipe inheritance mecanism, we use the keyword
@base, to import all steps from a section of the parent recipe to our
recipe. We can then execute our customizing steps before or after the parent
steps. On the contrary, the absence of the keyword
@base is used to ignore
the parent steps in the new recipe.
Inheritance and variables¶
All global variables are overloaded in the daughter recipe. If the recipe contains various settings, we can use this feature to customize the appliance according to your needs:
--- extend: fedora20 global: user_name: my_user ## instead of 'kameleon' arch: i386 ## instead of 'x64_86' image_size: 20G ## instead of '10G' filesystem_type: ext3 ## instead of 'ext4' ## NEW in 2.7.0 setup_packages: $$setup_packages git bootstrap: - "@base" setup: - "@base" export: - "@base"
On the previous example, we get a new recipe and a new appliance,
without having to maintain the base recipe