최초 작성
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