Add upgrade tasks for overcloud deployment

Change-Id: Iee02924908c938828669cf3d8d03c34eeda32183
This commit is contained in:
Mathieu Bultel 2016-04-01 15:38:02 +02:00
parent b4e59672f7
commit 741bf8d002
21 changed files with 377 additions and 0 deletions

6
.gitreview Normal file
View File

@ -0,0 +1,6 @@
[gerrit]
host=review.gerrithub.io
port=29418
project=redhat-openstack/ansible-role-tripleo-overcloud-upgrade.git
defaultbranch=master

62
README.md Normal file
View File

@ -0,0 +1,62 @@
Ansible-role-tripleo-overcloud-upgrade
======================================
Requirements
------------
This role can be used on top of an existing Overcloud deployment.
You just need to provide the required inventory file (see tests/ for more
details).
Role Variables
--------------
Here is the default parameters for overcloud upgrade role:
```
# pre upgrade settings:
oc_dns_server: 192.168.122.1
# set-repo settings:
target_upgrade_version: mitaka
delorean_hash: current-passed-ci
repos:
- delorean.repo
- delorean-deps.repo
yum_repo_path: /etc/yum.repos.d/
# Url of the delorean repos:
repos_url:
- http://trunk.rdoproject.org/centos7-{{ target_upgrade_version }}/{{ delorean_hash | default('current-passed-ci')}}/delorean.repo
- http://trunk.rdoproject.org/centos7-{{ target_upgrade_version }}/delorean-deps.repo
```
Dependencies
------------
Depends on:
Tripleo-quickstart:
https://github.com/redhat-openstack/tripleo-quickstart.git
Ansible-role-tripleo-overcloud:
https://github.com/redhat-openstack/ansible-role-tripleo-overcloud.git
Example Playbook
----------------
```
- name: Upgrade overcloud
hosts: undercloud
gather_facts: no
sudo: yes
roles:
- ansible-role-tripleo-overcloud-upgrade
```
License
-------
Apache
Author Information
------------------
mbultel@redhat.com

14
ansible.cfg Normal file
View File

@ -0,0 +1,14 @@
[defaults]
gathering = smart
command_warnings = False
retry_files_enabled = False
callback_whitelist = profile_tasks
# Attempt to load custom modules whether it's installed system-wide or from a virtual environment
test_plugins = /usr/lib/python2.7/site-packages/tripleo-quickstart/playbooks/test_plugins:$VIRTUAL_ENV/usr/local/share/tripleo-quickstart/playbooks/test_plugins:playbooks/test_plugins
library = /usr/lib/python2.7/site-packages/tripleo-quickstart/playbooks/library:$VIRTUAL_ENV/usr/local/share/tripleo-quickstart/playbooks/library:playbooks/library
roles_path = playbooks/roles:$VIRTUAL_ENV/usr/local/share/tripleo-quickstart/playbooks/roles:$VIRTUAL_ENV/usr/local/share/
[ssh_connection]
control_path = %(directory)s/%%h-%%r

27
defaults/main.yml Normal file
View File

@ -0,0 +1,27 @@
---
# pre upgrade settings:
oc_dns_server: 192.168.122.1
# set-repo settings:
target_upgrade_version: mitaka
upgrade_delorean_hash: current-passed-ci
repos:
- delorean.repo
- delorean-deps.repo
yum_repo_path: /etc/yum.repos.d/
# Url of the delorean repos:
repos_url:
- http://trunk.rdoproject.org/centos7-{{ target_upgrade_version }}/{{ upgrade_delorean_hash | default('current-passed-ci')}}/delorean.repo
- http://trunk.rdoproject.org/centos7-{{ target_upgrade_version }}/delorean-deps.repo
# upgrade settings:
upgrade_working_dir: /home/stack
tht_dir: tripleo-heat-templates
upgrade_script: upgrade-controller-liberty.sh.j2
upgrade_non_controller_script: /bin/upgrade-non-controller.sh
upgrade_log: upgrade_console.log
undercloud_upgrade_user: stack
# upgrade steps:
step_pre_upgrade: false
step_upgrade_set_repo: true
step_upgrade_undercloud: true
step_upgrade_overcloud: true

9
handlers/main.yml Normal file
View File

@ -0,0 +1,9 @@
---
# handlers file for upgrade
- name: restart openstack services
service: name={{item}} state=restarted
sudo: yes
with_items:
- openstack-heat-api
- openstack-heat-engine
- openstack-nova-api

34
meta/main.yml Normal file
View File

@ -0,0 +1,34 @@
---
# Copyright Red Hat, Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
galaxy_info:
author: redhat-openstack
description: Ansible set of tasks for upgrading Tripleo-Overcloud
company: Red Hat
license: Apache2
min_ansible_version: 2.0.0
platforms:
- name: EL
versions:
- all
categories:
- cloud
- python
- development
- openstack
#dependencies:
# - role: "common"

2
requirements.txt Normal file
View File

@ -0,0 +1,2 @@
pbr>=1.6
ansible==2.0.0

36
setup.cfg Normal file
View File

@ -0,0 +1,36 @@
[metadata]
name = ansible-role-tripleo-overcloud-upgrade
summary = ansible-role-tripleo-overcloud-upgrade - A ansible role for upgrading a tripleo overcloud
description-file =
README.md
author = RDO-CI Team
author-email = mbultel@redhat.com, whayutin@redhat.com
home-page = https://github.com/redhat-openstack/ansible-role-tripleo-overcloud
classifier =
License :: OSI Approved :: Apache Software License
Development Status :: 4 - Beta
Intended Audience :: Developers
Intended Audience :: System Administrators
Intended Audience :: Information Technology
Topic :: Utilities
[global]
setup-hooks =
pbr.hooks.setup_hook
[files]
data_files =
usr/local/share/ansible-role-tripleo-overcloud-upgrade/defaults = ../ansible-role-tripleo-overcloud-upgrade/defaults/*
usr/local/share/ansible-role-tripleo-overcloud-upgrade/handlers = ../ansible-role-tripleo-overcloud-upgrade/handlers/*
usr/local/share/ansible-role-tripleo-overcloud-upgrade/meta = ../ansible-role-tripleo-overcloud-upgrade/meta/*
usr/local/share/ansible-role-tripleo-overcloud-upgrade/tasks = ../ansible-role-tripleo-overcloud-upgrade/tasks/*
usr/local/share/ansible-role-tripleo-overcloud-upgrade/templates = ../ansible-role-tripleo-overcloud-upgrade/templates/*
usr/local/share/ansible-role-tripleo-overcloud-upgrade/tests = ../ansible-role-tripleo-overcloud-upgrade/tests/*
usr/local/share/ansible-role-tripleo-overcloud-upgrade/vars = ../ansible-role-tripleo-overcloud-upgrade/vars/*
[wheel]
universal = 1
[pbr]
skip_authors = True
skip_changelog = True

19
setup.py Normal file
View File

@ -0,0 +1,19 @@
# Copyright Red Hat, Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import setuptools
setuptools.setup(
setup_requires=['pbr'],
pbr=True)

23
tasks/main.yml Normal file
View File

@ -0,0 +1,23 @@
---
- include: pre-upgrade.yml
tags:
- upgrade-pre-tasks
- include: set-repo.yml
when: step_upgrade_set_repo
tags:
- upgrade-repo
- include: upgrade-undercloud.yml
when: step_upgrade_undercloud
tags:
- upgrade-undercloud
- include: upgrade-overcloud.yml
when: step_upgrade_overcloud
tags:
- upgrade-overcloud
- include: post-upgrade.yml
tags:
- upgrade-post-tasks

0
tasks/post-upgrade.yml Normal file
View File

8
tasks/pre-upgrade.yml Normal file
View File

@ -0,0 +1,8 @@
---
- name: Update overcloud dns server
sudo: yes
lineinfile:
regexp: "nameserver"
line: "nameserver {{ oc_dns_server }}"
dest: "/etc/resolv.conf"
when: step_pre_upgrade

14
tasks/set-repo.yml Normal file
View File

@ -0,0 +1,14 @@
---
- name: Clean up the repos
sudo: yes
file: path=/etc/yum.repos.d/{{ item }} state=absent
with_items: "{{ repos }}"
- name: Get delorean repo
sudo: yes
get_url: url={{ item }} dest={{ yum_repo_path }}
with_items: "{{ repos_url }}"
- name: Clean yum cache
sudo: yes
shell: yum clean all

View File

@ -0,0 +1,25 @@
---
- name: Make sure no Tht repo is present
file: path={{ upgrade_working_dir }}/{{ tht_dir }} state=absent
- name: Copy new Tht directory to the upgrade working dir
shell: >
cp -R /usr/share/openstack-tripleo-heat-templates \
{{ upgrade_working_dir }}/{{ tht_dir }};
- name: Add the no ssh finger print checking into upgrade-non-controller.sh
sudo: yes
shell: >
sed -i 's/ssh/ssh -o StrictHostKeyChecking=no/' \
{{ upgrade_non_controller_script }}
- name: Create overcloud deploy script
template:
src: "{{ upgrade_script }}"
dest: "{{ upgrade_working_dir }}/overcloud-upgrade.sh"
mode: 0755
- name: Upgrade the overcloud
shell: >
{{ upgrade_working_dir }}/overcloud-upgrade.sh > {{ upgrade_log }} 2>&1
when: step_upgrade_overcloud

View File

@ -0,0 +1,10 @@
---
- name: Execute yum update on the undercloud
sudo: yes
yum: name=* state=latest
- name: Upgrade the undercloud
shell: openstack undercloud install &> upgrade_undercloud.log
when: step_upgrade_undercloud
notify:
- restart openstack services

View File

@ -0,0 +1,20 @@
#!/bin/bash
# Script for set up the target repositories for Upgrade
set -eux
curl -o /etc/yum.repos.d/delorean.repo http://trunk.rdoproject.org/centos7-{{ target_upgrade_version }}/{{ delorean_hash | default('current-passed-ci')}}/delorean.repo
curl -o /etc/yum.repos.d/delorean-deps.repo http://trunk.rdoproject.org/centos7-{{ target_upgrade_version }}/delorean-deps.repo
# We need EPEL for the ceph packages currently, so make EPEL
# available only for those packages.
cat <<-EOF>>/etc/yum.repos.d/ceph.repo
[ceph]
name=Ceph packages from EPEL
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=x86_64
failovermethod=priority
enabled=1
gpgcheck=0
includepkgs=ceph,leveldb,libcephfs1,python-cephfs
EOF

View File

@ -0,0 +1,27 @@
#!/bin/bash
source {{ upgrade_working_dir }}/stackrc
echo "execute script delivery"
openstack overcloud deploy --templates {{ tht_dir }} \
-e {{ tht_dir }}/overcloud-resource-registry-puppet.yaml \
-e {{ tht_dir }}/environments/puppet-pacemaker.yaml \
-e {{ tht_dir }}/environments/major-upgrade-pacemaker-init.yaml
echo "execute major upgrade controller"
openstack overcloud deploy --templates {{ tht_dir }} \
-e {{ tht_dir }}/overcloud-resource-registry-puppet.yaml \
-e {{ tht_dir }}/environments/puppet-pacemaker.yaml \
-e {{ tht_dir }}/environments/major-upgrade-pacemaker.yaml
echo "get compute uuid and update compute"
compute_uuid=`nova list | grep overcloud-novacompute-0 | awk '{ print $2; }'`
{{ upgrade_non_controller_script }} --upgrade $compute_uuid
echo "get ceph uuid and update ceph"
ceph_uuid=`nova list | grep overcloud-cephstorage-0 | awk '{ print $2; }'`
{{ upgrade_non_controller_script }} --upgrade $ceph_uuid
echo "execute converge"
openstack overcloud deploy --templates {{ tht_dir }} \
-e {{ tht_dir }}/overcloud-resource-registry-puppet.yaml \
-e {{ tht_dir }}/environments/puppet-pacemaker.yaml \
-e {{ tht_dir }}/environments/major-upgrade-pacemaker-converge.yaml

6
test.yaml Normal file
View File

@ -0,0 +1,6 @@
- name: Set undercloud repo
hosts: undercloud
gather_facts: no
sudo: yes
roles:
- { role: ansible-role-tripleo-overcloud-upgrade, tags: ['upgrade-repo'] }

2
tests/inventory Normal file
View File

@ -0,0 +1,2 @@
[undercloud]
undercloud

31
tests/test.yml Normal file
View File

@ -0,0 +1,31 @@
- name: Execute pre-task for upgrade
hosts: overcloud
gather_facts: no
sudo: yes
roles:
- { role: ansible-role-tripleo-overcloud-upgrade, tags: ['upgrade-pre-tasks'] }
- name: Set undercloud repo
hosts: undercloud
gather_facts: no
sudo: yes
roles:
- { role: ansible-role-tripleo-overcloud-upgrade, tags: ['upgrade-repo'] }
- name: Upgrade the undercloud
hosts: undercloud
gather_facts: no
roles:
- { role: ansible-role-tripleo-overcloud-upgrade, tags: ['upgrade-undercloud'] }
- name: Upgrade the overcloud
hosts: undercloud
gather_facts: no
roles:
- { role: ansible-role-tripleo-overcloud-upgrade, tags: ['upgrade-overcloud'] }
- name: Execute post upgrade tasks
hosts: undercloud
gather_facts: no
roles:
- { role: ansible-role-tripleo-overcloud-upgrade, tags: ['upgrade-post-tasks'] }

2
vars/main.yml Normal file
View File

@ -0,0 +1,2 @@
---
# vars file for upgrade