Permalink
Browse files

Inital check-in

  • Loading branch information...
1 parent f4bec97 commit 3a7ddac7f629b09da6e8b427aa86e5676a8e316d Dominic Maraglia committed Aug 27, 2012
Showing with 4,774 additions and 3 deletions.
  1. +68 −3 README.md
  2. +11 −0 bin/hello.txt
  3. +29 −0 bin/mseed.rb
  4. +74 −0 bin/namegen.rb
  5. +21 −0 bin/origami
  6. +49 −0 lib/optparsing.rb
  7. +40 −0 lib/origami.rb
  8. +73 −0 lib/origami/core/build.rb
  9. +48 −0 lib/origami/core/build_helper.rb
  10. +68 −0 lib/origami/core/erb_base.rb
  11. +58 −0 lib/origami/core/ks_defn_builder.rb
  12. +49 −0 lib/origami/core/os_name.rb
  13. +96 −0 lib/origami/core/seed_builder.rb
  14. +27 −0 lib/origami/inventory/README.md
  15. +1,504 −0 lib/origami/inventory/autoinst/autoinst.xml
  16. +1,572 −0 lib/origami/inventory/autoinst/autoinst_base.erb
  17. +10 −0 lib/origami/inventory/autoinst/autoinst_base.rb
  18. +17 −0 lib/origami/inventory/autoinst/seeds/pkgs.yml
  19. +36 −0 lib/origami/inventory/definition/definition_base.erb
  20. +39 −0 lib/origami/inventory/definition/definition_base.rb
  21. +5 −0 lib/origami/inventory/definition/postscripts/git-inst.sh
  22. +3 −0 lib/origami/inventory/definition/postscripts/hello.sh
  23. +4 −0 lib/origami/inventory/definition/postscripts/typeA.sh
  24. +3 −0 lib/origami/inventory/definition/postscripts/typeB.sh
  25. +45 −0 lib/origami/inventory/definition/seeds/boot_cmd_sequence.yml
  26. +44 −0 lib/origami/inventory/definition/seeds/iso_file.yml
  27. +15 −0 lib/origami/inventory/definition/seeds/kickstart_file.yml
  28. +45 −0 lib/origami/inventory/definition/seeds/os_type_id.yml
  29. +104 −0 lib/origami/inventory/definition/seeds/postinstall_files.yml
  30. +12 −0 lib/origami/inventory/definition/testing1.rb
  31. +32 −0 lib/origami/inventory/kickstart/ks_base.erb
  32. +32 −0 lib/origami/inventory/kickstart/ks_base.rb
  33. +12 −0 lib/origami/inventory/kickstart/ks_seed_sample.rb
  34. +175 −0 lib/origami/inventory/kickstart/seeds/pkgs.yml
  35. +14 −0 lib/origami/inventory/kickstart/seeds/reponame.yml
  36. +96 −0 lib/origami/inventory/preseed/preseed.cfg
  37. +102 −0 lib/origami/inventory/preseed/preseed_base.erb
  38. +11 −0 lib/origami/inventory/preseed/preseed_base.rb
  39. +43 −0 lib/origami/inventory/preseed/seeds/pkgs.yml
  40. +6 −0 lib/origami/inventory/preseed/seeds/suite.yml
  41. +5 −0 lib/origami_config.rb
  42. +37 −0 lib/origami_config_private.rb
  43. +33 −0 os_names/all_el_names.yml
  44. +7 −0 os_names/deb_perms.yml
View
71 README.md
@@ -1,4 +1,69 @@
-origami
-=======
+# origami #
+A templating engine which complements veewee.
-Templating engine for Atsuya Kumano's VM provisioning tool: seisan-line
+## Introduction ##
+[veewee](http://github.com/jedi4ever/veewee) makes building virtual machines easy but origami takes a step further and makes the process even easier,
+especially for those who wish to quickly deploy numbers of VMs that are configured differently.
+Without origami a typical workflow of a veewee user would be
+
+1. Choose a template to work with.
+2. `veewee define my-CentOS-6.2-server CentOS-6.2-i386-netboot`
+3. Modify `definition.rb` and `ks.cfg`
+4. `veewee build box-name`.
+
+By introducing origami it becomes
+
+1. `origami --name CentOS-6.2-i386-server`
+2. `veewee build CentOS-6.2-i386-server`
+
+Thus origami lets you bypass the editing of templates and initiate building a virtual machine immediately.
+Also, [a wrapper for origami and veewee](http://github.com/akumano/seisan-line) is available!
+
+## Configuration ##
+Managing veewee definitions is cumbersome because it requires you to create a configuration (i.e. `definition.rb` and `ks.cfg`) on a per-distro basis.
+On the other hand, origami maintains configurations on a per-option basis.
+The power of this approach is immense when you need to maintain a long list of VMs.
+For example, if you want to change what packages are installed on your `Oracle-5.8-i386-server`,
+you go to a corresponding yaml file, `pkgs.yml`, which might look like:
+
+ # pkgs.yml
+ ---
+ Oracle:
+ '5.8':
+ server:
+ - openssh-server
+ desktop:
+ - openssh-server
+ - ruby
+ '6':
+ typeA:
+ - openssh-server
+ - git
+ typeB:
+ - openssh-server
+ - git
+ - ruby
+ CentOS:
+ '6': ...
+ .
+ .
+ Ubuntu:
+ '10': ...
+ .
+ .
+ .
+ SLES:
+ '11': ...
+
+and change the corresponding value in the yaml hash.
+Once you edit all yaml files (which may include `boot_cmd_sequence.yml`, `kickstart_file`, and so on),
+you have a whole ensemble of different flavors of distros that you can start building just from their names.
+I said 'all' in the previous sentence, but the number of yaml files can be small or large,
+depending on your needs.
+You need to create a yaml file for a parameter only if the parameter needs to be varied, and the others, which are fixed for any kind of VM,
+are specified in a master template. The end result is instead of having an ever-growing number of definitions in your `veewee/definitions` directory,
+you just have a fixed number of yaml files to configure installation parameters.
+
+### How To ###
+origami was written for [seisan-line](http://github.com/akumano/seisan-line).
+The documentation for seisan-line includes how to use origami.
View
11 bin/hello.txt
@@ -0,0 +1,11 @@
+                i
+      、        i!
+      i,`ヽ、     i |
+      i   丶、  ,i :|
+       i;::_,、-、`1_ | .:|
+      -'‐'"1i !、'i゛ヽ:;、__
+       ヽ:::|| | /' _,、‐'" '`‐、
+        ヽ|i!r'/       \
+         W'" ̄''‐-、_.     \
+                `''‐-―一
+ origami.
View
29 bin/mseed.rb
@@ -0,0 +1,29 @@
+#!/usr/bin/env ruby
+### mseed.rb
+### Reads a seed with empty entries.
+### Recursively follow hash, replace it with a disired
+### entry when an empty entry is found.
+
+require 'yaml'
+
+
+def follow_hash(hash,input)
+ hash.each_pair do |key,val|
+ if val == ''
+ hash[key] = input
+ else
+ hash[key] = follow_hash(val,input)
+ end
+ end
+ return hash
+end
+
+if __FILE__ == $0
+ hash = YAML.load_file(ARGV[0])
+ if ARGV.length > 1
+ input = ARGV[1..-1]
+ else
+ input = ARGV[1]
+ end
+ puts eval(follow_hash(hash,input).inspect).to_yaml
+end
View
74 bin/namegen.rb
@@ -0,0 +1,74 @@
+#!/usr/bin/env ruby
+### namegen.rb
+### A neat script to produce a list of
+### all combinations of distro-ver.-arch
+### for EL family distros
+eldistro = ['CentOS','RedHat','Oracle','SL']
+elversion = ['5','6']
+debdistro = ['Ubuntu','Debian']
+debversion = ['10','12','6']
+arch = ['32','64']
+type = ['typeA','typeB'] # create full list
+#type = ['typeA'] # only typeA for testing purpose
+
+list = ['distro','version','arch','type']
+
+
+def nested_hash(array_of_arrays)
+ hash = {}
+ arr = array_of_arrays
+ tmp = arr.pop
+ tmp.each do |val|
+ hash[val] = ''
+ end
+ return helper(hash,arr)
+end
+
+def helper(hash,array)
+ if array.empty?
+ return hash
+ end
+ tmp = {}
+ arr = array.pop
+ arr.each do |val|
+ tmp[val] = hash
+ end
+ return helper(tmp,array)
+end
+
+if __FILE__ == $0
+ require 'yaml'
+ if ARGV.length == 0
+ abort 'no input!'
+ end
+
+ hash = {}
+ if ARGV[0] == 'el'
+ hash = {
+ 'distro' => eldistro,
+ 'version' => elversion,
+ 'arch' => arch,
+ 'type' => type
+ }
+ elsif ARGV[0] == 'deb'
+ hash = {
+ 'distro' => debdistro,
+ 'version' => debversion,
+ 'arch' => arch,
+ 'type' => type
+ }
+ end
+
+ contents = []
+ list.each do |elm|
+ if ARGV[1..-1].include?(elm)
+ contents << hash[elm]
+ end
+ end
+
+ result = nested_hash(contents)
+ # the following line is weird but I had to hack it up
+ # if 'puts result.to_yaml' were used, it returns a
+ # yaml hash containing object reference
+ puts eval(result.inspect).to_yaml
+end
View
21 bin/origami
@@ -0,0 +1,21 @@
+#!/usr/bin/env ruby
+### origami
+
+project_path = File.expand_path(
+ File.join(File.dirname(__FILE__), '..', 'lib')
+ )
+
+$LOAD_PATH.unshift(project_path) unless $LOAD_PATH.include?(project_path)
+
+if ARGV.length == 0
+ piece_of_art = File.new(File.join(File.dirname(__FILE__), 'hello.txt'),'r').read
+ print( piece_of_art + "\n\n")
+ abort("'--help' for usage\n\n")
+end
+
+require 'origami'
+
+if __FILE__ == $0
+ options = Origami::Options.parse_args
+ Origami.craft(options)
+end
View
49 lib/optparsing.rb
@@ -0,0 +1,49 @@
+### optparsing.rb
+
+require 'optparse'
+
+module Origami
+ class Options
+ attr_reader :options
+
+ def self.parse_args
+ @options = {}
+ optparse = OptionParser.new do |opts|
+ opts.banner = "Usage: origami.rb name [options]"
+
+ @options[:name] = []
+ opts.on('--name NAME') do |name|
+ @options[:name] << name
+ end
+
+ @options[:target] = nil
+ opts.on('--target DIR') do |dir|
+ @options[:target] = dir
+ end
+
+ @options[:instruction] = nil
+ opts.on('--definition') do
+ @options[:instruction] = 'definition'
+ end
+ opts.on('--kickstart') do
+ @options[:instruction] = 'kickstart'
+ end
+
+ @options[:file] = nil
+ opts.on('--file FILE') do |file|
+ @options[:file] = file
+ end
+
+ opts.on('-h','--help') do
+ puts opts
+ exit
+ end
+
+ end
+
+ optparse.parse!
+
+ return @options
+ end
+ end
+end
View
40 lib/origami.rb
@@ -0,0 +1,40 @@
+#!/usr/bin/env ruby
+### origami.rb
+### Calls build_from_seed.rb
+### Usage: origami.rb <name> [<target directory>] [<instruction=--kickstart,--definition>]
+### OR!
+### origami.rb --file <file.yml> [<target directory>] :: where <file.yml> contains an array of names
+
+require 'origami/core/build'
+require 'optparsing'
+
+module Origami
+ extend self
+
+ def craft(options)
+ names = options[:name]
+
+ if options[:file] != nil
+ require 'yaml'
+ names = YAML.load_file(options[:file])
+ end
+ build_each(names,options)
+ end
+
+ def build_each(names,options)
+ target = options[:target]
+ names.each do |name|
+ instruction = OSName.new(name).instruction
+ if options[:instruction] == nil
+ build(name, instruction, target)
+ puts
+ build(name,'definition', target)
+ puts
+ else
+ build(name, options[:instruction], target)
+ puts
+ end
+ end
+ end
+
+end#Module
View
73 lib/origami/core/build.rb
@@ -0,0 +1,73 @@
+#!/usr/bin/env ruby
+### Takes a string of the form <distro>-<version>-<arch>-<type> then
+### 1. Create a directory inside the hierarchy structure of
+### '~/veewee/definitions/**'
+### 2. (assume instruction='kickstart') Make kickstart seed (seed_builder.rb kickstart)
+### 3. Build kickstart.cfg (ks_builder.rb <ks_seed>)
+
+### To use it: (== follow veewee instruction)
+### Place definition.rb in the directory && place ks.cfg on a http server
+### Launch VM creation (vwf <definition_name>)
+
+### Usage: build_from_seed.rb <os_name> <instruction> <target>
+### os_name = <distro>-<version>-<arch>-<type>
+### instruction = kickstart or definition
+### target = target directory to place the files in
+
+require 'origami_config'
+require 'origami_config_private'
+require 'origami/core/erb_base'
+require 'origami/core/seed_builder'
+require 'origami/core/ks_defn_builder'
+
+module Origami
+
+ ## Originally I meant to manage directories from here.
+ ## It will be managed by puppet now.
+ def create_dir(name)
+ puts "Creating directory for #{name}..."
+ puts "~/veewee/definition/distro/version/arch/type"
+ end
+
+ ## The main fucntion.
+ ## Uses ks_base.erb and definition_base.erb as template.
+ ## ks_defn_builder creates ks.cfg and definition.rb. (see ks_defn_builder.rb)
+ ## seed_builder provides a hash that specifies options.
+ def build(name,instruction,target=nil)
+ ks_erb = File.join(ks_dir, 'ks_base.erb')
+ defn_erb = File.join(defn_dir, 'definition_base.erb')
+ autoinst_erb = File.join(autoinst_dir, 'autoinst_base.erb')
+ preseed_erb = File.join(preseed_dir, 'preseed_base.erb')
+
+ erb_path = {'kickstart' => ks_erb, 'definition' => defn_erb, 'autoinst' => autoinst_erb, 'preseed' => preseed_erb}[instruction]
+
+ filename = {'kickstart' => 'ks.cfg', 'definition' => 'definition.rb', 'autoinst' => 'autoinst.xml', 'preseed' => 'preseed.cfg'}[instruction]
+
+ # build seed
+ seed = seed_builder(name,instruction)
+ if target == nil
+ target = project_root + '/products/'
+ end
+
+ # use the seed to create file
+ File.open( File.join( target , name + '_' + filename), 'w') do |file|
+ print "Creating #{name}_#{filename}... "
+ content = ks_defn_builder(instruction, erb_path, seed)
+ file.write(content)
+ end
+ puts "Done."
+ print("#{instruction} file was created in #{target}.\n\n")
+ end
+
+ if __FILE__ == $0
+ name = ARGV[0]
+ instruction = ARGV[1]
+ if ARGV.length == 3
+ target = ARGV[2]
+ else
+ target = nil
+ end
+ build(name,'kickstart', target)
+ build(name,'definition', target)
+ end
+end
View
48 lib/origami/core/build_helper.rb
@@ -0,0 +1,48 @@
+### build_helper.rb
+###
+
+module Origami
+
+ def file_location(instruction,opt)
+ ## Locations of yaml files
+ return File.join(base_seed_path(instruction), opt + '.yml')
+ end
+
+ def base_seed_path(instruction)
+ dir = {
+ 'definition' => defn_dir,
+ 'kickstart' => ks_dir,
+ 'preseed' => preseed_dir,
+ 'autoinst'=> autoinst_dir
+ }
+ return File.join(dir[instruction],'seeds')
+ end
+
+ def dependencies(ostype,opt)
+ ## specify dependencies for each config option
+ ## OS_TYPE_ID. depends on 'distro' 'version' 'arch'
+ # os_type_id.yml is pretty much the same as ostypes.yml
+ # but rewriting it to a nested hash serves this better.
+ ## ISO name (must be in /veewee/iso/). depends on 'distro' 'version' 'arch'
+ ## BOOT_CMD_SEQUENCE. depends on 'family' 'version'
+ ## KICK_START_FILE. depends on same as above
+ ## POSTINSTALL_FILES. depends on 'distro' 'version' 'type'
+ # (and probably a bit on 'arch' as well but not doing that right now)
+ ## REPONAME
+ ## PKGS
+ distro, version, arch, type, family = OSName.new(ostype).resolve
+ dictionary = {
+ 'os_type_id' => [distro, version, arch],
+ 'iso_file' => [distro, version, arch],
+ 'boot_cmd_sequence' => [family,version],
+ # 'kickstart_file' option is deprecated
+ #'kickstart_file' => [family,version],
+ 'postinstall_files' => [distro,version,type],
+ 'reponame' => [distro,version],
+ 'suite' => [distro,version],
+ 'pkgs' => [distro,version,type]
+ }
+ return dictionary[opt]
+ end
+
+end # Module
View
68 lib/origami/core/erb_base.rb
@@ -0,0 +1,68 @@
+#!/usr/bin/env ruby
+### Author: Atsuya Kumano
+### Date: July 2012
+### Test of directory heirarchy establishment
+
+### ks_base.rb -> definition_base.rb -> erb_base.rb
+### (It was quite dumb to initialize class instance
+### variables in Base class.)
+###
+### Methods necessary to build a config file
+### from erb and seeds are defined in this class.
+### Use KsBase < Base, DefinitionBase < Base
+### (ks_base.rb, definition_base.rb)
+
+module Origami
+ class Base
+
+ ## A setter for installation parameters. usage:
+ ## s = Seed.new
+ ## s.lang = 'ja_JP.eucjp' # => changes 'lang' to Japanese
+ def opt=(val)
+ @opt = val
+ end
+
+ ## lists defined variables
+ def list_defined
+ tmp = instance_variables.collect do |var|
+ unless instance_variable_get(var) == nil
+ var
+ end
+ end
+ tmp.compact
+ end
+
+ ## lists undefined variables (nil-valued ones)
+ def list_undefined
+ instance_variables - list_defined
+ end
+
+ ## load a template (*.erb content)
+ def load_erb(erb)
+ # @tmpl = ERB.new(erb)
+ @tmpl = ERB.new(erb,0,"<>")
+ end
+
+ def get_binding
+ binding
+ end
+
+ ## define variables from a hash
+ def slurp(hash)
+ hash.each_key do |opt|
+ val = hash[opt]
+ instance_variable_set(eval(':@' + opt),val)
+ end
+ end
+
+ def showoff
+ if list_undefined.length == 0
+ return @tmpl.result(self.get_binding)
+ else
+ puts 'The following parameters are unspecified:'
+ puts list_undefined
+ end
+ end
+
+ end #Class
+end#Module
View
58 lib/origami/core/ks_defn_builder.rb
@@ -0,0 +1,58 @@
+#!/usr/bin/env ruby
+### ks_defn_builder.rb
+### Input: instruction (kickstart or definition),
+### erb (template), and seeds
+### Seeds are yaml files containing hashes
+### specifying installation options: see definition_alpha/os_seeds/
+### Output: a complete configuration file.
+###
+### Usage:
+### ./ks_builder.rb <instruction> <erb> <seed>
+### e.g. ./ks_builder.rb kickstart ks_base.erb CentOS-5-32-typeA.seed.yml
+
+require 'erb'
+require 'yaml'
+#require_relative 'kickstart/ks_base'
+#require_relative 'definition/definition_base'
+require 'origami/inventory/definition/definition_base'
+require 'origami/inventory/kickstart/ks_base'
+require 'origami/inventory/preseed/preseed_base'
+require 'origami/inventory/autoinst/autoinst_base'
+
+module Origami
+ def ks_defn_builder(instruction,erb,seed)
+ erb_base_path = 'origami/lib/inventory/'
+ dictionary = {
+ 'kickstart' => KsBase,
+ 'autoinst' => AutoinstBase,
+ 'preseed' => PreseedBase,
+ 'definition' => DefinitionBase
+ }
+
+ # Create a instruction-specific base object
+ tmpl = dictionary[instruction].new
+ # ... and read the erb template.
+ tmpl.load_erb(File.open(erb).read)
+
+ ## This version just accepts one complete seeds.
+ tmpl.slurp(seed)
+ ## Alternative Version: more than one seeds can be fed
+ ## advantage: the user can feed h[is,er] own seed
+ ## and override the ones that exist in
+ ## seeds/ directory.
+ ## seeds.each do |yamlfile|
+ ## hash = YAML.load_file(yamlfile)
+ ## kscfg.slurp(hash)
+ ## end
+
+ # Return the result of combining erb template and seeds.
+ return tmpl.showoff
+ end
+
+ if __FILE__ == $0
+ instruction = ARGV[0]
+ erb = ARGV[1]
+ seed = YAML.load_file(ARGV[2])
+ puts ks_defn_builder(instruction,erb,seed)
+ end
+end
View
49 lib/origami/core/os_name.rb
@@ -0,0 +1,49 @@
+### os_name.rb
+### Methods to parse a string of the format
+### <distro>-<version>-<arch>-<type>
+
+module Origami
+ class OSName
+ attr_reader :distro, :version, :arch, :type, :family, :instruction
+
+ def initialize(name)
+ @distro, @version, @arch, @type, @family = resolve_private(name)
+ @instruction = choose_instruction(name)
+ end
+
+ def resolve
+ return @distro, @version, @arch, @type, @family
+ end
+
+ def resolve_private(name)
+ info = name.split('-')
+ distro = info[0]
+ version = info[1]
+ arch = info[2]
+ type = info[3]
+ family = find_family(distro)
+ return distro, version, arch, type, family
+ end
+
+ ## Takes a distro name and returns the OS family that
+ ## it belongs to (i.e. EL, Deb(ian), SuSE)
+ def find_family(distro)
+ el = ['CentOS','RedHat','SL','Oracle','EL']
+ deb = ['Ubuntu','Debian','Deb']
+ suse = ['SLES','openSUSE','SUSE']
+ os_family = [el, deb, suse]
+ family = ''
+ os_family.each do |type|
+ if type.include?(distro)
+ return type.last
+ end
+ end
+ end
+
+ def choose_instruction(name)
+ family = resolve_private(name)[4]
+ instruction = {'EL' => 'kickstart','Deb' => 'preseed', 'SUSE' => 'autoinst'}
+ return instruction[family]
+ end
+ end
+end
View
96 lib/origami/core/seed_builder.rb
@@ -0,0 +1,96 @@
+#!/usr/bin/env ruby
+### definition_seed_builder.rb
+### Input: Distro, version, arch, and type
+### e.g. 'CentOS-5-32-typeA definition'
+
+### What it does:
+### 1. Lookup os_type_id.yml, iso_file.yml, boot_cmd_sequence.yml,
+### and kickstart_file.yml (note, these names correspond to
+### options in ks.cfg), OR reponame.yml and pkgs.yml
+### depending on the instruction.
+### 2. Get values from those hases.
+### 3. Create a seed file and spit it out.
+
+### Output: the seed file content.
+
+### This is a test (need to expand it to preseed and autoyast)
+### hence note the following:
+### - Supports only CentOS-[5,6]-[32,64]-[typeA,typeB]
+### and RedHat-6-64-[typeA,typeB] (easily expandable).
+### - Does not distinguish 5.x from 5.y, etc.
+### though it doesn't really matter
+### - typeA, typeB are hypothetical extra attributes
+
+## Get 1. Distro name, 2. version, and 3. arch
+## The input string format is:
+## <distro>-<version>-<arch>.
+
+require 'origami_config'
+require 'origami_config_private'
+require 'yaml'
+require 'origami/core/os_name'
+require 'origami/core/build_helper'
+
+module Origami
+
+ ## get_value: look up hashes (yaml) and get options.
+ def get_value(ostype,instruction,opt)
+ deps = dependencies(ostype,opt)
+ yamlfile = file_location(instruction,opt)
+ print "Loading #{yamlfile}... "
+ source = YAML.load_file(yamlfile)
+ puts "Done."
+ # resolve each dependency IN ORDER
+ deps.each do |dep|
+ source = source[dep]
+ end
+ return source
+ end
+
+ ## get_vars: look up what options must be specified
+ ## for a given template
+ def get_vars(instruction)
+ dictionary = {
+ 'definition' => ['os_type_id','iso_file','boot_cmd_sequence','postinstall_files'],
+ 'kickstart' => ['reponame','pkgs'],
+ 'preseed' => ['suite','pkgs'],
+ 'autoinst' => ['pkgs']
+ }
+ # 'kickstart_file' option in definition.rb is deprecated
+ # erb_vars = ['os_type_id','iso_file','boot_cmd_sequence','kickstart_file','postinstall_files']
+ return dictionary[instruction]
+ end
+
+
+ def check_input(os)
+ if os.split('-').length != 4
+ abort 'Incorrect input. Need <distro>-<version>-<arch>-<type>.'
+ end
+ end
+
+ def get_os_seed(os,instruction,erb_vars)
+ seed = {} # Type of a seed is hash.
+ erb_vars.each do |var|
+ print "Defining #{var}... "
+ seed[var] = get_value(os,instruction,var)
+ puts "#{var} defined."
+ end
+ return seed
+ end
+
+ ## Input: os name (String), instruction (either kickstart or definition) (String)
+ ## Output: hash, where keys are installation variables
+ def seed_builder(os,instruction)
+ check_input(os)
+ erb_vars = get_vars(instruction)
+ distro, version, arch, type, family = OSName.new(os).resolve
+ return get_os_seed(os,instruction,erb_vars)
+ end
+
+ if __FILE__ == $0
+ os = ARGV[0]
+ instruction = ARGV[1] # -> definition or kickstart
+ puts seed_builer(os,instruction).to_yaml
+ end
+
+end
View
27 lib/origami/inventory/README.md
@@ -0,0 +1,27 @@
+# How to add an inventory #
+
+1. Take a working configuration file (e.g. ks.cfg, autoyast.yml)
+
+2. Replace portions of the file with ERB statements and name it `something_base.erb`. The simplest
+ one, which suffices for most purposes, is <%= variable %>. A loop through an array is also useful.
+ See [the ruby doc](http://ruby-doc.org/stdlib-1.9.3/libdoc/erb/rdoc/ERB.html). It's surprisingly helpful.
+
+ Create a directory under `origami/lib/inventory`. Create a directory called `seed/` under the
+ directory just created. Refer to the other documentation about writing seed.
+
+3. Create a corresponding `something_base.rb` file. See `ks_base.rb` for an example.
+ In `something_base.rb` write a class `SomethingBase < Base` with attr_accessor of all
+ variables as well as values of those variables at initialization are defined.
+ Choose `nil` as an initial value if there's no default.
+
+4. See #build\_from\_seed method in `build_from_seed.rb` and add `something_erb` if necessary.
+ It is recommended to define the path to `lib/origami/inventory/something` in `lib/origami_config_private.rb` if adding a new directory.
+
+5. Go to #get\_vars method in `seed_builder.rb`. Add a new key-value pair in the hash such as
+ `'something' => ['variable1', 'variable2', 'variable3']`.
+ This tells origami what values are missing from the erb template.
+
+6. Then in #ks\_defn\_builder method of `ks_defn_builder.rb` add an appropriate hash entry.
+
+7. Finally modify `build_helper.rb`. #base\_seed\_path method: Add a hash entry that points
+ to the method you defined in 4. Specify dependencies of each variable in #dependencies method.
View
1,504 lib/origami/inventory/autoinst/autoinst.xml
@@ -0,0 +1,1504 @@
+<?xml version="1.0"?>
+<!DOCTYPE profile>
+<profile xmlns="http://www.suse.com/1.0/yast2ns" xmlns:config="http://www.suse.com/1.0/configns">
+ <add-on>
+ <add_on_products config:type="list"/>
+ </add-on>
+ <bootloader>
+ <device_map config:type="list">
+ <device_map_entry>
+ <firmware>fd0</firmware>
+ <linux>/dev/fd0</linux>
+ </device_map_entry>
+ <device_map_entry>
+ <firmware>hd0</firmware>
+ <linux>/dev/sda</linux>
+ </device_map_entry>
+ </device_map>
+ <global>
+ <activate>true</activate>
+ <boot_root>true</boot_root>
+ <default>SUSE Linux Enterprise Server 11 SP2 - 3.0.13-0.27</default>
+ <generic_mbr>true</generic_mbr>
+ <gfxmenu>/boot/message</gfxmenu>
+ <lines_cache_id>3</lines_cache_id>
+ <timeout config:type="integer">8</timeout>
+ </global>
+ <initrd_modules config:type="list">
+ <initrd_module>
+ <module>mptspi</module>
+ </initrd_module>
+ <initrd_module>
+ <module>ata_piix</module>
+ </initrd_module>
+ <initrd_module>
+ <module>ata_generic</module>
+ </initrd_module>
+ </initrd_modules>
+ <loader_type>grub</loader_type>
+ <sections config:type="list">
+ <section>
+ <append>resume=/dev/sda1 splash=silent showopts</append>
+ <image>/boot/vmlinuz-3.0.13-0.27-pae</image>
+ <initial>1</initial>
+ <initrd>/boot/initrd-3.0.13-0.27-pae</initrd>
+ <lines_cache_id>0</lines_cache_id>
+ <name>SUSE Linux Enterprise Server 11 SP2 - 3.0.13-0.27</name>
+ <original_name>linux</original_name>
+ <root>/dev/sda2</root>
+ <type>image</type>
+ <vgamode>0x317</vgamode>
+ </section>
+ <section>
+ <append>showopts ide=nodma apm=off noresume nosmp maxcpus=0 edd=off powersaved=off nohz=off highres=off processor.max_cstate=1 nomodeset x11failsafe</append>
+ <image>/boot/vmlinuz-3.0.13-0.27-pae</image>
+ <initrd>/boot/initrd-3.0.13-0.27-pae</initrd>
+ <lines_cache_id>1</lines_cache_id>
+ <name>Failsafe -- SUSE Linux Enterprise Server 11 SP2 - 3.0.13-0.27</name>
+ <original_name>failsafe</original_name>
+ <root>/dev/sda2</root>
+ <type>image</type>
+ <vgamode>0x317</vgamode>
+ </section>
+ <section>
+ <blockoffset>1</blockoffset>
+ <chainloader>/dev/fd0</chainloader>
+ <lines_cache_id>2</lines_cache_id>
+ <name>Floppy</name>
+ <noverifyroot>true</noverifyroot>
+ <original_name>floppy</original_name>
+ <root></root>
+ <type>other</type>
+ </section>
+ </sections>
+ </bootloader>
+ <ca_mgm>
+ <CAName>YaST_Default_CA</CAName>
+ <ca_commonName>YaST Default CA (linux-21ct)</ca_commonName>
+ <country>US</country>
+ <locality></locality>
+ <organisation></organisation>
+ <organisationUnit></organisationUnit>
+ <password>ENTER PASSWORD HERE</password>
+ <server_commonName>linux-21ct.site</server_commonName>
+ <server_email>postmaster@site</server_email>
+ <state></state>
+ <takeLocalServerName config:type="boolean">false</takeLocalServerName>
+ </ca_mgm>
+ <deploy_image>
+ <image_installation config:type="boolean">false</image_installation>
+ </deploy_image>
+ <firewall>
+ <FW_ALLOW_FW_BROADCAST_DMZ>no</FW_ALLOW_FW_BROADCAST_DMZ>
+ <FW_ALLOW_FW_BROADCAST_EXT>no</FW_ALLOW_FW_BROADCAST_EXT>
+ <FW_ALLOW_FW_BROADCAST_INT>no</FW_ALLOW_FW_BROADCAST_INT>
+ <FW_CONFIGURATIONS_DMZ></FW_CONFIGURATIONS_DMZ>
+ <FW_CONFIGURATIONS_EXT></FW_CONFIGURATIONS_EXT>
+ <FW_CONFIGURATIONS_INT></FW_CONFIGURATIONS_INT>
+ <FW_DEV_DMZ></FW_DEV_DMZ>
+ <FW_DEV_EXT>any eth0</FW_DEV_EXT>
+ <FW_DEV_INT></FW_DEV_INT>
+ <FW_FORWARD_ALWAYS_INOUT_DEV></FW_FORWARD_ALWAYS_INOUT_DEV>
+ <FW_FORWARD_MASQ></FW_FORWARD_MASQ>
+ <FW_IGNORE_FW_BROADCAST_DMZ>no</FW_IGNORE_FW_BROADCAST_DMZ>
+ <FW_IGNORE_FW_BROADCAST_EXT>yes</FW_IGNORE_FW_BROADCAST_EXT>
+ <FW_IGNORE_FW_BROADCAST_INT>no</FW_IGNORE_FW_BROADCAST_INT>
+ <FW_IPSEC_TRUST>no</FW_IPSEC_TRUST>
+ <FW_LOAD_MODULES>nf_conntrack_netbios_ns</FW_LOAD_MODULES>
+ <FW_LOG_ACCEPT_ALL>no</FW_LOG_ACCEPT_ALL>
+ <FW_LOG_ACCEPT_CRIT>yes</FW_LOG_ACCEPT_CRIT>
+ <FW_LOG_DROP_ALL>no</FW_LOG_DROP_ALL>
+ <FW_LOG_DROP_CRIT>yes</FW_LOG_DROP_CRIT>
+ <FW_MASQUERADE>no</FW_MASQUERADE>
+ <FW_PROTECT_FROM_INT>no</FW_PROTECT_FROM_INT>
+ <FW_ROUTE>no</FW_ROUTE>
+ <FW_SERVICES_ACCEPT_DMZ></FW_SERVICES_ACCEPT_DMZ>
+ <FW_SERVICES_ACCEPT_EXT>sshd</FW_SERVICES_ACCEPT_EXT>
+ <FW_SERVICES_ACCEPT_INT></FW_SERVICES_ACCEPT_INT>
+ <FW_SERVICES_ACCEPT_RELATED_DMZ></FW_SERVICES_ACCEPT_RELATED_DMZ>
+ <FW_SERVICES_ACCEPT_RELATED_EXT></FW_SERVICES_ACCEPT_RELATED_EXT>
+ <FW_SERVICES_ACCEPT_RELATED_INT></FW_SERVICES_ACCEPT_RELATED_INT>
+ <FW_SERVICES_DMZ_IP></FW_SERVICES_DMZ_IP>
+ <FW_SERVICES_DMZ_RPC></FW_SERVICES_DMZ_RPC>
+ <FW_SERVICES_DMZ_TCP></FW_SERVICES_DMZ_TCP>
+ <FW_SERVICES_DMZ_UDP></FW_SERVICES_DMZ_UDP>
+ <FW_SERVICES_EXT_IP></FW_SERVICES_EXT_IP>
+ <FW_SERVICES_EXT_RPC></FW_SERVICES_EXT_RPC>
+ <FW_SERVICES_EXT_TCP>ssh</FW_SERVICES_EXT_TCP>
+ <FW_SERVICES_EXT_UDP></FW_SERVICES_EXT_UDP>
+ <FW_SERVICES_INT_IP></FW_SERVICES_INT_IP>
+ <FW_SERVICES_INT_RPC></FW_SERVICES_INT_RPC>
+ <FW_SERVICES_INT_TCP></FW_SERVICES_INT_TCP>
+ <FW_SERVICES_INT_UDP></FW_SERVICES_INT_UDP>
+ <enable_firewall config:type="boolean">true</enable_firewall>
+ <start_firewall config:type="boolean">true</start_firewall>
+ </firewall>
+ <general>
+ <ask-list config:type="list"/>
+ <mode>
+ <confirm config:type="boolean">false</confirm>
+ </mode>
+ <mouse>
+ <id>none</id>
+ </mouse>
+ <proposals config:type="list"/>
+ <signature-handling>
+ <accept_file_without_checksum config:type="boolean">true</accept_file_without_checksum>
+ <accept_non_trusted_gpg_key config:type="boolean">true</accept_non_trusted_gpg_key>
+ <accept_unknown_gpg_key config:type="boolean">true</accept_unknown_gpg_key>
+ <accept_unsigned_file config:type="boolean">true</accept_unsigned_file>
+ <accept_verification_failed config:type="boolean">false</accept_verification_failed>
+ <import_gpg_key config:type="boolean">true</import_gpg_key>
+ </signature-handling>
+ <storage/>
+ </general>
+ <groups config:type="list">
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>100</gid>
+ <group_password>x</group_password>
+ <groupname>users</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>19</gid>
+ <group_password>x</group_password>
+ <groupname>floppy</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>1</gid>
+ <group_password>x</group_password>
+ <groupname>bin</groupname>
+ <userlist>daemon</userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>41</gid>
+ <group_password>x</group_password>
+ <groupname>xok</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>65533</gid>
+ <group_password>x</group_password>
+ <groupname>nobody</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>43</gid>
+ <group_password>x</group_password>
+ <groupname>modem</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>7</gid>
+ <group_password>x</group_password>
+ <groupname>lp</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>5</gid>
+ <group_password>x</group_password>
+ <groupname>tty</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>51</gid>
+ <group_password>!</group_password>
+ <groupname>postfix</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>104</gid>
+ <group_password>!</group_password>
+ <groupname>uuidd</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>65534</gid>
+ <group_password>x</group_password>
+ <groupname>nogroup</groupname>
+ <userlist>nobody</userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>59</gid>
+ <group_password>!</group_password>
+ <groupname>maildrop</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>101</gid>
+ <group_password>!</group_password>
+ <groupname>messagebus</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>33</gid>
+ <group_password>x</group_password>
+ <groupname>video</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>3</gid>
+ <group_password>x</group_password>
+ <groupname>sys</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>15</gid>
+ <group_password>x</group_password>
+ <groupname>shadow</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>21</gid>
+ <group_password>x</group_password>
+ <groupname>console</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>20</gid>
+ <group_password>x</group_password>
+ <groupname>cdrom</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>102</gid>
+ <group_password>!</group_password>
+ <groupname>haldaemon</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>42</gid>
+ <group_password>x</group_password>
+ <groupname>trusted</groupname>
+ <userlist></userlist>
+ </group>
+ <!-- No Puppet Group. <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>106</gid>
+ <group_password>!</group_password>
+ <groupname>puppet</groupname>
+ <userlist></userlist>
+ </group> -->
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>16</gid>
+ <group_password>x</group_password>
+ <groupname>dialout</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>107</gid>
+ <group_password>!</group_password>
+ <groupname>polkituser</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>10</gid>
+ <group_password>x</group_password>
+ <groupname>wheel</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>8</gid>
+ <group_password>x</group_password>
+ <groupname>www</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>40</gid>
+ <group_password>x</group_password>
+ <groupname>games</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>6</gid>
+ <group_password>x</group_password>
+ <groupname>disk</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>17</gid>
+ <group_password>x</group_password>
+ <groupname>audio</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>109</gid>
+ <group_password>!</group_password>
+ <groupname>suse-ncc</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>49</gid>
+ <group_password>x</group_password>
+ <groupname>ftp</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>25</gid>
+ <group_password>!</group_password>
+ <groupname>at</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>103</gid>
+ <group_password>!</group_password>
+ <groupname>tape</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>9</gid>
+ <group_password>x</group_password>
+ <groupname>kmem</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>32</gid>
+ <group_password>x</group_password>
+ <groupname>public</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>0</gid>
+ <group_password>x</group_password>
+ <groupname>root</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>12</gid>
+ <group_password>x</group_password>
+ <groupname>mail</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>2</gid>
+ <group_password>x</group_password>
+ <groupname>daemon</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>108</gid>
+ <group_password>!</group_password>
+ <groupname>ntp</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>105</gid>
+ <group_password>!</group_password>
+ <groupname>sfcb</groupname>
+ <userlist>root</userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>14</gid>
+ <group_password>x</group_password>
+ <groupname>uucp</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>71</gid>
+ <group_password>!</group_password>
+ <groupname>ntadmin</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>62</gid>
+ <group_password>x</group_password>
+ <groupname>man</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>22</gid>
+ <group_password>x</group_password>
+ <groupname>utmp</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>13</gid>
+ <group_password>x</group_password>
+ <groupname>news</groupname>
+ <userlist></userlist>
+ </group>
+ <group>
+ <encrypted config:type="boolean">true</encrypted>
+ <gid>65</gid>
+ <group_password>!</group_password>
+ <groupname>sshd</groupname>
+ <userlist></userlist>
+ </group>
+ </groups>
+ <host>
+ <hosts config:type="list">
+ <hosts_entry>
+ <host_address>127.0.0.1</host_address>
+ <names config:type="list">
+ <name>localhost</name>
+ </names>
+ </hosts_entry>
+ <hosts_entry>
+ <host_address>::1</host_address>
+ <names config:type="list">
+ <name>localhost ipv6-localhost ipv6-loopback</name>
+ </names>
+ </hosts_entry>
+ <hosts_entry>
+ <host_address>fe00::0</host_address>
+ <names config:type="list">
+ <name>ipv6-localnet</name>
+ </names>
+ </hosts_entry>
+ <hosts_entry>
+ <host_address>ff00::0</host_address>
+ <names config:type="list">
+ <name>ipv6-mcastprefix</name>
+ </names>
+ </hosts_entry>
+ <hosts_entry>
+ <host_address>ff02::1</host_address>
+ <names config:type="list">
+ <name>ipv6-allnodes</name>
+ </names>
+ </hosts_entry>
+ <hosts_entry>
+ <host_address>ff02::2</host_address>
+ <names config:type="list">
+ <name>ipv6-allrouters</name>
+ </names>
+ </hosts_entry>
+ <hosts_entry>
+ <host_address>ff02::3</host_address>
+ <names config:type="list">
+ <name>ipv6-allhosts</name>
+ </names>
+ </hosts_entry>
+ </hosts>
+ </host>
+ <iscsi-client>
+ <initiatorname></initiatorname>
+ <targets config:type="list"/>
+ <version>1.0</version>
+ </iscsi-client>
+ <kdump>
+ <add_crash_kernel config:type="boolean">false</add_crash_kernel>
+ <crash_kernel>128M-:64M</crash_kernel>
+ <general>
+ <KDUMPTOOL_FLAGS></KDUMPTOOL_FLAGS>
+ <KDUMP_COMMANDLINE></KDUMP_COMMANDLINE>
+ <KDUMP_COMMANDLINE_APPEND></KDUMP_COMMANDLINE_APPEND>
+ <KDUMP_CONTINUE_ON_ERROR>false</KDUMP_CONTINUE_ON_ERROR>
+ <KDUMP_COPY_KERNEL>yes</KDUMP_COPY_KERNEL>
+ <KDUMP_DUMPFORMAT>compressed</KDUMP_DUMPFORMAT>
+ <KDUMP_DUMPLEVEL>0</KDUMP_DUMPLEVEL>
+ <KDUMP_FREE_DISK_SIZE>64</KDUMP_FREE_DISK_SIZE>
+ <KDUMP_HOST_KEY></KDUMP_HOST_KEY>
+ <KDUMP_IMMEDIATE_REBOOT>yes</KDUMP_IMMEDIATE_REBOOT>
+ <KDUMP_KEEP_OLD_DUMPS>5</KDUMP_KEEP_OLD_DUMPS>
+ <KDUMP_KERNELVER></KDUMP_KERNELVER>
+ <KDUMP_NETCONFIG>auto</KDUMP_NETCONFIG>
+ <KDUMP_NOTIFICATION_CC></KDUMP_NOTIFICATION_CC>
+ <KDUMP_NOTIFICATION_TO></KDUMP_NOTIFICATION_TO>
+ <KDUMP_POSTSCRIPT></KDUMP_POSTSCRIPT>
+ <KDUMP_PRESCRIPT></KDUMP_PRESCRIPT>
+ <KDUMP_REQUIRED_PROGRAMS></KDUMP_REQUIRED_PROGRAMS>
+ <KDUMP_SAVEDIR>file:///var/crash</KDUMP_SAVEDIR>
+ <KDUMP_SMTP_PASSWORD></KDUMP_SMTP_PASSWORD>
+ <KDUMP_SMTP_SERVER></KDUMP_SMTP_SERVER>
+ <KDUMP_SMTP_USER></KDUMP_SMTP_USER>
+ <KDUMP_TRANSFER></KDUMP_TRANSFER>
+ <KDUMP_VERBOSE>3</KDUMP_VERBOSE>
+ <KEXEC_OPTIONS></KEXEC_OPTIONS>
+ </general>
+ </kdump>
+ <keyboard>
+ <keymap>english-us</keymap>
+ </keyboard>
+ <language>
+ <language>en_US</language>
+ <languages></languages>
+ </language>
+ <ldap>
+ <base_config_dn></base_config_dn>
+ <bind_dn></bind_dn>
+ <create_ldap config:type="boolean">false</create_ldap>
+ <file_server config:type="boolean">false</file_server>
+ <ldap_domain>dc=example,dc=com</ldap_domain>
+ <ldap_server>127.0.0.1</ldap_server>
+ <ldap_tls config:type="boolean">true</ldap_tls>
+ <ldap_v2 config:type="boolean">false</ldap_v2>
+ <login_enabled config:type="boolean">true</login_enabled>
+ <member_attribute>member</member_attribute>
+ <mkhomedir config:type="boolean">false</mkhomedir>
+ <pam_password>exop</pam_password>
+ <sssd config:type="boolean">false</sssd>
+ <start_autofs config:type="boolean">false</start_autofs>
+ <start_ldap config:type="boolean">false</start_ldap>
+ </ldap>
+ <login_settings/>
+ <networking>
+ <dhcp_options>
+ <dhclient_client_id></dhclient_client_id>
+ <dhclient_hostname_option>AUTO</dhclient_hostname_option>
+ </dhcp_options>
+ <dns>
+ <dhcp_hostname config:type="boolean">false</dhcp_hostname>
+ <domain>site</domain>
+ <hostname>linux-21ct</hostname>
+ <resolv_conf_policy>auto</resolv_conf_policy>
+ <write_hostname config:type="boolean">false</write_hostname>
+ </dns>
+ <interfaces config:type="list">
+ <interface>
+ <bootproto>dhcp</bootproto>
+ <device>eth0</device>
+ <name>79c970 [PCnet32 LANCE]</name>
+ <startmode>auto</startmode>
+ <usercontrol>no</usercontrol>
+ </interface>
+ <interface>
+ <aliases>
+ <alias2>
+ <IPADDR>127.0.0.2</IPADDR>
+ <NETMASK>255.0.0.0</NETMASK>
+ <PREFIXLEN>8</PREFIXLEN>
+ </alias2>
+ </aliases>
+ <broadcast>127.255.255.255</broadcast>
+ <device>lo</device>
+ <firewall>no</firewall>
+ <ipaddr>127.0.0.1</ipaddr>
+ <netmask>255.0.0.0</netmask>
+ <network>127.0.0.0</network>
+ <prefixlen>8</prefixlen>
+ <startmode>auto</startmode>
+ <usercontrol>no</usercontrol>
+ </interface>
+ </interfaces>
+ <managed config:type="boolean">false</managed>
+ <net-udev config:type="list">
+ <rule>
+ <name>eth0</name>
+ <rule>ATTR{address}</rule>
+ <value>00:0c:29:b4:4d:34</value>
+ </rule>
+ </net-udev>
+ <routing>
+ <ip_forward config:type="boolean">false</ip_forward>
+ </routing>
+ </networking>
+ <nis>
+ <netconfig_policy>auto</netconfig_policy>
+ <nis_broadcast config:type="boolean">false</nis_broadcast>
+ <nis_broken_server config:type="boolean">false</nis_broken_server>
+ <nis_domain></nis_domain>
+ <nis_local_only config:type="boolean">false</nis_local_only>
+ <nis_options></nis_options>
+ <nis_other_domains config:type="list"/>
+ <nis_servers config:type="list"/>
+ <slp_domain/>
+ <start_autofs config:type="boolean">false</start_autofs>
+ <start_nis config:type="boolean">false</start_nis>
+ </nis>
+ <ntp-client>
+ <ntp_policy>auto</ntp_policy>
+ <peers config:type="list">
+ <peer>
+ <address>127.127.1.0</address>
+ <comment>################################################################################
+## /etc/ntp.conf
+##
+## Sample NTP configuration file.
+## See package 'ntp-doc' for documentation, Mini-HOWTO and FAQ.
+## Copyright (c) 1998 S.u.S.E. GmbH Fuerth, Germany.
+##
+## Author: Michael Andres, &lt;ma@suse.de&gt;
+## Michael Skibbe, &lt;mskibbe@suse.de&gt;
+##
+################################################################################
+
+##
+## Radio and modem clocks by convention have addresses in the
+## form 127.127.t.u, where t is the clock type and u is a unit
+## number in the range 0-3.
+##
+## Most of these clocks require support in the form of a
+## serial port or special bus peripheral. The particular
+## device is normally specified by adding a soft link
+## /dev/device-u to the particular hardware device involved,
+## where u correspond to the unit number above.
+##
+## Generic DCF77 clock on serial port (Conrad DCF77)
+## Address: 127.127.8.u
+## Serial Port: /dev/refclock-u
+##
+## (create soft link /dev/refclock-0 to the particular ttyS?)
+##
+# server 127.127.8.0 mode 5 prefer
+
+##
+## Undisciplined Local Clock. This is a fake driver intended for backup
+## and when no outside source of synchronized time is available.
+##
+</comment>
+ <fudge_comment># local clock (LCL)
+</fudge_comment>
+ <fudge_options> stratum 10</fudge_options>
+ <options></options>
+ <type>__clock</type>
+ </peer>
+ <peer>
+ <address>/var/lib/ntp/drift/ntp.drift </address>
+ <comment># LCL is unsynchronized
+
+##
+## Add external Servers using
+## # rcntp addserver &lt;yourserver&gt;
+##
+
+##
+## Miscellaneous stuff
+##
+
+</comment>
+ <options></options>
+ <type>driftfile</type>
+ </peer>
+ <peer>
+ <address>/var/log/ntp </address>
+ <comment># path for drift file
+
+</comment>
+ <options></options>
+ <type>logfile</type>
+ </peer>
+ <peer>
+ <address>/etc/ntp.keys </address>
+ <comment># alternate log file
+# logconfig =syncstatus + sysevents
+# logconfig =all
+
+# statsdir /tmp/ # directory for statistics files
+# filegen peerstats file peerstats type day enable
+# filegen loopstats file loopstats type day enable
+# filegen clockstats file clockstats type day enable
+
+#
+# Authentication stuff
+#
+</comment>
+ <options></options>
+ <type>keys</type>
+ </peer>
+ <peer>
+ <address>1 </address>
+ <comment># path for keys file
+</comment>
+ <options></options>
+ <type>trustedkey</type>
+ </peer>
+ <peer>
+ <address>1 </address>
+ <comment># define trusted keys
+</comment>
+ <options></options>
+ <type>requestkey</type>
+ </peer>
+ </peers>
+ <start_at_boot config:type="boolean">false</start_at_boot>
+ <start_in_chroot config:type="boolean">true</start_in_chroot>
+ </ntp-client>
+ <partitioning config:type="list">
+ <drive>
+ <device>/dev/sda</device>
+ <initialize config:type="boolean">true</initialize>
+ <partitions config:type="list">
+ <partition>
+ <create config:type="boolean">true</create>
+ <crypt_fs config:type="boolean">false</crypt_fs>
+ <filesystem config:type="symbol">swap</filesystem>
+ <format config:type="boolean">true</format>
+ <fstopt>defaults</fstopt>
+ <loop_fs config:type="boolean">false</loop_fs>
+ <mount>swap</mount>
+ <mountby config:type="symbol">device</mountby>
+ <partition_id config:type="integer">130</partition_id>
+ <partition_nr config:type="integer">1</partition_nr>
+ <raid_options/>
+ <resize config:type="boolean">false</resize>
+ <size>1175617024</size>
+ </partition>
+ <partition>
+ <create config:type="boolean">true</create>
+ <crypt_fs config:type="boolean">false</crypt_fs>
+ <filesystem config:type="symbol">ext3</filesystem>
+ <format config:type="boolean">true</format>
+ <fstopt>acl,user_xattr</fstopt>
+ <loop_fs config:type="boolean">false</loop_fs>
+ <mount>/</mount>
+ <mountby config:type="symbol">device</mountby>
+ <partition_id config:type="integer">131</partition_id>
+ <partition_nr config:type="integer">2</partition_nr>
+ <raid_options/>
+ <resize config:type="boolean">false</resize>
+ <size>20281720320</size>
+ </partition>
+ </partitions>
+ <pesize></pesize>
+ <type config:type="symbol">CT_DISK</type>
+ <use>all</use>
+ </drive>
+ </partitioning>
+ <printer>
+ <cups_remote_server/>
+ <server_settings>
+ <BrowseAllow config:type="list">
+ <listentry>all</listentry>
+ </BrowseAllow>
+ <BrowseOrder config:type="list">
+ <listentry>allow,deny</listentry>
+ </BrowseOrder>
+ <Browsing config:type="list">
+ <listentry>On</listentry>
+ </Browsing>
+ <DefaultAuthType config:type="list">
+ <listentry>Basic</listentry>
+ </DefaultAuthType>
+ <DefaultPolicy config:type="list">
+ <listentry>default</listentry>
+ </DefaultPolicy>
+ <Listen config:type="list">
+ <listentry>localhost:631</listentry>
+ <listentry>/var/run/cups/cups.sock</listentry>
+ </Listen>
+ <LogLevel config:type="list">
+ <listentry>info</listentry>
+ </LogLevel>
+ <SystemGroup config:type="list">
+ <listentry>sys root</listentry>
+ </SystemGroup>
+ <sections config:type="list">
+ <section>
+ <Allow config:type="list">
+ <listentry>127.0.0.2</listentry>
+ </Allow>
+ <Key>Location</Key>
+ <Order config:type="list">
+ <listentry>allow,deny</listentry>
+ </Order>
+ <Value>/</Value>
+ </section>
+ <section>
+ <Encryption config:type="list">
+ <listentry>Required</listentry>
+ </Encryption>
+ <Key>Location</Key>
+ <Order config:type="list">
+ <listentry>allow,deny</listentry>
+ </Order>
+ <Value>/admin</Value>
+ </section>
+ <section>
+ <AuthType config:type="list">
+ <listentry>Default</listentry>
+ </AuthType>
+ <Key>Location</Key>
+ <Order config:type="list">
+ <listentry>allow,deny</listentry>
+ </Order>
+ <Require config:type="list">
+ <listentry>user @SYSTEM</listentry>
+ </Require>
+ <Value>/admin/conf</Value>
+ </section>
+ <section>
+ <Key>Policy</Key>
+ <Value>default</Value>
+ <sections config:type="list">
+ <section>
+ <Key>Limit</Key>
+ <Order config:type="list">
+ <listentry>deny,allow</listentry>
+ </Order>
+ <Require config:type="list">
+ <listentry>user @OWNER @SYSTEM</listentry>
+ </Require>
+ <Value>Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job CUPS-Move-Job</Value>
+ </section>
+ <section>
+ <AuthType config:type="list">
+ <listentry>Default</listentry>
+ </AuthType>
+ <Key>Limit</Key>
+ <Order config:type="list">
+ <listentry>deny,allow</listentry>
+ </Order>
+ <Require config:type="list">
+ <listentry>user @SYSTEM</listentry>
+ </Require>
+ <Value>CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default</Value>
+ </section>
+ <section>
+ <AuthType config:type="list">
+ <listentry>Default</listentry>
+ </AuthType>
+ <Key>Limit</Key>
+ <Order config:type="list">
+ <listentry>deny,allow</listentry>
+ </Order>
+ <Require config:type="list">
+ <listentry>user @SYSTEM</listentry>
+ </Require>
+ <Value>Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After CUPS-Accept-Jobs CUPS-Reject-Jobs</Value>
+ </section>
+ <section>
+ <Key>Limit</Key>
+ <Order config:type="list">
+ <listentry>deny,allow</listentry>
+ </Order>
+ <Require config:type="list">
+ <listentry>user @OWNER @SYSTEM</listentry>
+ </Require>
+ <Value>Cancel-Job CUPS-Authenticate-Job</Value>
+ </section>
+ <section>
+ <Key>Limit</Key>
+ <Order config:type="list">
+ <listentry>deny,allow</listentry>
+ </Order>
+ <Value>All</Value>
+ </section>
+ </sections>
+ </section>
+ <section>
+ <Key>Policy</Key>
+ <Value>easy</Value>
+ <sections config:type="list">
+ <section>
+ <Key>Limit</Key>
+ <Order config:type="list">
+ <listentry>allow,deny</listentry>
+ </Order>
+ <Satisfy config:type="list">
+ <listentry>any</listentry>
+ </Satisfy>
+ <Value>All</Value>
+ </section>
+ </sections>
+ </section>
+ <section>
+ <Key>Policy</Key>
+ <Value>paranoid</Value>
+ <sections config:type="list">
+ <section>
+ <Allow config:type="list">
+ <listentry>from 127.0.0.0/8</listentry>
+ </Allow>
+ <Key>Limit</Key>
+ <Order config:type="list">
+ <listentry>deny,allow</listentry>
+ </Order>
+ <Require config:type="list">
+ <listentry>user @OWNER</listentry>
+ </Require>
+ <Value>Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job CUPS-Move-Job</Value>
+ </section>
+ <section>
+ <Allow config:type="list">
+ <listentry>from 127.0.0.0/8</listentry>
+ </Allow>
+ <AuthType config:type="list">
+ <listentry>Default</listentry>
+ </AuthType>
+ <Key>Limit</Key>
+ <Order config:type="list">
+ <listentry>deny,allow</listentry>
+ </Order>
+ <Require config:type="list">
+ <listentry>user @SYSTEM</listentry>
+ </Require>
+ <Value>CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default</Value>
+ </section>
+ <section>
+ <Allow config:type="list">
+ <listentry>from 127.0.0.0/8</listentry>
+ </Allow>
+ <AuthType config:type="list">
+ <listentry>Default</listentry>
+ </AuthType>
+ <Key>Limit</Key>
+ <Order config:type="list">
+ <listentry>deny,allow</listentry>
+ </Order>
+ <Require config:type="list">
+ <listentry>user @SYSTEM</listentry>
+ </Require>
+ <Value>Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After CUPS-Accept-Jobs CUPS-Reject-Jobs</Value>
+ </section>
+ <section>
+ <Allow config:type="list">
+ <listentry>from 127.0.0.0/8</listentry>
+ </Allow>
+ <Key>Limit</Key>
+ <Order config:type="list">
+ <listentry>deny,allow</listentry>
+ </Order>
+ <Require config:type="list">
+ <listentry>user @OWNER</listentry>
+ </Require>
+ <Value>Cancel-Job CUPS-Authenticate-Job</Value>
+ </section>
+ <section>
+ <Allow config:type="list">
+ <listentry>from 127.0.0.0/8</listentry>
+ </Allow>
+ <Key>Limit</Key>
+ <Order config:type="list">
+ <listentry>deny,allow</listentry>
+ </Order>
+ <Require config:type="list">
+ <listentry>user @OWNER @SYSTEM</listentry>
+ </Require>
+ <Value>All</Value>
+ </section>
+ </sections>
+ </section>
+ </sections>
+ </server_settings>
+ </printer>
+ <proxy>
+ <enabled config:type="boolean">false</enabled>
+ <ftp_proxy></ftp_proxy>
+ <http_proxy></http_proxy>
+ <https_proxy></https_proxy>
+ <no_proxy>localhost, 127.0.0.1</no_proxy>
+ <proxy_password></proxy_password>
+ <proxy_user></proxy_user>
+ </proxy>
+ <report>
+ <errors>
+ <log config:type="boolean">true</log>
+ <show config:type="boolean">true</show>
+ <timeout config:type="integer">0</timeout>
+ </errors>
+ <messages>
+ <log config:type="boolean">true</log>
+ <show config:type="boolean">true</show>
+ <timeout config:type="integer">0</timeout>
+ </messages>
+ <warnings>
+ <log config:type="boolean">true</log>
+ <show config:type="boolean">true</show>
+ <timeout config:type="integer">0</timeout>
+ </warnings>
+ <yesno_messages>
+ <log config:type="boolean">true</log>
+ <show config:type="boolean">true</show>
+ <timeout config:type="integer">0</timeout>
+ </yesno_messages>
+ </report>
+ <runlevel>
+ <default>3</default>
+ </runlevel>
+ <software>
+ <packages config:type="list">
+ <package>desktop-data-SLED</package>
+ <package>desktop-translations</package>
+ <package>gconf2-branding-SLES</package>
+ <package>libproxy0-config-gnome</package>
+ <package>sound-theme-freedesktop</package>
+ <package>yast2-trans-en_US</package>
+ </packages>
+ <patterns config:type="list">
+ <pattern>Minimal</pattern>
+ <pattern>WBEM</pattern>
+ <pattern>apparmor</pattern>
+ <pattern>base</pattern>
+ <pattern>documentation</pattern>
+ <pattern>print_server</pattern>
+ </patterns>
+ <remove-packages config:type="list">
+ <package>Mesa</package>
+ <package>fonts-config</package>
+ <package>ft2demos</package>
+ <package>ghostscript-x11</package>
+ <package>libasound2</package>
+ <package>libdrm</package>
+ <package>libmysqlclient_r15</package>
+ <package>libpciaccess0</package>
+ <package>libqt4</package>
+ <package>libqt4-qt3support</package>
+ <package>libqt4-sql</package>
+ <package>libqt4-sql-mysql</package>
+ <package>libqt4-sql-sqlite</package>
+ <package>libqt4-x11</package>
+ <package>pcmciautils</package>
+ <package>portmap</package>
+ <package>rsyslog</package>
+ <package>sendmail</package>
+ <package>xorg-x11-fonts</package>
+ <package>xorg-x11-fonts-core</package>
+ <package>yast2-qt</package>
+ <package>yast2-qt-pkg</package>
+ </remove-packages>
+ </software>
+ <timezone>
+ <hwclock>UTC</hwclock>
+ <timezone>America/Los_Angeles</timezone>
+ </timezone>
+ <user_defaults>
+ <expire></expire>
+ <group>100</group>
+ <groups>video,dialout</groups>
+ <home>/home</home>
+ <inactive>-1</inactive>
+ <shell>/bin/bash</shell>
+ <skel>/etc/skel</skel>
+ <umask>022</umask>
+ </user_defaults>
+ <users config:type="list">
+ <user>
+ <encrypted config:type="boolean">true</encrypted>
+ <fullname>Games account</fullname>
+ <gid>100</gid>
+ <home>/var/games</home>
+ <password_settings>
+ <expire></expire>
+ <flag></flag>
+ <inact></inact>
+ <max></max>
+ <min></min>
+ <warn></warn>
+ </password_settings>
+ <shell>/bin/bash</shell>
+ <uid>12</uid>
+ <user_password>*</user_password>
+ <username>games</username>
+ </user>
+ <user>
+ <encrypted config:type="boolean">true</encrypted>
+ <fullname>bin</fullname>
+ <gid>1</gid>
+ <home>/bin</home>
+ <password_settings>
+ <expire></expire>
+ <flag></flag>
+ <inact></inact>
+ <max></max>
+ <min></min>
+ <warn></warn>
+ </password_settings>
+ <shell>/bin/bash</shell>
+ <uid>1</uid>
+ <user_password>*</user_password>
+ <username>bin</username>
+ </user>
+ <user>
+ <encrypted config:type="boolean">true</encrypted>
+ <fullname>nobody</fullname>
+ <gid>65533</gid>
+ <home>/var/lib/nobody</home>
+ <password_settings>
+ <expire></expire>
+ <flag></flag>
+ <inact></inact>
+ <max></max>
+ <min></min>
+ <warn></warn>
+ </password_settings>
+ <shell>/bin/bash</shell>
+ <uid>65534</uid>
+ <user_password>*</user_password>
+ <username>nobody</username>
+ </user>
+ <user>
+ <encrypted config:type="boolean">true</encrypted>
+ <fullname>Printing daemon</fullname>
+ <gid>7</gid>
+ <home>/var/spool/lpd</home>
+ <password_settings>
+ <expire></expire>
+ <flag></flag>
+ <inact></inact>
+ <max></max>
+ <min></min>
+ <warn></warn>
+ </password_settings>
+ <shell>/bin/bash</shell>
+ <uid>4</uid>
+ <user_password>*</user_password>
+ <username>lp</username>
+ </user>
+ <user>
+ <encrypted config:type="boolean">true</encrypted>
+ <fullname>Postfix Daemon</fullname>
+ <gid>51</gid>
+ <home>/var/spool/postfix</home>
+ <password_settings>
+ <expire></expire>
+ <flag></flag>
+ <inact></inact>
+ <max>99999</max>
+ <min>0</min>
+ <warn>7</warn>
+ </password_settings>
+ <shell>/bin/false</shell>
+ <uid>51</uid>
+ <user_password>*</user_password>
+ <username>postfix</username>
+ </user>
+ <user>
+ <encrypted config:type="boolean">true</encrypted>
+ <fullname>User for uuidd</fullname>
+ <gid>104</gid>
+ <home>/var/run/uuidd</home>
+ <password_settings>
+ <expire></expire>
+ <flag></flag>
+ <inact></inact>
+ <max>99999</max>
+ <min>0</min>
+ <warn>7</warn>
+ </password_settings>
+ <shell>/bin/false</shell>
+ <uid>102</uid>
+ <user_password>*</user_password>
+ <username>uuidd</username>
+ </user>
+ <user>
+ <encrypted config:type="boolean">true</encrypted>
+ <fullname>Novell Customer Center User</fullname>
+ <gid>109</gid>
+ <home>/var/lib/YaST2/suse-ncc-fakehome</home>
+ <password_settings>
+ <expire></expire>
+ <flag></flag>
+ <inact></inact>
+ <max>99999</max>
+ <min>0</min>
+ <warn>7</warn>
+ </password_settings>
+ <shell>/bin/bash</shell>
+ <uid>105</uid>
+ <user_password>*</user_password>
+ <username>suse-ncc</username>
+ </user>
+ <user>
+ <encrypted config:type="boolean">true</encrypted>
+ <fullname>FTP account</fullname>
+ <gid>49</gid>
+ <home>/srv/ftp</home>
+ <password_settings>
+ <expire></expire>
+ <flag></flag>
+ <inact></inact>
+ <max></max>
+ <min></min>
+ <warn></warn>
+ </password_settings>
+ <shell>/bin/bash</shell>
+ <uid>40</uid>
+ <user_password>*</user_password>
+ <username>ftp</username>
+ </user>
+ <user>
+ <encrypted config:type="boolean">true</encrypted>
+ <fullname>Batch jobs daemon</fullname>
+ <gid>25</gid>
+ <home>/var/spool/atjobs</home>
+ <password_settings>
+ <expire></expire>
+ <flag></flag>
+ <inact></inact>
+ <max>99999</max>
+ <min>0</min>
+ <warn>7</warn>
+ </password_settings>
+ <shell>/bin/bash</shell>
+ <uid>25</uid>
+ <user_password>*</user_password>
+ <username>at</username>
+ </user>
+ <user>
+ <encrypted config:type="boolean">true</encrypted>
+ <fullname>root</fullname>
+ <gid>0</gid>
+ <home>/root</home>
+ <password_settings>
+ <expire></expire>
+ <flag></flag>
+ <inact></inact>
+ <max></max>
+ <min></min>
+ <warn></warn>
+ </password_settings>
+ <shell>/bin/bash</shell>
+ <uid>0</uid>
+ <user_password>$2y$05$CEI5M.QIQj0UFgUHNEm5buVERw6BdWmVNAFpERVkXIZlSShYJ1A1y</user_password>
+ <username>root</username>
+ </user>
+ <user>
+ <encrypted config:type="boolean">true</encrypted>
+ <fullname>Mailer daemon</fullname>
+ <gid>12</gid>
+ <home>/var/spool/clientmqueue</home>
+ <password_settings>
+ <expire></expire>
+ <flag></flag>
+ <inact></inact>
+ <max></max>
+ <min></min>
+ <warn></warn>
+ </password_settings>
+ <shell>/bin/false</shell>
+ <uid>8</uid>
+ <user_password>*</user_password>
+ <username>mail</username>
+ </user>
+ <user>
+ <encrypted config:type="boolean">true</encrypted>
+ <fullname>Daemon</fullname>
+ <gid>2</gid>
+ <home>/sbin</home>
+ <password_settings>
+ <expire></expire>
+ <flag></flag>
+ <inact></inact>
+ <max></max>
+ <min></min>
+ <warn></warn>
+ </password_settings>
+ <shell>/bin/bash</shell>
+ <uid>2</uid>
+ <user_password>*</user_password>
+ <username>daemon</username>
+ </user>
+ <user>
+ <encrypted config:type="boolean">true</encrypted>
+ <fullname>NTP daemon</fullname>
+ <gid>108</gid>
+ <home>/var/lib/ntp</home>
+ <password_settings>
+ <expire></expire>
+ <flag></flag>
+ <inact></inact>
+ <max>99999</max>
+ <min>0</min>
+ <warn>7</warn>
+ </password_settings>
+ <shell>/bin/false</shell>
+ <uid>74</uid>
+ <user_password>*</user_password>
+ <username>ntp</username>
+ </user>
+ <user>
+ <encrypted config:type="boolean">true</encrypted>
+ <fullname>User for D-Bus</fullname>
+ <gid>101</gid>
+ <home>/var/run/dbus</home>
+ <password_settings>
+ <expire></expire>
+ <flag></flag>
+ <inact></inact>
+ <max></max>
+ <min>0</min>
+ <warn>7</warn>
+ </password_settings>
+ <shell>/bin/false</shell>
+ <uid>100</uid>
+ <user_password>*</user_password>
+ <username>messagebus</username>
+ </user>
+ <user>
+ <encrypted config:type="boolean">true</encrypted>
+ <fullname>Unix-to-Unix CoPy system</fullname>
+ <gid>14</gid>
+ <home>/etc/uucp</home>
+ <password_settings>
+ <expire></expire>
+ <flag></flag>
+ <inact></inact>
+ <max></max>
+ <min></min>
+ <warn></warn>
+ </password_settings>
+ <shell>/bin/bash</shell>
+ <uid>10</uid>
+ <user_password>*</user_password>
+ <username>uucp</username>
+ </user>
+ <user>
+ <encrypted config:type="boolean">true</encrypted>
+ <fullname>User for haldaemon</fullname>
+ <gid>102</gid>
+ <home>/var/run/hald</home>
+ <password_settings>
+ <expire></expire>
+ <flag></flag>
+ <inact></inact>
+ <max></max>
+ <min>0</min>
+ <warn>7</warn>
+ </password_settings>
+ <shell>/bin/false</shell>
+ <uid>101</uid>
+ <user_password>*</user_password>
+ <username>haldaemon</username>
+ </user>
+ <!-- No Puppet User. <user>
+ <encrypted config:type="boolean">true</encrypted>
+ <fullname>Puppet daemon</fullname>
+ <gid>106</gid>
+ <home>/var/lib/puppet</home>
+ <password_settings>
+ <expire></expire>
+ <flag></flag>
+ <inact></inact>
+ <max>99999</max>
+ <min>0</min>
+ <warn>7</warn>
+ </password_settings>
+ <shell>/bin/false</shell>
+ <uid>103</uid>
+ <user_password>*</user_password>
+ <username>puppet</username>
+ </user> -->
+ <user>
+ <encrypted config:type="boolean">true</encrypted>
+ <fullname>WWW daemon apache</fullname>
+ <gid>8</gid>
+ <home>/var/lib/wwwrun</home>
+ <password_settings>
+ <expire></expire>
+ <flag></flag>
+ <inact></inact>
+ <max></max>
+ <min></min>
+ <warn></warn>
+ </password_settings>
+ <shell>/bin/false</shell>
+ <uid>30</uid>
+ <user_password>*</user_password>
+ <username>wwwrun</username>
+ </user>
+ <user>
+ <encrypted config:type="boolean">true</encrypted>
+ <fullname>Manual pages viewer</fullname>
+ <gid>62</gid>
+ <home>/var/cache/man</home>
+ <password_settings>
+ <expire></expire>
+ <flag></flag>
+ <inact></inact>
+ <max></max>
+ <min></min>
+ <warn></warn>
+ </password_settings>
+ <shell>/bin/bash</shell>
+ <uid>13</uid>
+ <user_password>*</user_password>
+ <username>man</username>
+ </user>
+ <user>
+ <encrypted config:type="boolean">true</encrypted>
+ <fullname>PolicyKit</fullname>
+ <gid>107</gid>
+ <home>/var/run/PolicyKit</home>
+ <password_settings>
+ <expire></expire>
+ <flag></flag>
+ <inact></inact>
+ <max>99999</max>
+ <min>0</min>
+ <warn>7</warn>
+ </password_settings>
+ <shell>/bin/false</shell>
+ <uid>104</uid>
+ <user_password>*</user_password>
+ <username>polkituser</username>
+ </user>
+ <user>
+ <encrypted config:type="boolean">true</encrypted>
+ <fullname>News system</fullname>
+ <gid>13</gid>
+ <home>/etc/news</home>
+ <password_settings>
+ <expire></expire>
+ <flag></flag>
+ <inact></inact>
+ <max></max>
+ <min></min>
+ <warn></warn>
+ </password_settings>
+ <shell>/bin/bash</shell>
+ <uid>9</uid>
+ <user_password>*</user_password>
+ <username>news</username>
+ </user>
+ <user>
+ <fullname>SSH daemon</fullname>
+ <gid>65</gid>
+ <home>/var/lib/sshd</home>
+ <shell>/bin/false</shell>
+ <uid>71</uid>
+ <username>sshd</username>
+ </user>
+ </users>
+ <scripts>
+ <post-scripts config:type="list">
+ <script>
+ <filename>firewall_ssh.sh</filename>
+ <interpreter>shell</interpreter>
+ <source><![CDATA[
+#!/bin/sh
+
+echo "Running Post-install script"
+echo "Modifying firewall to allow ssh..."
+cat /etc/ssh/sshd_config | sed s/PasswordAuthentication\ no/PasswordAuthentication\ yes/ > /etc/ssh/sshd_config
+echo "Complete."
+]]>
+ </source>
+ </script>
+ </post-scripts>
+ </scripts>
+</profile>
View
1,572 lib/origami/inventory/autoinst/autoinst_base.erb
@@ -0,0 +1,1572 @@
+<?xml version="1.0"?>
+<!DOCTYPE profile>
+<profile xmlns="http://www.suse.com/1.0/yast2ns" xmlns:config="http://www.suse.com/1.0/configns">
+ <add-on>
+ <add_on_products config:type="list"/>
+ </add-on>
+ <bootloader>
+ <device_map config:type="list">
+ <device_map_entry>
+ <firmware>fd0</firmware>
+ <linux>/dev/fd0</linux>
+ </device_map_entry>
+ <device_map_entry>
+ <firmware>hd0</firmware>
+ <linux>/dev/sda</