Project

General

Profile

Migration 043 to 14 » History » Version 9

Patrick Schönfeld, 03/04/2014 04:05 PM

1 1 Patrick Schönfeld
h1. Migration of foreman 0.4.3 to foreman 1.4
2
3
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:
4
5 5 Patrick Schönfeld
# *Upgrade the system to Debian Wheezy in case you haven't already*
6
# *Create a full dump of the database (important step! without it the update*
7 1 Patrick Schönfeld
   WILL fail)
8
    
9 9 Patrick Schönfeld
       sudo -u postgres pg_dump foreman > /root/foreman_0.4.3.sql
10 5 Patrick Schönfeld
# *Drop the foreman database and remove foreman*
11 1 Patrick Schönfeld
    
12
    sudo -u postgres dropdb foreman
13
    sudo dpkg -r foreman foreman-pgsql foreman-proxy
14 5 Patrick Schönfeld
# *Backup /etc/foreman*
15 9 Patrick Schönfeld
    sudo cp -r /etc/foreman /root/etc_foreman_0.4.3
16 5 Patrick Schönfeld
# *Add foreman sources.list entries*
17 1 Patrick Schönfeld
18
   cat <<EOF>/etc/apt/sources.list.d/foreman.list
19
deb http://deb.theforeman.org/ wheezy stable
20
deb http://deb.theforeman.org/ wheezy 1.2
21
deb http://deb.theforeman.org/ squeeze 1.2
22
EOF
23 5 Patrick Schönfeld
# *Install some packages:*
24 1 Patrick Schönfeld
    apt-get install build-essential ruby1.9.1-dev
25 9 Patrick Schönfeld
# *Install foreman-installer package and run the foreman-installer:*
26 1 Patrick Schönfeld
   
27 4 Patrick Schönfeld
   sudo apt-get install foreman-installer
28 1 Patrick Schönfeld
   sudo foreman-installer
29
30
   Should end in a working, clean installation of 1.4
31
   (otherwise fix all problems, because thats where we want to get)
32
   
33
   One possible helpful command to that extend could be:
34
35
   cd /usr/share/foreman; bundle install
36
37
   followed by
38
39
   dpkg --configure -a
40
41 2 Patrick Schönfeld
   If dpkg  is successful foreman-installer will be successful too.
42
   It can be required to re-run the foreman-installer, though.
43 5 Patrick Schönfeld
# *Drop the 1.4 database and recreate it with the 0.4.3 dump*
44 1 Patrick Schönfeld
45
   sudo -u postgres dropdb foreman
46
   sudo -u postgres createdb foreman
47
48
   Populate it with the 0.4.2 backup
49
50
   sudo -u postgres psql foreman < /root/foreman_0.4.2.sql
51 5 Patrick Schönfeld
# *Downgrade foreman to 1.1.1+debian1*
52 1 Patrick Schönfeld
53
    apt-get install foreman=1.1.1+debian1 foreman-postgresql=1.1.1+debian1
54 6 Patrick Schönfeld
55
   This is necessary, since we need an older version of the upgrade scripts to get an upgradeable database state.
56
# *Edit /usr/share/foreman/lib/foreman/default_settings/loader.rb*
57
 
58
  Comment out the set-commands for the oauth-Keys around line 79-82; Be careful to keep the "[" in front of line 79!
59
# *Apply the patch from https://github.com/theforeman/foreman/commit/fb0998a0ecf9e78822d321044b8eed89cbe7a9f9.patch*  
60 1 Patrick Schönfeld
  (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)
61 6 Patrick Schönfeld
# *TRUNCATE audits table in foremann (yeah, thats necessary - sorry)*
62 1 Patrick Schönfeld
    sudo -u foreman psql foreman -c 'TRUNCATE audits'
63 6 Patrick Schönfeld
# *Execute the migration scripts:*
64 1 Patrick Schönfeld
    sudo -u foreman bundle exec rake db:migrate RAILS_ENV=production --trace
65 6 Patrick Schönfeld
# *Now upgrade to 1.4.1 again*
66 1 Patrick Schönfeld
    sudo apt-get install foreman=1.4.1-1 foreman-postgresql=1.4.1-1
67 6 Patrick Schönfeld
# *Add label column to hostgroup table:*
68 1 Patrick Schönfeld
    sudo -u foreman psql foreman -c 'ALTER TABLE hostgroups ADD label character varying(255);'
69 6 Patrick Schönfeld
# *Comment line 3 and 4 in /usr/share/foreman/db/migrate/20130924145800_remove_unused_role_fields.rb*
70
# *Run db migration scripts from 1.4*
71
72 1 Patrick Schönfeld
    foreman-rake db:migrate
73 7 Patrick Schönfeld
74
   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:
75
76 8 Patrick Schönfeld
   ALTER TABLE hostgroups DROP label;
77 7 Patrick Schönfeld
78
   Then re-run the migration script. 
79 6 Patrick Schönfeld
# *Revert the modification of 20130924145800_remove_unused_role_fields.rb*
80
# *Done!*