Add upgrade tasks for overcloud deployment
Change-Id: Iee02924908c938828669cf3d8d03c34eeda32183
This commit is contained in:
parent
b4e59672f7
commit
741bf8d002
|
@ -0,0 +1,6 @@
|
||||||
|
[gerrit]
|
||||||
|
host=review.gerrithub.io
|
||||||
|
port=29418
|
||||||
|
project=redhat-openstack/ansible-role-tripleo-overcloud-upgrade.git
|
||||||
|
defaultbranch=master
|
||||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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"
|
|
@ -0,0 +1,2 @@
|
||||||
|
pbr>=1.6
|
||||||
|
ansible==2.0.0
|
|
@ -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
|
|
@ -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)
|
|
@ -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,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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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'] }
|
|
@ -0,0 +1,2 @@
|
||||||
|
[undercloud]
|
||||||
|
undercloud
|
|
@ -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'] }
|
|
@ -0,0 +1,2 @@
|
||||||
|
---
|
||||||
|
# vars file for upgrade
|
Loading…
Reference in New Issue