--- - name: Launch docker for mysql database. Tag=start_mysql hosts: 127.0.0.1 connection: local tags: start_mysql tasks: - name: Docker mysql up command: "docker-compose up -d mysql" - name: Configure mysql database. Tag=configure_mysql hosts: mysql connection: docker gather_facts: no tags: configure_mysql tasks: - name: Wait for mysql be ready wait_for: host: 127.0.0.1 port: 3306 state: started delay: 5 connect_timeout: 15 timeout: 360 - name: Create database fd_session mysql_db: name: fd_session login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}" state: present - name: Create database freeradius mysql_db: name: freeradius login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}" state: present - name: Create database grafana mysql_db: name: grafana login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}" state: present - name: Create database statsd_db mysql_db: name: statsd_db login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}" state: present - name: Create database base mysql_db: name: fd3_base login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}" state: present - name: Create database ftth mysql_db: name: fd3_ftth login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}" state: present - name: Create database stats mysql_db: name: fd3_stats login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}" state: present - name: Create database cablemodem mysql_db: name: fd3_cablemodem login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}" state: present - name: Create database Radius mysql_db: name: fd3_radius login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}" state: present - name: Create database dhcp mysql_db: name: fd3_dhcp login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}" state: present - name: Create database kea mysql_db: name: kea login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}" state: present - copy: src: "{{ playbook_dir }}/freeradius_schema.sql" dest: /tmp/freeradius_schema.sql - name: Create freeradius MySQL schema mysql_db: login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}" state: import name: freeradius target: "/tmp/freeradius_schema.sql" - name: Create user iksop mysql_user: name: 'iksop' password: "{{ lookup('env', 'MYSQL_PASSWORD') }}" login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}" priv: '*.*:ALL' state: present - copy: src: "{{ playbook_dir }}/mysql_scripts.sql" dest: /tmp/mysql_scripts.sql - name: Replace password mysql_scripts.sql shell: "sed -i -- 's/#password#/{{ lookup('env', 'MYSQL_PASSWORD') }}/g' /tmp/mysql_scripts.sql" - name: Run SQL commands against DB to create table mysql_db: login_password: "{{ lookup('env', 'MYSQL_PASSWORD') }}" state: import name: fd_session target: "/tmp/mysql_scripts.sql" - name: Launch docker for amqp. Tag=start_amqp hosts: 127.0.0.1 connection: local tags: start_base tasks: - name: Docker amqp up command: "docker-compose up -d amqp" - name: "Wait for amqp. Timeout: 1 minutes" pause: minutes: 1 - name: Launch docker for module base. Tag=start_base hosts: 127.0.0.1 connection: local tags: start_base tasks: - name: Docker base up command: "docker-compose up -d base" - name: Configure module base. Tag=configure_base hosts: base connection: docker tags: configure_base vars: uris: "" tasks: - name: Chmod cache file: path: /opt/base/var/cache/ recurse: yes mode: 777 - name: Clean cache file: state: absent path: "/opt/base/var/cache/" - name: Load redirections set_fact: uris: "{{ uris }} --redirect_uri=https://{{ item }}.{{ lookup('env', 'CLIENT') }}.{{ lookup('env', 'DOMAIN') }}/login_check" with_items: "{{ lookup('env', 'MODULES_INSTALL').split(',') }}" - name: Load redirections app_dev set_fact: uris: "{{ uris }} --redirect_uri=https://{{ item }}.{{ lookup('env', 'CLIENT') }}.{{ lookup('env', 'DOMAIN') }}/app_dev.php/login_check" with_items: "{{ lookup('env', 'MODULES_INSTALL').split(',') }}" - name: Create oauth client shell: "bin/console oauth:client:createRedirects {{ uris }} > oauth.data.log" args: executable: /bin/bash - name: Copy file oauth.data.log to host fetch: src: /opt/base/oauth.data.log dest: /tmp/ flat: yes - name: Configure oauth data for other container. Tag=configure_oauth hosts: 127.0.0.1 connection: local tags: configure_oauth tasks: - name: "Add outh client id" shell: "cp /tmp/oauth.data.log {{ item }}.oauth.env" args: executable: /bin/bash with_items: "{{ lookup('env', 'MODULES_INSTALL').split(',') }}" - name: "Launch docker's. Tag=launch_dockers" hosts: 127.0.0.1 connection: local tags: launch_dockers tasks: - name: "Dockers up" command: "docker-compose up -d {{ item }}" with_items: "{{ lookup('env', 'MODULES_INSTALL').split(',') }}" - name: "Wait to load containers. Timeout: 10 minutes. Tag=run_modules" hosts: "{{ lookup('env', 'MODULES_INSTALL') }}" connection: docker tags: run_modules tasks: - name: "Waiting" wait_for: path: "./vendor/composer/autoload_classmap.php" state: present sleep: 30 timeout: 600 - name: "Run doctrine:schema:update for modules. Tag=dsu_modules" hosts: "{{ lookup('env', 'MODULES_INSTALL') }}" connection: docker tags: dsu_modules tasks: - name: "Doctrine schema update" shell: "bin/console doctrine:schema:update --force" # Generate self-signed cert files for Nginx (intended for development, please replace with proper ones) - name: "Generate self-signed cert files for Nginx" hosts: 127.0.0.1 connection: local tags: self_cert tasks: - name: "Make sure certs dir exists" shell: "mkdir -p ./certs" - name: "Generate self-signed certs for Nginx" shell: "openssl req -x509 -nodes -batch -days 365 -newkey rsa:2048 -keyout ./certs/privkey.pem -out ./certs/fullchain.pem -subj '/C=AR/ST=Santa Fe/L=Rosario/O=Interlink/OU=R&D/CN=*.{{ lookup('env','CLIENT') }}.{{ lookup('env','DOMAIN') }}/emailAddress=idev@interlink.com.ar'" - name: "Copy certs dir to nginx/certs" hosts: 127.0.0.1 connection: local tags: copy_cert tasks: - name: "Create certs directory" shell: "mkdir -p ./nginx/certs" - name: "Copy certs directory" shell: "cp -nr ./certs/* ./nginx/certs" - name: "Kea files" hosts: 127.0.0.1 connection: local tags: kea_files tasks: - name: Check if get_kea_files.sh exists stat: path: get_kea_files.sh register: kea_files_result - name: Check if dir kea exists stat: path: kea register: kea_dir_result - name: Get kea image command: docker-compose pull kea when: kea_files_result.stat.exists == True and kea_dir_result.stat.exists == False - name: Run chmod +x command: chmod +x get_kea_files.sh when: kea_files_result.stat.exists == True and kea_dir_result.stat.exists == False - name: Execute get_kea_files.sh command: sh get_kea_files.sh when: kea_files_result.stat.exists == True and kea_dir_result.stat.exists == False - name: "Supervisord files" hosts: 127.0.0.1 connection: local tags: supervisord_files tasks: - name: Check if get_supervisord_files.sh exists stat: path: get_supervisord_files.sh register: supervisord_files_result - name: Check if supervisord exists stat: path: supervisord register: supervisord_dir_result - name: Get supervisord image command: docker-compose pull supervisord when: supervisord_files_result.stat.exists == True and supervisord_dir_result.stat.exists == False - name: Run chmod +x command: chmod +x get_supervisord_files.sh when: supervisord_files_result.stat.exists == True and supervisord_dir_result.stat.exists == False - name: Execute get_supervisord_files.sh command: sh get_supervisord_files.sh when: supervisord_files_result.stat.exists == True and supervisord_dir_result.stat.exists == False - name: "Run up all. Tag=up_all" hosts: 127.0.0.1 connection: local tags: up_all tasks: - name: Docker up all modules command: "docker-compose up -d " - name: Docker stop nginx command: "docker-compose stop nginx " - name: Docker up nginx command: "docker-compose up -d nginx"