mirror of https://github.com/ceph/ceph-ansible.git
commit
4166c6cdc2
|
@ -430,3 +430,128 @@
|
||||||
delegate_to: "{{ item }}"
|
delegate_to: "{{ item }}"
|
||||||
with_items: groups.mons[0]
|
with_items: groups.mons[0]
|
||||||
when: migration_completed.stat.exists == False
|
when: migration_completed.stat.exists == False
|
||||||
|
|
||||||
|
- hosts: rgws
|
||||||
|
serial: 1
|
||||||
|
sudo: True
|
||||||
|
|
||||||
|
vars:
|
||||||
|
backup_dir: /tmp/
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- name: Check if the node has be migrated already
|
||||||
|
stat: >
|
||||||
|
path=/var/lib/ceph/radosgw/migration_completed
|
||||||
|
register: migration_completed
|
||||||
|
ignore_errors: True
|
||||||
|
|
||||||
|
- name: Check for failed run
|
||||||
|
stat: >
|
||||||
|
path=/var/lib/ceph/{{ ansible_hostname }}.tar
|
||||||
|
register: rgw_archive_leftover
|
||||||
|
|
||||||
|
- fail: msg="Looks like an archive is already there, please remove it!"
|
||||||
|
when: migration_completed.stat.exists == False and rgw_archive_leftover.stat.exists == True
|
||||||
|
|
||||||
|
- name: Archive rados gateway configs
|
||||||
|
shell: >
|
||||||
|
tar -cpvzf - --one-file-system . /etc/ceph/* /etc/apache2/* | cat > {{ ansible_hostname }}.tar
|
||||||
|
chdir=/var/lib/ceph/
|
||||||
|
creates={{ ansible_hostname }}.tar
|
||||||
|
when: migration_completed.stat.exists == False
|
||||||
|
|
||||||
|
- name: Create backup directory
|
||||||
|
file: >
|
||||||
|
path={{ backup_dir }}/rgws-backups
|
||||||
|
state=directory
|
||||||
|
owner=root
|
||||||
|
group=root
|
||||||
|
mode=0644
|
||||||
|
delegate_to: "{{ item }}"
|
||||||
|
with_items: groups.backup[0]
|
||||||
|
when: migration_completed.stat.exists == False
|
||||||
|
|
||||||
|
- name: Scp RGWs dirs and configs
|
||||||
|
fetch: >
|
||||||
|
src=/var/lib/ceph/{{ ansible_hostname }}.tar
|
||||||
|
dest={{ backup_dir }}/rgws-backups/
|
||||||
|
flat=yes
|
||||||
|
when: migration_completed.stat.exists == False
|
||||||
|
|
||||||
|
- name: Gracefully stop the rados gateway and apache
|
||||||
|
service: >
|
||||||
|
name={{ item }}
|
||||||
|
state=stopped
|
||||||
|
with_items:
|
||||||
|
- apache2
|
||||||
|
- radosgw
|
||||||
|
when: migration_completed.stat.exists == False
|
||||||
|
|
||||||
|
- name: Wait for radosgw to be down
|
||||||
|
local_action: >
|
||||||
|
wait_for
|
||||||
|
host={{ ansible_ssh_host | default(inventory_hostname) }}
|
||||||
|
path=/tmp/radosgw.sock
|
||||||
|
state=absent
|
||||||
|
timeout=30
|
||||||
|
when: migration_completed.stat.exists == False
|
||||||
|
|
||||||
|
- name: Reboot the server
|
||||||
|
command: reboot
|
||||||
|
when: migration_completed.stat.exists == False
|
||||||
|
|
||||||
|
- name: Wait for the server to come up
|
||||||
|
local_action: >
|
||||||
|
wait_for
|
||||||
|
port=22
|
||||||
|
delay=10
|
||||||
|
timeout=3600
|
||||||
|
when: migration_completed.stat.exists == False
|
||||||
|
|
||||||
|
- name: Wait a bit to be sure that the server is ready for scp
|
||||||
|
pause: seconds=20
|
||||||
|
when: migration_completed.stat.exists == False
|
||||||
|
|
||||||
|
# NOTE (leseb): 'creates' was added in Ansible 1.6
|
||||||
|
- name: Copy and unarchive the OSD configs
|
||||||
|
unarchive: >
|
||||||
|
src={{ backup_dir }}/rgws-backups/{{ ansible_hostname }}.tar
|
||||||
|
dest=/var/lib/ceph/
|
||||||
|
copy=yes
|
||||||
|
mode=0600
|
||||||
|
creates=etc/ceph/ceph.conf
|
||||||
|
when: migration_completed.stat.exists == False
|
||||||
|
|
||||||
|
- name: Copy keys and configs
|
||||||
|
shell: {{ item }} chdir=/var/lib/ceph/
|
||||||
|
with_items:
|
||||||
|
- cp etc/ceph/* /etc/ceph/
|
||||||
|
- cp -r etc/apache2/* /etc/httpd/
|
||||||
|
when: migration_completed.stat.exists == False
|
||||||
|
|
||||||
|
- name: Start rados gateway and httpd
|
||||||
|
service: >
|
||||||
|
name={{ item }}
|
||||||
|
state=started
|
||||||
|
with_items:
|
||||||
|
- httpd
|
||||||
|
- radosgw
|
||||||
|
when: migration_completed.stat.exists == False
|
||||||
|
|
||||||
|
- name: Wait for radosgw to be up again
|
||||||
|
local_action: >
|
||||||
|
wait_for
|
||||||
|
host={{ ansible_ssh_host | default(inventory_hostname) }}
|
||||||
|
path=/tmp/radosgw.sock
|
||||||
|
state=present
|
||||||
|
timeout=30
|
||||||
|
when: migration_completed.stat.exists == False
|
||||||
|
|
||||||
|
- name: Done moving to the next rados gateway
|
||||||
|
file: >
|
||||||
|
path=/var/lib/ceph/radosgw/migration_completed
|
||||||
|
state=touch
|
||||||
|
owner=root
|
||||||
|
group=root
|
||||||
|
mode=0600
|
||||||
|
when: migration_completed.stat.exists == False
|
||||||
|
|
Loading…
Reference in New Issue