mirror of https://github.com/ceph/ceph-ansible.git
commit
4166c6cdc2
|
@ -430,3 +430,128 @@
|
|||
delegate_to: "{{ item }}"
|
||||
with_items: groups.mons[0]
|
||||
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