Advertisement
pashutik

migration_playbook.yml

Jul 11th, 2018
258
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
YAML 5.00 KB | None | 0 0
  1. ---
  2. # создание дампа баз данных и перенос их на новый сервер
  3. # после переноса баз данных, переносим контент проектов
  4.  
  5. - hosts: old_server
  6.   tasks:
  7.   - name: create dump database
  8.     mysql_db: name={{ item }} login_user=root login_password=sercret_password state=dump target=/home/{{ item }}.sql
  9.     with_items:
  10.      - test1
  11.       - test2
  12.       - test3
  13.  
  14.   - name: copy database to new server
  15.     raw: rsync -azvh /home/{{ item }}.sql root@192.168.55.63:/home/{{ item }}.sql;
  16.     with_items:
  17.      - test1
  18.       - test2
  19.       - test3
  20.  
  21.   - name: copy content to new server
  22.     raw: rsync -azvh /var/www/{{ item }} root@192.168.55.63:/var/www/{{ item }};
  23.     with_items:
  24.      - test1.com
  25.       - test2.com
  26.       - test3.com
  27.  
  28. - hosts: new_server
  29.   vars:
  30.     packages:
  31.      - apache2
  32.       - php7.0
  33.       - php7.0-bcmath
  34.       - php7.0-cli
  35.       - php7.0-common
  36.       - php7.0-dev
  37.       - php7.0-gd
  38.       - php7.0-intl
  39.       - php7.0-mbstring
  40.       - php7.0-mcrypt
  41.       - php7.0-mysql
  42.       - php7.0-opcache
  43.       - php7.0-json
  44.       - php7.0-soap
  45.       - fail2ban
  46.       - clamav
  47.  
  48.   tasks:
  49. #блок отвечающий за обновление системы и установку пакетов
  50.  
  51.   - name: update
  52.     apt: update_cache=yes upgrade=yes
  53.  
  54.   - name: install packages
  55.     apt: pkg={{ packages }} state=installed update_cache=yes
  56.  
  57.   - name: add repo for certbot
  58.     apt_repository:
  59.       repo: ppa:certbot/certbot
  60.  
  61.   - name: update
  62.     apt: update_cache=yes upgrade=yes
  63.  
  64. # нужно заменить в случае apache2 как основного web-сервера
  65.  
  66.   - name: install certbot
  67.     apt: pkg=python-certbot-nginx state=installed update_cache=yes
  68.  
  69. # apache2 и nginx конфликтуют если находяться на одном порту (80), для этого вначале ставим apache2
  70. # далее правим его конфиг портов и рестартуем
  71. # после этого спокнойно ставим nginx и не ловим ошибок установки
  72.  
  73.   - name: modify ports.conf of apache2
  74.     shell:
  75.      sed -i 's/^Listen 80$/Listen 8080/g' ports.conf;
  76.       sed -i 's/Listen 443$/Listen 8443/g' ports.conf
  77.  
  78.   - name: reload apache2 for normal work with nginx
  79.     service: name=apache2 enabled=yes state=restarted
  80.  
  81.   - name: install nginx
  82.     apt: pkg=nginx state=installed update_cache=yes
  83.  
  84. # копирование эталонных конфигов на удаленный сервер
  85. # и последующая переделка их индивидуально под каждый проект
  86.  
  87.   - name: copy config file
  88.     copy: src=/home/pavel/Desktop/etalon_nginx dest=/etc/nginx/sites-available/etalon_nginx
  89.  
  90.   - name: copy config file
  91.     copy: src=/home/pavel/Desktop/etalon_apache2 dest=/etc/apache2/sites-available/etalon_apache2.conf
  92.  
  93.   - name: configure nginx
  94.     shell:
  95.      cd /etc/nginx/sites-available/;
  96.       cat etalon_nginx | sed 's/server_name/server_name {{ item }} www.{{ item }};/g' > {{ item }}.conf;
  97.       sed -i '/root/ s/$/{{ item }};/g' {{ item }}.conf
  98.     with_items:
  99.      - test1.com
  100.       - test2.com
  101.       - test3.com
  102.  
  103.   - name: configure apache2
  104.     shell:
  105.      cd /etc/apache2/sites-available/;
  106.       cat etalon_apache2.conf | sed 's/ServerName/ServerName {{ item }}/g' > {{ item }}.conf;
  107.       sed -i '/DocumentRoot/ s/$/{{ item }}/g' {{ item }}.conf;
  108.       sed -i '/ServerAlias/ s/$/{{ item }}/g' {{ item }}.conf;
  109.       sed -i 's/<Directory "\/var\/www\/">/<Directory "\/var\/www\/{{ item }}">/g' {{ item }}.conf
  110.     with_items:
  111.      - test1.com
  112.       - test2.com
  113.       - test3.com
  114.  
  115. # создаем базы и пользователей и заливаем перенесенные дампы баз данных
  116.  
  117.   - name: create database
  118.     mysql_db: name={{ item }} state=present login_user=root login_password=123456
  119.     with_items:
  120.      - test1
  121.       - test2
  122.       - test3
  123.  
  124.   - name: create database user
  125.     mysql_user: name={{ item }} password=123456 priv='{{ item }}.*:ALL' login_user=root login_password=123456
  126.     with_items:
  127.      - test1
  128.       - test2
  129.       - test3
  130.  
  131.   - name: import database dump
  132.     mysql_db: name={{ item }} state=import target=/home/{{ item }}.sql login_user=root login_password=123456
  133.     with_items:
  134.      - test1
  135.       - test2
  136.       - test3
  137.  
  138. # создание символьных ссылок и перезапуск apache2 и nginx
  139.  
  140.   - name: symbolic links
  141.     shell:
  142.      ln -s /etc/nginx/sites-available/{{ item }}.conf /etc/nginx//sites-enabled/{{ item }}.conf;
  143.       ln -s /etc/apache2/sites-available/{{ item }}.conf /etc/apache2/sites-enabled/{{ item }}.conf;
  144.     with_items:
  145.      - test1.com
  146.       - test2.com
  147.       - test3.com
  148.  
  149.   - name: reload nginx
  150.     service: name=nginx enabled=yes state=restarted
  151.  
  152.   - name: reload apache2
  153.     service: name=apache2 enabled=yes state=restarted
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement