최초 작성
This commit is contained in:
1
etcd-restore.sh
Executable file
1
etcd-restore.sh
Executable file
@@ -0,0 +1 @@
|
|||||||
|
ANSIBLE_STDOUT_CALLBACK=debug ANSIBLE_DISPLAY_SKIPPED_HOSTS=false ansible-playbook -i hosts -e target=$1 etcd-restore.yml
|
||||||
9
etcd-restore.yml
Normal file
9
etcd-restore.yml
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
- hosts: all
|
||||||
|
remote_user: "{{ ansible_user }}"
|
||||||
|
become: yes
|
||||||
|
become_user: root
|
||||||
|
become_method: sudo
|
||||||
|
vars_files: "{{ 'group_vars/host.yml' if target == 'host' else 'group_vars/member.yml' }}"
|
||||||
|
roles:
|
||||||
|
- role: etcd-restore
|
||||||
29
roles/etcd-restore/.travis.yml
Normal file
29
roles/etcd-restore/.travis.yml
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
language: python
|
||||||
|
python: "2.7"
|
||||||
|
|
||||||
|
# Use the new container infrastructure
|
||||||
|
sudo: false
|
||||||
|
|
||||||
|
# Install ansible
|
||||||
|
addons:
|
||||||
|
apt:
|
||||||
|
packages:
|
||||||
|
- python-pip
|
||||||
|
|
||||||
|
install:
|
||||||
|
# Install ansible
|
||||||
|
- pip install ansible
|
||||||
|
|
||||||
|
# Check ansible version
|
||||||
|
- ansible --version
|
||||||
|
|
||||||
|
# Create ansible.cfg with correct roles_path
|
||||||
|
- printf '[defaults]\nroles_path=../' >ansible.cfg
|
||||||
|
|
||||||
|
script:
|
||||||
|
# Basic role syntax check
|
||||||
|
- ansible-playbook tests/test.yml -i tests/inventory --syntax-check
|
||||||
|
|
||||||
|
notifications:
|
||||||
|
webhooks: https://galaxy.ansible.com/api/v1/notifications/
|
||||||
2
roles/etcd-restore/tasks/main.yml
Normal file
2
roles/etcd-restore/tasks/main.yml
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
---
|
||||||
|
- include: redhat/main.yml
|
||||||
21
roles/etcd-restore/tasks/redhat/0-etcdctl-check.yml
Normal file
21
roles/etcd-restore/tasks/redhat/0-etcdctl-check.yml
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
- name: "[{{ target }} / 0-etcdctl-check.yml] etcd check"
|
||||||
|
shell: which etcdctl
|
||||||
|
register: etcdctl_check
|
||||||
|
failed_when: false
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
- name: "[{{ target }} / 0-etcdctl-check.yml] version check"
|
||||||
|
shell: etcdctl version
|
||||||
|
register: etcdctl_version
|
||||||
|
when: etcdctl_check.rc == 0
|
||||||
|
|
||||||
|
- name: "[{{ target }} / 0-etcdctl-check.yml] etcdctl info"
|
||||||
|
debug:
|
||||||
|
msg: |
|
||||||
|
{% if etcdctl_check.rc == 0 %}
|
||||||
|
{{ etcdctl_version.stdout_lines[0] }}
|
||||||
|
{{ etcdctl_version.stdout_lines[1] }}
|
||||||
|
{% else %}
|
||||||
|
etcdctl not installed
|
||||||
|
{% endif %}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
- name: "[{{ target }} / 1-etcd-backup-file-copy.yml] etcd backup file copy"
|
||||||
|
copy:
|
||||||
|
src: "{{ backup_dir }}/{{ etcd_filename }}"
|
||||||
|
dest: /tmp/{{ etcd_filename }}
|
||||||
|
mode: "0644"
|
||||||
52
roles/etcd-restore/tasks/redhat/2-etcd-restore.yml
Normal file
52
roles/etcd-restore/tasks/redhat/2-etcd-restore.yml
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
---
|
||||||
|
- name: set time
|
||||||
|
set_fact:
|
||||||
|
time: "{{ lookup('pipe','date +%Y%m%d%H%M') }}"
|
||||||
|
|
||||||
|
- name: "[{{ target }} / 2-etcd-restore.yml] etcd original backup directory create"
|
||||||
|
file:
|
||||||
|
path: /tmp/etcd-backup-{{ time }}
|
||||||
|
state: directory
|
||||||
|
mode: '0755'
|
||||||
|
|
||||||
|
- name: "[{{ target }} / 2-etcd-restore.yml] etcd original backup"
|
||||||
|
shell: |
|
||||||
|
cp -r /var/lib/etcd/* /tmp/etcd-backup-{{ time }}
|
||||||
|
|
||||||
|
- name: "[{{ target }} / 2-etcd-restore.yml] etcd original file delete"
|
||||||
|
shell: |
|
||||||
|
rm -rf /var/lib/etcd/*
|
||||||
|
|
||||||
|
- name: "[{{ target }} / 2-etcd-restore.yml] etcd restore directory create"
|
||||||
|
file:
|
||||||
|
path: /var/lib/etcd/recover
|
||||||
|
state: directory
|
||||||
|
mode: '0755'
|
||||||
|
|
||||||
|
- name: "[{{ target }} / 2-etcd-restore.yml] etcd restore"
|
||||||
|
shell: |
|
||||||
|
etcdctl snapshot restore /tmp/{{ etcd_filename }} \
|
||||||
|
--name {{ ansible_hostname }} \
|
||||||
|
--data-dir /var/lib/etcd/recover \
|
||||||
|
--initial-cluster {{ master_host_name }}=https://{{ master_ip }}:2380,{{ master2_hostname }}=https://{{ master2_ip }}:2380,{{ master3_hostname }}=https://{{ master3_ip }}:2380 \
|
||||||
|
--initial-advertise-peer-urls https://{{ ansible_host }}:2380
|
||||||
|
register: etcdctl_command_result
|
||||||
|
|
||||||
|
- name: "[{{ target }} / 2-etcd-restore.yml] etcd restore result"
|
||||||
|
debug:
|
||||||
|
msg: |
|
||||||
|
{% if etcdctl_command_result.rc == 0 %}
|
||||||
|
etcd restore success!
|
||||||
|
{% else %}
|
||||||
|
etcd restore failed!
|
||||||
|
{{ etcdctl_command_result.rc }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
- name: "[{{ target }} / 2-etcd-restore.yml] delete old etcd member directory"
|
||||||
|
file:
|
||||||
|
path: /var/lib/etcd/member
|
||||||
|
state: absent
|
||||||
|
|
||||||
|
- name: "[{{ target }} / 2-etcd-restore.yml] change name etcd restore directory"
|
||||||
|
shell: |
|
||||||
|
mv /var/lib/etcd/recover/member /var/lib/etcd/member
|
||||||
25
roles/etcd-restore/tasks/redhat/main.yml
Normal file
25
roles/etcd-restore/tasks/redhat/main.yml
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
---
|
||||||
|
- include: "0-etcdctl-check.yml"
|
||||||
|
when:
|
||||||
|
- "'host-master' in group_names or 'host-master-cluster' in group_names or 'member-master' in group_names or 'member-master-cluster' in group_names"
|
||||||
|
- target in ['host','member']
|
||||||
|
|
||||||
|
- include: "1-etcd-backup-file-copy.yml"
|
||||||
|
when:
|
||||||
|
- "'host-master' in group_names or 'host-master-cluster' in group_names"
|
||||||
|
- target in ['host']
|
||||||
|
|
||||||
|
- include: "1-etcd-backup-file-copy.yml"
|
||||||
|
when:
|
||||||
|
- "'member-master' in group_names or 'member-master-cluster' in group_names"
|
||||||
|
- target in ['member']
|
||||||
|
|
||||||
|
- include : "2-etcd-restore.yml"
|
||||||
|
when:
|
||||||
|
- "'host-master' in group_names or 'host-master-cluster' in group_names"
|
||||||
|
- target in ['host']
|
||||||
|
|
||||||
|
- include : "2-etcd-restore.yml"
|
||||||
|
when:
|
||||||
|
- "'member-master' in group_names or 'member-master-cluster' in group_names"
|
||||||
|
- target in ['member']
|
||||||
2
roles/etcd-restore/vars/main.yml
Normal file
2
roles/etcd-restore/vars/main.yml
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
---
|
||||||
|
# vars file for etcd-restore
|
||||||
Reference in New Issue
Block a user