SyP-

wp deployer

Sep 27th, 2020 (edited)
2,010
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/bin/bash
  2.  
  3. WWW=/var/www
  4. DBUSER=wordpress
  5. DBPASSWORD=$(dd if=/dev/urandom count=1 2> /dev/null | uuencode -m - | sed -ne 2p | cut -c-12)
  6. ROOTPASSWORD=$(dd if=/dev/urandom count=1 2> /dev/null | uuencode -m - | sed -ne 2p | cut -c-12)
  7. TMPDATA=/tmp/tmpdata
  8.  
  9. echo ""
  10. echo "###################################"
  11. echo "## DOCKER WORDPRESS DEPLOYER 0.1b #"
  12. echo "###################################"
  13. echo "developed by syp"
  14. echo ""
  15.  
  16.  
  17. echo ""
  18. echo "El asistente lo guiará en el proceso de deploy de los contendores 'wordpress' y 'mariadb.'"
  19. echo ""
  20. echo "Verficando dependencias..."
  21. echo ""
  22.  
  23. if  which uuencode > /dev/null ;then
  24.     echo "sharultils: [√]"
  25. else
  26.     echo ""
  27.     echo "Hay paquetes faltantes, se instalarán los siguientes paquetes: sharutils"
  28.     echo ""
  29.     sleep 1
  30.     sudo yum install sharutils || sudo apt update   && sudo apt install sharutils
  31. fi
  32.  
  33. echo ""  
  34. echo "A continuación indique el nombre del sitio a configurar, por ejemplo 'mistio.net' (los espacios en blanco seran removidos)"
  35. echo ""
  36.  
  37. read -p "nombre del sitio: " SITE
  38. echo ""
  39.  
  40. # eliminamos espacios en blanco
  41.  
  42. SITE=$(echo "$SITE" | tr -d ' ')
  43.  
  44. echo "el nombre del sitio es '$SITE'"
  45. echo ""
  46.  
  47. while true; do
  48. read -p "esto es correcto? (Yy/Nn): " yn
  49.     case $yn in
  50.         [Yy]* ) clear
  51.         break;;
  52.         [Nn]* )
  53.         echo ""
  54.         read -p "nombre del sitio: " SITE
  55.         echo ""
  56.         SITE=$(echo "$SITE" | tr -d ' ')
  57.         echo "el nombre del sitio es '$SITE'"
  58.         echo ""
  59.         ;;
  60.         * ) echo "responder Yy/Nn";;
  61.     esac
  62. done
  63.  
  64.  
  65. # CONFIGURACION CONTENEDOR MARIADB
  66. echo ""
  67. echo "1. Configuración del contenedor de bases de datos."
  68. echo ""
  69. echo "Nombre de contenedor: ${SITE}_db"
  70. echo ""
  71.  
  72. ## 1. USUARIO BASES DE DATOS
  73. echo "1.1 El usuario con privilegios para la base de datos de wordpress es '$DBUSER'."
  74. echo ""
  75. while true; do
  76. read -p "Desea modificarlo? (Yy/Nn): " yn
  77. echo ""
  78.     case $yn in
  79.         [Nn]* ) break;;
  80.         [Yy]* ) read -p "Nombre de usuario: " DBUSER
  81.                 echo ""
  82.         break;;
  83.         * ) echo "responder Yy/Nn";;
  84.     esac
  85. done
  86.  
  87.  
  88. ## CONTRASEÑA USUARIO BASE DE DATOS
  89. echo ""
  90. echo "1.2 Se ha generado la contraseña '$DBPASSWORD' para el usuario '$DBUSER'."
  91. echo ""
  92. while true; do
  93. read -p "Desea modificarla? (Yy/Nn): " yn
  94. echo ""
  95.     case $yn in
  96.         [Nn]* ) break;;
  97.         [Yy]* ) read -p "Nueva contraseña: " DBPASSWORD
  98.                 echo ""
  99.         break;;
  100.         * ) echo "responder Yy/Nn";;
  101.     esac
  102. done
  103.  
  104. ## CONTRASEÑA DE USUARIO ROOT
  105. echo ""
  106. echo "1.3 Se ha generado la contraseña '$ROOTPASSWORD' para el usuario 'root'."
  107. echo ""
  108. while true; do
  109. read -p "Desea modificarla? (Yy/Nn): " yn
  110. echo ""
  111.     case $yn in
  112.         [Nn]* ) break;;
  113.         [Yy]* ) read -p "Nueva contraseña: " DBPASSWORD
  114.                 echo ""
  115.         break;;
  116.         * ) echo "responder Yy/Nn";;
  117.     esac
  118. done
  119. clear
  120.  
  121. # CONFGIRUACION DE WORDPRESS
  122. echo ""
  123. echo "2. Configuración del contenedor Wordrpress."
  124. echo ""
  125. echo "Nombre del contenedor: $SITE"
  126. echo ""
  127.  
  128. echo "2.1 Selecione una red para el trafico del contenedor."
  129. sudo docker network ls | tail -n +2 > $TMPDATA
  130. echo ""
  131. echo "Network:"
  132. echo ""
  133. i=1
  134. while IFS= read -r line
  135. do
  136.       OPTIONS[$i]=`echo $line | cut -d " " -f 2`
  137.       echo "[$i] ${OPTIONS[$i]}"
  138.       ((i++))
  139. done < "$TMPDATA"
  140. while true; do
  141. echo ""
  142. read -p "Opcion: " OPTSELECT
  143. case $OPTSELECT in
  144.   [1-9]*) NETWORKS="${OPTIONS[$OPTSELECT]}"
  145.       break;;
  146.  
  147.   *) echo "Número invalido. ";;
  148. esac
  149. done
  150. echo ""
  151. echo "Se ha seleccionado la red '$NETWORKS'"
  152. echo ""
  153. rm $TMPDATA
  154. clear
  155.  
  156. # CONFIGURACION DEL DEPLOY
  157. echo ""
  158. echo "3. Configuración del deploy."
  159. echo ""
  160.  
  161. echo "3.1 Politica de reinicio:"
  162. echo ""
  163. echo "1 = no"
  164. echo "2 = on-failure"
  165. echo "3 = always"
  166. echo "4 = unless-stopped"
  167. echo ""
  168.  
  169. while true; do
  170. read -p "Opción: " POLICY
  171.     case $POLICY in
  172.         [1] )   RESTARTPOLICY=no
  173.         break;;
  174.         [2] )   RESTARTPOLICY=on-failure
  175.         break;;
  176.     [3] )   RESTARTPOLICY=always
  177.         break;;
  178.     [4] )   RESTARTPOLICY=unless-stopped
  179.         break;;
  180.         * )     echo "Elejir una opcion correcta";;
  181.     esac
  182. done
  183. clear
  184.  
  185. # FINAL
  186. echo ""
  187. echo "Se creará el fichero 'docker-compose.yaml' con la siguiente información: "
  188. echo ""
  189. echo "Contenedor mariadb"
  190. echo "Nombre del contenedor: ${SITE}_db"
  191. echo "Base de datos: wp_$SITE"
  192. echo "Usuario: $DBUSER"
  193. echo ""
  194. echo "Contenedor Wordpress"
  195. echo "Nombre del contenedor: $SITE"
  196. echo "Depende de: ${SITE}_db"
  197. echo ""
  198. echo "Deployment"
  199. echo "Politica de reinicio: $RESTARTPOLICY"
  200. echo ""
  201. read -n 1 -s -r -p "Presione una tecla para continuar "
  202.  
  203.  
  204. dd of=docker-compose.yaml << DEP
  205. version: "3"
  206. services:
  207.    ${SITE}_db:
  208.      image: mariadb:latest
  209.      volumes:
  210.        - /var/www/$SITE/databases:/var/lib/mysql
  211.      restart: $RESTARTPOLICY
  212.      environment:
  213.        MYSQL_ROOT_PASSWORD: $ROOTPASSWORD
  214.        MYSQL_DATABASE: wordpress
  215.        MYSQL_USER: $DBUSER
  216.        MYSQL_PASSWORD: $DBPASSWORD
  217.      container_name: ${SITE}_db
  218.  
  219.    $SITE:
  220.      depends_on:
  221.        - ${SITE}_db
  222.      image: wordpress:latest
  223.      ports:
  224.        - "8080:80"
  225.      volumes:
  226.        - /var/www/$SITE/wordpress:/var/lib/mysql
  227.      expose:
  228.        - 80
  229.        - 443
  230.      restart: $RESTARTPOLICY
  231.      environment:
  232.        VIRTUAL_HOST: $SITE
  233.        WORDPRESS_DB_HOST: :3306
  234.        WORDPRESS_DB_USER: $DBUSER
  235.        WORDPRESS_DB_PASSWORD: $DBPASSWORD
  236.      container_name: $SITE
  237.  
  238. networks:
  239.   default:
  240.     external:
  241.       name: $NETWORKS
  242. DEP
  243.  
  244. echo ""
  245. echo "Ejecute 'sudo docker-compose up -d' para crear los contenedores."
  246. echo ""
  247.  
RAW Paste Data