Skip to content

Latest commit

 

History

History
192 lines (163 loc) · 5.11 KB

03.md

File metadata and controls

192 lines (163 loc) · 5.11 KB

Segunda Role

A nossa segunda role irá instalar e configurar o Servidor Web (Apache2 + PHP) e todos os módulos necessários. No diretório do projeto, vamos criar a nossa role:

cd roles
ansible-galaxy init web-server

No diretório roles/web-server/tasks vamos criar o arquivo install-Ubuntu-focal.yml:

---
- name: Incluindo Váriaveis
  include_vars: "vars-{{ansible_distribution}}-{{ansible_distribution_release}}.yml"

- name: Instalando servidor web
  apt:
    name: "{{ packages }}"
    state: present

- name: Criando Vhost
  template: src=templates/vhost.conf.j2 dest="{{sites_available}}/{{item.id|string}}-{{item.record}}.{{item.zone}}.conf"
  with_items: "{{apps}}"

- name: Ativando Vhost
  file:
    src: "{{sites_available}}/{{item.id|string}}-{{item.record}}.{{item.zone}}.conf"
    dest: "{{sites_enabled}}/{{item.id|string}}-{{item.record}}.{{item.zone}}.conf"
    state: "link"
  with_items: "{{apps}}"
  notify: Reiniciar Apache2

E vamos incluir este arquivo no roles/web-server/tasks/main.yml

- include: "install-packages-{{ansible_distribution}}-{{ansible_distribution_release}}.yml"

No diretório roles/web-server/vars vamos criar o arquivo vars-Ubuntu-focal.yml:

apachedir: /etc/apache2
apachelogdir: /var/log/apache2
apachedocroot: /var/www

conf_available: "{{apachedir}}/conf-available"
conf_enabled: "{{apachedir}}/conf-enabled"
mods_available: "{{apachedir}}/mods-available"
mods_enabled: "{{apachedir}}/mods-enabled"
sites_available: "{{apachedir}}/sites-available"
sites_enabled: "{{apachedir}}/sites-enabled"

packages:
- apache2
- libapache2-mod-php
- php-common
- php7.4-cli
- php7.4-common
- php7.4-curl
- php7.4-fpm
- php7.4-gd
- php7.4-gmp
- php7.4-intl
- php7.4-json
- php7.4-mbstring
- php7.4-mysql
- php7.4-opcache
- php7.4-readline
- php7.4-soap
- php7.4-xml
- php7.4-xmlrpc
- php7.4-zip

No diretório roles/web-server/handlers vamos editar o arquivo main.yml:

- name: Reiniciar Apache2
  service:
    name: apache2
    state: restarted 

No diretório roles/web-server/templates vamos adicionar o arquivo vhost.conf.j2:

<VirtualHost *:80>
    ServerAdmin     {{ item.admin}}
    ServerName      {{ item.dominio }}
    ServerAlias     www.{{ item.dominio }}

    DocumentRoot /var/www/{{ item.dominio }}
    <Directory />
        Options FollowSymLinks
    </Directory>

    <Directory /var/www/{{ item.dominio }}>
        Options Indexes FollowSymLinks MultiViews
        Order allow,deny
        allow from all
        AllowOverride All
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    SetEnv  BD_HOST   {{ item.dbhost }}
    SetEnv  BD_USER   {{ item.dbuser }}
    SetEnv  BD_PASS   {{ item.dbpass }}
    SetEnv  BD_NAME   {{ item.dbname }}
    SetEnv AUTH_KEY  {{ item.wp_auth_key }}
    SetEnv SECURE_AUTH_KEY  {{ item.wp_secure_auth_key }}
    SetEnv LOGGED_IN_KEY  {{ item.wp_logged_in_key }}
    SetEnv NONCE_KEY  {{ item.wp_nonce_key }}
    SetEnv AUTH_SALT  {{ item.wp_auth_salt }}
    SetEnv SECURE_AUTH_SALT {{ item.wp_secure_auth_salt }}
    SetEnv LOGGED_IN_SALT  {{ item.wp_logged_in_salt }}
    SetEnv NONCE_SALT  {{ item.wp_nonce_salt }}

    LogLevel        warn
    ErrorLog        ${APACHE_LOG_DIR}/{{ item.dominio }}.error.log
    ErrorLog        ${APACHE_LOG_DIR}/error.log
    CustomLog       ${APACHE_LOG_DIR}/{{ item.dominio }}.access.log combined
    CustomLog       ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Ná raiz do projeto vamos criar um diretório de váriáveis globais:

mkdir group_vars
cd group_vars
touch all.yml

E vamos criar as variáveis de duas aplicações:

---
apps:
  - { id: '0001',
  admin: [email protected],
  dominio: diegoneves.tk,
  apphost: 187.84.229.244,
  dbhost: 187.84.229.245,
  dbname: diegotk,
  dbuser: sa_diegotk,
  dbpass: bIPf48nUplke34p,
  wp_auth_key: B1P9l8OID5K7b97O7F45oLaxr,
  wp_secure_auth_key: bIjidIM9k4cRQnXNV2bp261yo,
  wp_logged_in_key: 13w12155ejOmT2O33IBN95u4u,
  wp_nonce_key: 184jY2k760U8674588z0grs6Q,
  wp_auth_salt: ls4397gruzVXP729ao4mht0Ph,
  wp_secure_auth_salt: rU0qYZ0T9L4NNI6914Yn8K63e,
  wp_logged_in_salt: N69zsxunT5h8zd7dTxwB21zWO,
  wp_nonce_salt: 529YF370r8gF8NAJ646uwqN1M }

  - { id: '0002',
  admin: [email protected],
  dominio: diegoneves.ml,
  apphost: 187.84.229.244,
  dbhost: 187.84.229.245,
  dbname: diegoml,
  dbuser: sa_diegoml,
  dbpass: Y64X90eVR5g833I,
  wp_auth_key: 5k98yJ15W48999PTX2L44aT8H,
  wp_secure_auth_key: 2B57ZqPb5DHujSleR65NM4cdI,
  wp_logged_in_key: emybEzEiMus7yqMCvnSxWRPhi,
  wp_nonce_key: 03d7y8Pb292n62W043w9e2V5x,
  wp_auth_salt: 6odMo1zZ6GKc0HLfNL110RHGY,
  wp_secure_auth_salt: AP46pKBnm40Hu75CgRCHK5r6l,
  wp_logged_in_salt: L3l5fg6KU028Z5L7WUf26CX5R,
  wp_nonce_salt: 1949qYs9pzvthu9k77cHRTRzK }

E agora vamos adicionar a execussão dessa role no arquivo main.yml na raiz do projeto:

- hosts: web
  become: yes
  user: ubuntu
  roles:
  - { role: web-server, tags: ["web-server_role"]}