최초 작성

This commit is contained in:
2025-07-07 14:50:06 +09:00
parent 82bfaa4fec
commit 22e4dd99a8
9 changed files with 147 additions and 0 deletions

1
etcd-restore.sh Executable file
View 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
View 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

View 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/

View File

@@ -0,0 +1,2 @@
---
- include: redhat/main.yml

View 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 %}

View File

@@ -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"

View 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

View 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']

View File

@@ -0,0 +1,2 @@
---
# vars file for etcd-restore