Project

General

Profile

Migration 043 to 14 » History » Revision 9

Revision 8 (Patrick Schönfeld, 03/04/2014 04:05 PM) → Revision 9/10 (Patrick Schönfeld, 03/04/2014 04:05 PM)

h1. Migration of foreman 0.4.3 to foreman 1.4 

 Unfortunately the upgrade of foreman 0.4.3 isn't as easy as upgrading the packages, since their are some problems avoiding a working database migration. The following process has been developed and tested on a Debian Squeeze setup with the help of Greg Sutcliffe (gwmngilfen) and should work for other setups, too: 

 # *Upgrade the system to Debian Wheezy in case you haven't already* 
 # *Create a full dump of the database (important step! without it the update* 
    WILL fail) 
    
        sudo -u postgres pg_dump foreman > /root/foreman_0.4.3.sql /root/foreman_0.4.2.sql 
 # *Drop the foreman database and remove foreman* 
    
     sudo -u postgres dropdb foreman 
     sudo dpkg -r foreman foreman-pgsql foreman-proxy 
 # *Backup /etc/foreman* 
     sudo cp -r /etc/foreman /root/etc_foreman_0.4.3 /root/etc_foreman_0.4.2 
 # *Add foreman sources.list entries* 

    cat <<EOF>/etc/apt/sources.list.d/foreman.list 
 deb http://deb.theforeman.org/ wheezy stable 
 deb http://deb.theforeman.org/ wheezy 1.2 
 deb http://deb.theforeman.org/ squeeze 1.2 
 EOF 
 # *Install some packages:* 
     apt-get install build-essential ruby1.9.1-dev 
 # *Install foreman-installer package and run the foreman-installer:* forema installer:* 
   
    sudo apt-get install foreman-installer 
    sudo foreman-installer 

    Should end in a working, clean installation of 1.4 
    (otherwise fix all problems, because thats where we want to get) 
   
    One possible helpful command to that extend could be: 

    cd /usr/share/foreman; bundle install 

    followed by 

    dpkg --configure -a 

    If dpkg    is successful foreman-installer will be successful too. 
    It can be required to re-run the foreman-installer, though. 
 # *Drop the 1.4 database and recreate it with the 0.4.3 dump* 

    sudo -u postgres dropdb foreman 
    sudo -u postgres createdb foreman 

    Populate it with the 0.4.2 backup 

    sudo -u postgres psql foreman < /root/foreman_0.4.2.sql 
 # *Downgrade foreman to 1.1.1+debian1* 

     apt-get install foreman=1.1.1+debian1 foreman-postgresql=1.1.1+debian1 

    This is necessary, since we need an older version of the upgrade scripts to get an upgradeable database state. 
 # *Edit /usr/share/foreman/lib/foreman/default_settings/loader.rb* 
 
   Comment out the set-commands for the oauth-Keys around line 79-82; Be careful to keep the "[" in front of line 79! 
 # *Apply the patch from https://github.com/theforeman/foreman/commit/fb0998a0ecf9e78822d321044b8eed89cbe7a9f9.patch*   
   (the test/lib/puppet_setting_test.rb part in the patch can be deleted; it does not apply since this is an install and not the source tree) 
 # *TRUNCATE audits table in foremann (yeah, thats necessary - sorry)* 
     sudo -u foreman psql foreman -c 'TRUNCATE audits' 
 # *Execute the migration scripts:* 
     sudo -u foreman bundle exec rake db:migrate RAILS_ENV=production --trace 
 # *Now upgrade to 1.4.1 again* 
     sudo apt-get install foreman=1.4.1-1 foreman-postgresql=1.4.1-1 
 # *Add label column to hostgroup table:* 
     sudo -u foreman psql foreman -c 'ALTER TABLE hostgroups ADD label character varying(255);' 
 # *Comment line 3 and 4 in /usr/share/foreman/db/migrate/20130924145800_remove_unused_role_fields.rb* 
 # *Run db migration scripts from 1.4* 

     foreman-rake db:migrate 

    It might be, that it now complains, that 'label' column already exists (remember? we added it some steps before). If it does, just remove it from the database again with: 

    ALTER TABLE hostgroups DROP label; 

    Then re-run the migration script.  
 # *Revert the modification of 20130924145800_remove_unused_role_fields.rb* 
 # *Done!*