From 2634b0cf819abd51b9f7237e2441edcf1e038a1a Mon Sep 17 00:00:00 2001 From: Lulzette Date: Thu, 19 Aug 2021 17:24:46 +0300 Subject: [PATCH] gluster+drbd from arch vm --- drbd-ansible/global_common.conf | 78 +++++++++++++++++++++ drbd-ansible/playme.yml | 17 +++++ gluster-ansible/bashrc | 119 ++++++++++++++++++++++++++++++++ gluster-ansible/destroy.yml | 42 +++++++++++ gluster-ansible/hosts | 16 +++++ gluster-ansible/playme.yml | 56 +++++++++++++++ gluster-ansible/sudoers | 31 +++++++++ 7 files changed, 359 insertions(+) create mode 100644 drbd-ansible/global_common.conf create mode 100644 drbd-ansible/playme.yml create mode 100644 gluster-ansible/bashrc create mode 100644 gluster-ansible/destroy.yml create mode 100644 gluster-ansible/hosts create mode 100644 gluster-ansible/playme.yml create mode 100644 gluster-ansible/sudoers diff --git a/drbd-ansible/global_common.conf b/drbd-ansible/global_common.conf new file mode 100644 index 0000000..026a761 --- /dev/null +++ b/drbd-ansible/global_common.conf @@ -0,0 +1,78 @@ +# DRBD is the result of over a decade of development by LINBIT. +# In case you need professional services for DRBD or have +# feature requests visit http://www.linbit.com + +global { + usage-count no; + + # Decide what kind of udev symlinks you want for "implicit" volumes + # (those without explicit volume {} block, implied vnr=0): + # /dev/drbd/by-resource// (explicit volumes) + # /dev/drbd/by-resource/ (default for implict) + udev-always-use-vnr; # treat implicit the same as explicit volumes + + # minor-count dialog-refresh disable-ip-verification + # cmd-timeout-short 5; cmd-timeout-medium 121; cmd-timeout-long 600; +} + +common { + handlers { + # These are EXAMPLE handlers only. + # They may have severe implications, + # like hard resetting the node under certain circumstances. + # Be careful when choosing your poison. + + # pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f"; + # pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f"; + # local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f"; + # fence-peer "/usr/lib/drbd/crm-fence-peer.sh"; + # split-brain "/usr/lib/drbd/notify-split-brain.sh root"; + # out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root"; + # before-resync-target "/usr/lib/drbd/snapshot-resync-target-lvm.sh -p 15 -- -c 16k"; + # after-resync-target /usr/lib/drbd/unsnapshot-resync-target-lvm.sh; + # quorum-lost "/usr/lib/drbd/notify-quorum-lost.sh root"; + } + + startup { + # wfc-timeout degr-wfc-timeout outdated-wfc-timeout wait-after-sb + } + + options { + # cpu-mask on-no-data-accessible + + # RECOMMENDED for three or more storage nodes with DRBD 9: + # quorum majority; + # on-no-quorum suspend-io | io-error; + } + + disk { + # size on-io-error fencing disk-barrier disk-flushes + # disk-drain md-flushes resync-rate resync-after al-extents + # c-plan-ahead c-delay-target c-fill-target c-max-rate + # c-min-rate disk-timeout + } + + net { + # protocol timeout max-epoch-size max-buffers + # connect-int ping-int sndbuf-size rcvbuf-size ko-count + # allow-two-primaries cram-hmac-alg shared-secret after-sb-0pri + # after-sb-1pri after-sb-2pri always-asbp rr-conflict + # ping-timeout data-integrity-alg tcp-cork on-congestion + # congestion-fill congestion-extents csums-alg verify-alg + # use-rle + } +} +resource test { + on shit1 { + device /dev/drbd0; + disk /dev/vdb; + meta-disk internal; + address 192.168.100.121:7789; + } + on shit2 { + device /dev/drbd0; + disk /dev/vdb; + meta-disk internal; + address 192.168.100.122:7789; + } +} diff --git a/drbd-ansible/playme.yml b/drbd-ansible/playme.yml new file mode 100644 index 0000000..bce4199 --- /dev/null +++ b/drbd-ansible/playme.yml @@ -0,0 +1,17 @@ +--- + - hosts: pg1 + become: true + become_user: root + tasks: + - name: Install drbd-utils + apt: + name: drbd-utils + state: present + update_cache: yes + + - name: Copy sudoers + template: + src: global_common.conf + dest: /etc/drbd.d/global_common.conf + + diff --git a/gluster-ansible/bashrc b/gluster-ansible/bashrc new file mode 100644 index 0000000..995a0a9 --- /dev/null +++ b/gluster-ansible/bashrc @@ -0,0 +1,119 @@ +# ~/.bashrc: executed by bash(1) for non-login shells. +# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) +# for examples + +# If not running interactively, don't do anything +case $- in + *i*) ;; + *) return;; +esac + +# don't put duplicate lines or lines starting with space in the history. +# See bash(1) for more options +HISTCONTROL=ignoreboth + +# append to the history file, don't overwrite it +shopt -s histappend + +# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) +HISTSIZE=1000 +HISTFILESIZE=2000 + +# check the window size after each command and, if necessary, +# update the values of LINES and COLUMNS. +shopt -s checkwinsize + +# If set, the pattern "**" used in a pathname expansion context will +# match all files and zero or more directories and subdirectories. +#shopt -s globstar + +# make less more friendly for non-text input files, see lesspipe(1) +[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" + +# set variable identifying the chroot you work in (used in the prompt below) +if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then + debian_chroot=$(cat /etc/debian_chroot) +fi + +# set a fancy prompt (non-color, unless we know we "want" color) +case "$TERM" in + xterm-color|*-256color) color_prompt=yes;; +esac + +# uncomment for a colored prompt, if the terminal has the capability; turned +# off by default to not distract the user: the focus in a terminal window +# should be on the output of commands, not on the prompt +#force_color_prompt=yes + +if [ -n "$force_color_prompt" ]; then + if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then + # We have color support; assume it's compliant with Ecma-48 + # (ISO/IEC-6429). (Lack of such support is extremely rare, and such + # a case would tend to support setf rather than setaf.) + color_prompt=yes + else + color_prompt= + fi +fi + +if [ "$color_prompt" = yes ]; then + PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' +else + PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' +fi +unset color_prompt force_color_prompt + +# If this is an xterm set the title to user@host:dir +case "$TERM" in +xterm*|rxvt*) + PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" + ;; +*) + ;; +esac + +# enable color support of ls and also add handy aliases +if [ -x /usr/bin/dircolors ]; then + test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" + alias ls='ls --color=auto' + #alias dir='dir --color=auto' + #alias vdir='vdir --color=auto' + + alias grep='grep --color=auto' + alias fgrep='fgrep --color=auto' + alias egrep='egrep --color=auto' +fi + +# colored GCC warnings and errors +#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' + +# some more ls aliases +alias ll='ls -alF' +alias la='ls -A' +alias l='ls -CF' + +# Add an "alert" alias for long running commands. Use like so: +# sleep 10; alert +alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"' + +# Alias definitions. +# You may want to put all your additions into a separate file like +# ~/.bash_aliases, instead of adding them here directly. +# See /usr/share/doc/bash-doc/examples in the bash-doc package. + +if [ -f ~/.bash_aliases ]; then + . ~/.bash_aliases +fi + +# enable programmable completion features (you don't need to enable +# this, if it's already enabled in /etc/bash.bashrc and /etc/profile +# sources /etc/bash.bashrc). +if ! shopt -oq posix; then + if [ -f /usr/share/bash-completion/bash_completion ]; then + . /usr/share/bash-completion/bash_completion + elif [ -f /etc/bash_completion ]; then + . /etc/bash_completion + fi +fi + +alias gluster='sudo gluster' diff --git a/gluster-ansible/destroy.yml b/gluster-ansible/destroy.yml new file mode 100644 index 0000000..8141e98 --- /dev/null +++ b/gluster-ansible/destroy.yml @@ -0,0 +1,42 @@ +--- + - hosts: playgrounds + become: true + become_user: root + + tasks: + - name: Copy hosts + template: + src: hosts + dest: /etc/hosts + - name: Copy sudoers + template: + src: sudoers + dest: /etc/sudoers + + + + # - name: stop gluster volume + # gluster.gluster.gluster_volume: + # state: absent + # name: gv0 + + + - name: remove gluster volume + gluster.gluster.gluster_volume: + state: absent + name: gv0 + bricks: /gl + force: yes + + - name: stop glusterd + ansible.builtin.systemd: + name: glusterd.service + state: stopped + enabled: no + + - name: remove glusterfs + apt: + name: glusterfs-server + state: absent + update_cache: yes + diff --git a/gluster-ansible/hosts b/gluster-ansible/hosts new file mode 100644 index 0000000..a07d547 --- /dev/null +++ b/gluster-ansible/hosts @@ -0,0 +1,16 @@ +127.0.0.1 localhost +127.0.1.1 shit +192.168.100.120 host +192.168.100.121 shit1 +192.168.100.122 shit2 +192.168.100.123 shit3 +192.168.100.124 shit4 + + +# The following lines are desirable for IPv6 capable hosts +::1 ip6-localhost ip6-loopback +fe00::0 ip6-localnet +ff00::0 ip6-mcastprefix +ff02::1 ip6-allnodes +ff02::2 ip6-allrouters + diff --git a/gluster-ansible/playme.yml b/gluster-ansible/playme.yml new file mode 100644 index 0000000..9ef1733 --- /dev/null +++ b/gluster-ansible/playme.yml @@ -0,0 +1,56 @@ +--- + - hosts: playgrounds + become: true + become_user: root + + tasks: + - name: Copy hosts + template: + src: hosts + dest: /etc/hosts + - name: Copy sudoers + template: + src: sudoers + dest: /etc/sudoers + - name: Copy bashrc + template: + src: bashrc + dest: /home/losted/.bashrc + + - name: Install glusterfs + apt: + name: glusterfs-server + state: present + update_cache: yes + - name: Start glusterd + ansible.builtin.systemd: + name: glusterd.service + state: started + enabled: yes + + - name: create gluster volume + gluster.gluster.gluster_volume: + state: present + name: gv0 + bricks: /gl + #replicas: 2 + force: yes + cluster: + - shit1 + - shit2 + - shit3 + - shit4 + options: + performance.cache-size: 256MB + #run_once: true + + # - name: Tune gluster + # gluster.gluster.gluster_volume: + # state: present + # name: gv0 + + + - name: Start gluster volume + gluster.gluster.gluster_volume: + state: started + name: gv0 diff --git a/gluster-ansible/sudoers b/gluster-ansible/sudoers new file mode 100644 index 0000000..8d1ad7d --- /dev/null +++ b/gluster-ansible/sudoers @@ -0,0 +1,31 @@ +# +# This file MUST be edited with the 'visudo' command as root. +# +# Please consider adding local content in /etc/sudoers.d/ instead of +# directly modifying this file. +# +# See the man page for details on how to write a sudoers file. +# +Defaults env_reset +Defaults mail_badpass +Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin" + +# Host alias specification + +# User alias specification + +# Cmnd alias specification + +# User privilege specification +root ALL=(ALL:ALL) ALL + +# Members of the admin group may gain root privileges +%admin ALL=(ALL) ALL + +# Allow members of group sudo to execute any command +#%sudo ALL=(ALL:ALL) ALL +%sudo ALL=(ALL) NOPASSWD: ALL + +# See sudoers(5) for more information on "#include" directives: + +#includedir /etc/sudoers.d