File redis.spec of Package redis

Name: redis
Version: 6.2.14
Release: 1.iflybak%{?dist}
Summary: A persistent key-value database

License: BSD
Group: Applications/Databases
URL: https://redis.io/

Source0: redis-6.2.14.tar.gz 

BuildRequires: gcc
BuildRequires: make
BuildRequires: tcl


%description
Redis is a key-value database in a similar vein to memcached, but with a rich set of datatype
s for storing more complex data types than a simple string value. Redis also provides dur
ability and atomicity guarantees by persisting changes to disk.

%prep
%setup -q -n redis-%{version}

%build
make %{?_smp_mflags}
#make test

%pre
# create user
getent group |grep redis 
result=$?
if [ "$result" -ne 0 ];then
   /usr/sbin/groupadd  redis
fi

id redis
result=$?
if [ "$result" -ne 0 ];then
  /usr/sbin/useradd -g redis -c "Redis user" -m -d ${redisHome:=/home/redis} redis
  # create redis server and redis sentinel directory
  mkdir ${redisHome}/redis-master/{logs,run} -p
  mkdir ${redisHome}/redis-sentinel/{logs,run} -p
  chown redis:redis -R ${redisHome}

fi



%install
make install PREFIX=%{buildroot}/usr/local/redis
mkdir -p %{buildroot}/etc/redis/
install -m 0645 redis.conf %{buildroot}/etc/redis/
install -m 0645 sentinel.conf %{buildroot}/etc/redis


%files
%defattr(-,redis,redis,-)
/usr/local/redis
/etc/redis
/etc/redis/redis.conf
/etc/redis/sentinel.conf

%post
if [ "$installMode" == "sentinel" ];then
  if [ "$hostRole" == "master" ];then
    # Edit redis public configuration variables
    sed -i "s/bind 127.0.0.1/bind ${Bind:=0.0.0.0}/g" /etc/redis/redis.conf
    sed -i "/# bind 127.0.0.1 192.168.1.1/a bind ${Bind}" /etc/redis/sentinel.conf
    sed -i "s/daemonize no/daemonize yes/g" /etc/redis/redis.conf
    sed -i "/# protected-mode no/a protected-mode yes" /etc/redis/sentinel.conf
    sed -i "s/daemonize no/daemonize yes/g"  /etc/redis/sentinel.conf

    # Edit redis server configuration variables 
    sed -i "s@pidfile /var/run/redis_6379.pid@pidfile /var/run/redis_${serverPort:=6379}.pid@g" /etc/redis/redis.conf
    sed -i "s/port 6379/port ${serverPort}/g" /etc/redis/redis.conf
    sed -i "s@logfile .*@logfile ${redisHome}/redis-master/logs/log${serverPort}.log@g" /etc/redis/redis.conf
    sed -i "s@dir ./@dir ${redisHome}/redis-master/run@g" /etc/redis/redis.conf
    sed -i "/# masterauth <master-password>/a masterauth ${password:=Iflybank@2024}" /etc/redis/redis.conf
    sed -i "/# requirepass foobared/a requirepass ${password}" /etc/redis/redis.conf
    
    # Edit redis sentinel configuration variables
    sed -i "s/port 26379/port ${sentinelPort:=26379}/g" /etc/redis/sentinel.conf
    sed -i "s@pidfile /var/run/redis-sentinel.pid@pidfile /var/run/redis_${sentinelPort}.pid@g" /etc/redis/sentinel.conf
    sed -i "s@logfile .*@logfile ${redisHome}/redis-sentinel/logs/log${sentinelPort}.log@g"  /etc/redis/sentinel.conf
    sed -i "s@dir /tmp@dir ${redisHome}/redis-sentinel/run@g"  /etc/redis/sentinel.conf
    sed -i "s/sentinel monitor mymaster 127.0.0.1 6379 2/sentinel monitor ${mastername:=redisMaster} ${masterip:=127.0.0.1} ${masterport:-6379} 2/g" /etc/redis/sentinel.conf
    sed -i "s/sentinel down-after-milliseconds mymaster 30000/sentinel down-after-milliseconds ${mastername} 30000/g" /etc/redis/sentinel.conf
    sed -i "s/sentinel parallel-syncs mymaster 1/sentinel parallel-syncs ${mastername} 1/g" /etc/redis/sentinel.conf
    sed -i "s/sentinel failover-timeout mymaster 180000/sentinel failover-timeout ${mastername} 180000/g" /etc/redis/sentinel.conf
    sed -i "/# sentinel auth-pass <master-name> <password>/a sentinel auth-pass ${mastername} ${password:-Iflybank@2024}" /etc/redis/sentinel.conf

  else
    # Edit redis public configuration variables
    sed -i "s/bind 127.0.0.1/bind ${Bind:=0.0.0.0}/g" /etc/redis/redis.conf
    sed -i "/# bind 127.0.0.1 192.168.1.1/a bind ${Bind}" /etc/redis/sentinel.conf
    sed -i "s/daemonize no/daemonize yes/g" /etc/redis/redis.conf
    sed -i "/# protected-mode no/a protected-mode yes" /etc/redis/sentinel.conf
    sed -i "s/daemonize no/daemonize yes/g"  /etc/redis/sentinel.conf

    # Edit redis server configuration variables 
    sed -i "s@pidfile /var/run/redis_6379.pid@pidfile /var/run/redis_${serverPort:=6379}.pid@g" /etc/redis/redis.conf
    sed -i "s/port 6379/port ${serverPort}/g" /etc/redis/redis.conf
    sed -i "s@logfile .*@logfile ${redisHome}/redis-master/logs/log${serverPort}.log@g" /etc/redis/redis.conf
    sed -i "s@dir ./@dir ${redisHome}/redis-master/run@g" /etc/redis/redis.conf
    sed -i "/# masterauth <master-password>/a masterauth ${password:=Iflybank@2024}" /etc/redis/redis.conf
    sed -i "/# replicaof <masterip> <masterport>/a replicaof ${masterip:-127.0.0.1} ${masterport:-6379}" /etc/redis/redis.conf
    sed -i "/# requirepass foobared/a requirepass ${password}" /etc/redis/redis.conf
    
    # Edit redis sentinel configuration variables
    sed -i "s/port 26379/port ${sentinelPort:=26379}/g" /etc/redis/sentinel.conf
    sed -i "s@pidfile /var/run/redis-sentinel.pid@pidfile /var/run/redis_${sentinelPort}.pid@g" /etc/redis/sentinel.conf
    sed -i "s@logfile .*@logfile ${redisHome}/redis-sentinel/logs/log${sentinelPort}.log@g"  /etc/redis/sentinel.conf
    sed -i "s@dir /tmp@dir ${redisHome}/redis-sentinel/run@g"  /etc/redis/sentinel.conf
    sed -i "s/sentinel monitor mymaster 127.0.0.1 6379 2/sentinel monitor ${mastername:=redisMaster} ${masterip:=127.0.0.1} ${masterport:-6379} 2/g" /etc/redis/sentinel.conf
    sed -i "s/sentinel down-after-milliseconds mymaster 30000/sentinel down-after-milliseconds ${mastername} 30000/g" /etc/redis/sentinel.conf
    sed -i "s/sentinel parallel-syncs mymaster 1/sentinel parallel-syncs ${mastername} 1/g" /etc/redis/sentinel.conf
    sed -i "s/sentinel failover-timeout mymaster 180000/sentinel failover-timeout ${mastername} 180000/g" /etc/redis/sentinel.conf
    sed -i "/# sentinel auth-pass <master-name> <password>/a sentinel auth-pass ${mastername} ${password:-Iflybank@2024}" /etc/redis/sentinel.conf
  fi
elif [ "$installMode" == "sentinel" ];then
  if [ "$hostRole" == "master" ];then 
    # Edit redis public configuration variables
    sed -i "s/bind 127.0.0.1/bind ${Bind:=0.0.0.0}/g" /etc/redis/redis.conf
    sed -i "s/daemonize no/daemonize yes/g" /etc/redis/redis.conf
    sed -i "s/daemonize no/daemonize yes/g"  /etc/redis/sentinel.conf

    # Edit redis server configuration variables 
    sed -i "s@pidfile /var/run/redis_6379.pid@pidfile /var/run/redis_${serverPort:=6379}.pid@g" /etc/redis/redis.conf
    sed -i "s/port 6379/port ${serverPort}/g" /etc/redis/redis.conf
    sed -i "s@logfile .*@logfile ${redisHome}/redis-master/logs/log${serverPort}.log@g" /etc/redis/redis.conf
    sed -i "s@dir ./@dir ${redisHome}/redis-master/run@g" /etc/redis/redis.conf
    sed -i "/# masterauth <master-password>/a masterauth ${password:=Iflybank@2024}" /etc/redis/redis.conf
    sed -i "/# requirepass foobared/a requirepass ${password}" /etc/redis/redis.conf
  else
    # Edit redis public configuration variables
    sed -i "s/bind 127.0.0.1/bind ${Bind:=0.0.0.0}/g" /etc/redis/redis.conf
    sed -i "/# bind 127.0.0.1 192.168.1.1/a bind ${Bind}" /etc/redis/sentinel.conf
    sed -i "s/daemonize no/daemonize yes/g" /etc/redis/redis.conf
    sed -i "/# protected-mode no/a protected-mode yes" /etc/redis/sentinel.conf
    sed -i "s/daemonize no/daemonize yes/g"  /etc/redis/sentinel.conf

    # Edit redis server configuration variables 
    sed -i "s@pidfile /var/run/redis_6379.pid@pidfile /var/run/redis_${serverPort:=6379}.pid@g" /etc/redis/redis.conf
    sed -i "s/port 6379/port ${serverPort}/g" /etc/redis/redis.conf
    sed -i "s@logfile .*@logfile ${redisHome}/redis-master/logs/log${serverPort}.log@g" /etc/redis/redis.conf
    sed -i "s@dir ./@dir ${redisHome}/redis-master/run@g" /etc/redis/redis.conf
    sed -i "/# masterauth <master-password>/a masterauth ${password:=Iflybank@2024}" /etc/redis/redis.conf
    sed -i "/# replicaof <masterip> <masterport>/a replicaof ${masterip:-127.0.0.1} ${masterport:-6379}" /etc/redis/redis.conf
    sed -i "/# requirepass foobared/a requirepass ${password}" /etc/redis/redis.conf
  fi

else
  # Edit redis public configuration variables
  sed -i "s/bind 127.0.0.1/bind ${Bind:=0.0.0.0}/g" /etc/redis/redis.conf
  sed -i "s/daemonize no/daemonize yes/g" /etc/redis/redis.conf
  sed -i "s/daemonize no/daemonize yes/g"  /etc/redis/sentinel.conf

  # Edit redis server configuration variables 
  sed -i "s@pidfile /var/run/redis_6379.pid@pidfile /var/run/redis_${serverPort:=6379}.pid@g" /etc/redis/redis.conf
  sed -i "s/port 6379/port ${serverPort}/g" /etc/redis/redis.conf
  sed -i "s@logfile .*@logfile ${redisHome}/redis-master/logs/log${serverPort}.log@g" /etc/redis/redis.conf
  sed -i "s@dir ./@dir ${redisHome}/redis-master/run@g" /etc/redis/redis.conf
  sed -i "/# masterauth <master-password>/a masterauth ${password:=Iflybank@2024}" /etc/redis/redis.conf
  sed -i "/# requirepass foobared/a requirepass ${password}" /etc/redis/redis.conf

fi
openSUSE Build Service is sponsored by