Skip to content

Preparar instalación

Daniel Palomar Rodríguez edited this page Jul 4, 2017 · 7 revisions

Preparar instalación

Clonar repositorios

Primero debemos clonar los repositorios necesarios para trabajar:

git clone https://github.com/coopdevs/ofn-install.git
git clone https://github.com/openfoodfoundation/openfoodnetwork.git

Se deben clonar en la misma carpeta.

dani@dani-Z97-HD3:~/dev/coopdevs$ ll
total 20
drwxrwxr-x  5 dani dani 4096 jun 19 16:12 ./
drwxrwxr-x 10 dani dani 4096 jun 19 16:12 ../
drwxrwxr-x 13 dani dani 4096 jun  9 10:02 ofn-install/
drwxrwxr-x  3 dani dani 4096 jun 19 16:00 ofn-install.wiki/
drwxrwxr-x 15 dani dani 4096 jun 15 17:33 openfoodnetwork/

Modificaciones en ficheros de configuración

Una vez tenemos los dos directorios correctamente clonados, realizaremos los cambios en los ficheros de configuración que necesita la aplicación para levantar esta instancia en concreto y de los que no tenemos definidos unos valores por defecto. Estas configuraciones no se suben al repositorio por motivos de seguridad. Por ello estos ficheros se añaden al fichero .gitignore, de esta forma el gestor de repositorios Git los ignorará a la hora de comparar con el repositorio remoto. Los ficheros a modificar perteneces al repositorio de instalación (ofn-install) y en concreto son los referentes a las variables de host. Para crear una nueva instancia de OFN, y para la instancia de desarrollo también, debemos generar una carpeta con el nombre del host dentro de ofn-install/inventory/host_vars con dentro dos ficheros, uno de configuración donde indicamos el dominio, el entorno de rails y el email del administrador, variables necesarias y que varían de una instancia a otra, llamado config.yml. Y otro fichero que contiene los passwords tanto del usuario de base de datos como del usuario administrador (db_user: ofn_user y user: ofn-admin). Estos ficheros tienen el siguiente formato:

  • ofn-admin/inventory/host_vars/local.ofn.org/config.yml:
domain: local.ofn.org
rails_env: development
admin_email: [email protected]
  • ofn-admin/inventory/host_vars/local.ofn.org/secrets.yml
# Make sure to insert secure passwords!!
db_password: f00d
admin_password: f00d
 
# Secret Token
# This is required to verify session. It must be at least 30 characters and
# random. This must be changed for a production server.
# Generate one with a bash command like: openssl rand -hex 128
secret_token: 'xxxxxx'

Debemos revisar que en el fichero de configuración inventory/dev encontramos la etiqueta lxc con el host que utilizamos:

  • inventory/dev
[vagrant]
local_vagrant ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222
 
[lxc]
local.ofn.org
 
[ofn_servers:children]
vagrant
lxc

Este fichero si se publica en el repositorio porque al estar cada host etiquetado, al ejecutar el comando que inicia el aprovisionamiento, se le puede limitar a los hosts bajo un tag o etiqueta. En este caso indicaremos que queremos los hosts bajo la etiqueta lxc.

SSH Key

Para que Ansible pueda añadir la ssh key a los nuevos usuarios generados es necesario añadir la clave pública al repositorio de instalación en el directorio files/keys/, lo podemos hacer manualmente o con el siguiente comando:

cp ~/.ssh/id_rsa.pub files/keys/dani.pub

y añadimos nuestro nombre (el que le hemos dado a la clave ssh) al conjunto de administradores del sistema declarado en el playbook development.yml

- users_sysadmin:
    - dani

Modificación de ficheros de configuración de automatización

(Si se pretende realizar la instalación a mano puede saltarse esta sección)

Una vez generados y modificados estos ficheros, solo falta por customizar los ficheros de configuración de los scripts aportados. Estos ficheros de configuración vienen con unos valores por defecto, los cuales son válidos y podemos crear nuestro entorno y aprovisionarlo sin realizar en ellos ningún cambio. Estos ficheros son los que encontramos en ofn-install/scripts/config/:

  • ofn-install/scripts/config/lxc.cfg:
# Vars to use in lxc-create
name=ofn-dev
template=/usr/share/lxc/templates/lxc-ubuntu
rls=trusty
# config="/tmp/ubuntu.conf"
host=local.ofn.org
nproject=openfoodnetwork
fproject="${PWD%/*}/$nproject"
app_user="openfoodnetwork"
Item Definition
name Nombre del contenedor creado
template Template que queremos instalar (ubuntu)
rls Release del template que queremos instalar
config Fichero de configuración de lxc. Si lo dejamos comentado se generará indicando el network bridge de la máquina.
host Nombre que le damos al host. Se añadirá al fichero /etc/hosts redireccionando a la IP del container.
nproject Nombre del directorio donde tenemos el código fuente del proyecto.
fproject Dirección absoluta del directorio del proyecto aplicación.
app_user Nombre del usuario con el que arrancaremos la aplicación. En nuestro caso el worker de unicorn.
  • ofn-install/scripts/config/ansible.cfg:
# Vars for Ansible
inv="inventory/dev"
playbook="playbooks/development.yml"
Item Definition
inv Inventory donde tenemos declarados los hosts a los que queremos realizar la instalación.
playbook Conjunto de tareas a realizar en los hosts por la herramienta Ansible.

Esto nos permite crear nuevos playbooks pudiendo reutilizar los scripts.

Tras modificar según nuestras necesidades, o no, los ficheros de configuración de los scripts, empezamos creando el entorno.