summaryrefslogtreecommitdiff
path: root/doc/upgrading/upgrade-0-8.md
blob: 84e9cee2ab0ccadc79b21d3a3103949bd0800ad3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
@title = 'Upgrade to 0.8'
@toc = false

LEAP Platform release 0.8 introduces several major changes that need do get taken into account while upgrading:

* Dropping Debian Wheezy support. You need to upgrade your nodes to jessie before deploying a platform upgrade.
* Dropping BigCouch support. LEAP Platform now requires CouchDB and therefore you need to migrate all your data from BigCouch to CouchDB.

Upgrading to Platform 0.8
---------------------------------------------

### Step 1: Get new leap_platform and leap_cli

    workstation$ gem install leap_cli --version 1.8
    workstation$ cd leap_platform
    workstation$ git pull
    workstation$ git checkout 0.8.0

### Step 2: Prepare to migrate from BigCouch to CouchDB

<%= render :partial => 'docs/platform/common/bigcouch_migration_begin.md' %>

### Step 3: Upgrade from Debian Wheezy to Jessie

There are the [Debian release notes on how to upgrade from wheezy to jessie](https://www.debian.org/releases/stable/amd64/release-notes/ch-upgrading.html). Here are the steps that worked for us, but please keep in mind that there is no bullet-proof method that will work in every situation. 

**USE AT YOUR OWN RISK.**

For each one of your nodes, login to it and do the following process:

    # keep a log of the progress:
    screen
    script -t 2>~/leap_upgrade-jessiestep.time -a ~/upgrade-jessiestep.script

    # ensure you have a good wheezy install:
    export DEBIAN_FRONTEND=noninteractive
    apt-get autoremove --yes
    apt-get update
    apt-get -y -o DPkg::Options::=--force-confold dist-upgrade

    # if either of these return anything, you will need to resolve them before continuing:
    dpkg --audit
    dpkg --get-selections | grep 'hold$'

    # switch sources to jessie
    sed -i 's/wheezy/jessie/g' /etc/apt/sources.list
    rm /etc/apt/sources.list.d/*
    echo "deb http://deb.leap.se/0.8 jessie main" > /etc/apt/sources.list.d/leap.list

    # remove pinnings to wheezy
    rm /etc/apt/preferences
    rm /etc/apt/preferences.d/*

    # get jessie package lists
    apt-get update

    # clean out old package files
    apt-get clean

    # test to see if you have enough space to upgrade, the following will alert
    # you if you do not have enough space, it will not do the actual upgrade
    apt-get -o APT::Get::Trivial-Only=true dist-upgrade

    # do first stage upgrade
    apt-get -y -o DPkg::Options::=--force-confold upgrade

    # repeat the following until it makes no more changes:
    apt-get -y -o DPkg::Options::=--force-confold dist-upgrade

    # resolve any apt issues if there are some
    apt-get -y -o DPkg::Options::=--force-confold -f install

    # clean up extra packages
    apt-get autoremove --yes

    reboot


Potential Jessie Upgrade Issues
-------------------------------

**W: Ignoring Provides line with DepCompareOp for package python-cffi-backend-api-max**

You can ignore these warnings, they will be resolved on upgrade.

**E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?**

If you get this error, run `apt-get update` and then re-run the command.

**Unmet dependencies. Try using -f.**

Sometimes you might get an error similar to this (although the package names may be different):

    You might want to run 'apt-get -f install' to correct these.
    The following packages have unmet dependencies:
    lsof : Depends: libperl4-corelibs-perl but it is not installed or
                 perl (< 5.12.3-7) but 5.20.2-3+deb8u4 is installed

If this happens, run `apt-get -f install` to resolve it, and then re-do the previous upgrade command
you did when this happened.

**Failure restarting some services for OpenSSL upgrade**

If you get this warning:

    The following services could not be restarted for the OpenSSL library upgrade:
      postfix
    You will need to start these manually by running '/etc/init.d/<service> start'.

Just ignore it, it should be fixed on reboot/deploy.

### Step 4: Deploy LEAP Platform 0.8 to the Couch node

You will need to deploy the 0.8 version of LEAP Platform to the couch node before continuing. 

1. deploy to the couch node:

    ```
    workstation$ leap deploy <couchdb-node>
    ```

    If you used the iptables method of blocking access to couchdb, you need to run it again because the deploy just overwrote all the iptables rules:

    ```
    server# iptables -A INPUT -p tcp --dport 5984 --jump REJECT
    ```

### Step 5: Import Data into CouchDB

<%= render :partial => 'docs/platform/common/bigcouch_migration_end.md' %>

### Step 6: Deploy everything

Now that you've upgraded all nodes to Jessie, and migrated to CouchDB, you are ready to deploy LEAP Platform 0.8 to the rest of the nodes:

    workstation$ cd <provider directory>
    workstation$ leap deploy

### Step 7: Test and cleanup

<%= render :partial => 'docs/platform/common/bigcouch_migration_finish.md' %>