
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:
- 1 Para descargar la imagen de docker de gogs con sus opciones por ejemplo la version etc.
 - 2 Un container para MySQ porque Gogs en este caso lo instalaremos usando MySQL
 - 3 Un rol que usara unos comandos para hacerle backup al database MySQL de Gogs segun la configuracion en las variables definidas por el playbook.
 
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.yml
ansible-playbook gogs-container.yml --vault-id @prompt
 
Dejar una contestacion