Hola…
Continuamos con el despliegue de algunos servicio usando ansible.
Esta vez toca al servicio de Git usando una herramienta (muy parecida) de github/gitlab porque es mas liviana y se parece muchisimo a las anteriores, de hecho esta en un container de dockerhub por lo que aprovechamos ya esa situacion para un despliegue sin mucha demora.
Basicamente tendremos 1 host, que tendra instalado el docker engine para poder descargar la imagen de Gogs e iniciarla exponiendo los puertos de servicio en la red, creando un espacio disco persistente para evitar perdidas en los repositorios que se usaran en el caso de que actualicen la imagen a un nivel superior por actualizaciones sin tener que perder los datos.
Comenzando por agregar el host al inventario:
editamos el inventories/hosts agregando
[gogs]
ansideb4
creamos un playbook que usara 3 roles:
estos roles estaran en la raiz de la estructura ansible
En el playbook vemos las variables que seran pasada a cada rol para poder generar los contenedores que estaran linkeados dentro de Docker para poder servir entre la aplicacion de Gogs con la base datos y el servicio web hacia el exterior que es por donde lo usaremos.
---- name: Despliegue de Gogs usando Docker hosts: gogs vars: user_net_name: gogsnet gogs_container_name: gogs gogs_git_host_port: 8080 gogs_ssh_host_port: 2022 mariadb_container_name: "{{ gogs_container_name }}_mariadb" mariadb_container_hostname: "{{ gogs_container_name }}_mariadb" mariadb_secrets_file: vault/gogs_mysql_secrets.yml pre_tasks: - name: Instalar paquetes necesarios para python apt: name: - aptitude - python3-setuptools - python3-pip - python-backports.ssl-match-hostname - apt-transport-https - ca-certificates - curl - virtualenv - gnupg2 - software-properties-common state: present update_cache: yes force_apt_get: yes - name: Agregamos la llave publica GPG del repo apt_key: url: https://download.docker.com/linux/debian/gpg state: present - name: Agregamos el repo de Docker apt_repository: repo: deb https://download.docker.com/linux/debian buster stable state: present - name: Actualizamos el sistema e instalamos el paquete docker-ce apt: name: docker-ce state: latest - name: Instalacion de modulos de Python para manejar Docker con ansible pip: name: docker - name: Creamos una red virtual dentro de docker docker_network: name: "{{ user_net_name }}" state: present driver: bridge driver_options: com.docker.network.bridge.name: "{{ user_net_name }}_br" roles: - role: mariadb-container-simple mariadb_user_net: "{{ user_net_name }}" mariadb_data_vol_name: "{{ gogs_container_name }}_mariadb_data" mariadb_conf_vol_name: "{{ gogs_container_name }}_mariadb_conf" mariadb_env_vars: MYSQL_ROOT_PASSWORD="{{ mysql_root_pwd }}" - role: gogs-container gogs_image_name: gogs/gogs gogs_image_ver: 0.11.66 gogs_user_net: - name: "{{ user_net_name }}" gogs_publish: - "{{ gogs_git_host_port }}:{{ gogs_git_container_port }}" - "{{ gogs_ssh_host_port }}:{{ gogs_ssh_container_port }}" - role: backup-incontainer-mysqldb backup_dir: "/var/backup/{{ gogs_container_name }}/db" backup_db_name: "gogs" backup_filename_prefix: "{{ gogs_container_name }}" backup_mysql_container_name: "{{ mariadb_container_name }}" backup_mysql_user: root backup_mysql_pwd: "{{ mysql_root_pwd }}" backup_sched_minute: '00' backup_sched_hour: '20' backup_sched_day: '*' backup_sched_month: '*' backup_sched_weekday: '*' backup_retention_days: 10ansible-vault encrypt vault/gogs_mysql_secrets.ymlansible-playbook gogs-container.yml --vault-id @promptMe complace anunciar la creación de esta útil herramienta (SquidStats), para el análisis y monitoreo…
La inteligencia artificial está revolucionando las industrias al automatizar tareas, predecir patrones y permitiendo tomar…
Uno de los grandes retos al que nos podemos enfrentar cuando una aplicación crece, es…
Percona Monitoring and Management (PMM) es una herramienta de código abierto para la supervisión y…
Qué es lo que deseo hacer en este capítulo? Básicamente un sonoff, quiero encender/apagar las…
Hace algunos meses estoy escuchando hablar del proyecto Home Assistant (HA). En palabras literales del…