- name: FreePBX - Install dependencies include: freepbx_dependencies.yml - name: FreePBX - Download software to /opt/iiab/downloads get_url: url: "{{ freepbx_url }}/{{ freepbx_src_file }}" dest: "{{ downloads_dir }}/{{ freepbx_src_file }}" timeout: "{{ download_timeout }}" when: internet_available - name: FreePBX - Check for /opt/iiab/downloads/{{ freepbx_src_file }} stat: path: "{{ downloads_dir }}/{{ freepbx_src_file }}" register: freepbx_src - name: FreePBX - FAIL (force Ansible to exit) IF /opt/iiab/downloads/{{ freepbx_src_file }} doesn't exist fail: msg: "{ downloads_dir }}/{{ freepbx_src_file }} is REQUIRED in order to install." when: not freepbx_src.stat.exists - name: FreePBX - Create install source directory file: path: "{{ freepbx_src_dir }}" state: directory - name: FreePBX - Extract source unarchive: src: "{{ downloads_dir }}/{{ freepbx_src_file }}" dest: "{{ freepbx_src_dir }}" owner: root group: root extra_opts: [--strip-components=1] - name: FreePBX - Add mysql user mysql_user: name: "{{ asterisk_db_user }}" password: "{{ asterisk_db_password }}" priv: "{{ asterisk_db_dbname }}.*:ALL/{{ asterisk_db_cdrdbname }}.*:ALL" login_host: "{{ asterisk_db_host }}" host: "{{ (asterisk_db_host == 'localhost') | ternary('localhost', ansible_default_ipv4.address) }}" state: present - name: FreePBX - Add mysql db mysql_db: name: "{{ asterisk_db_dbname }}" encoding: utf8 collation: utf8_general_ci login_host: "{{ asterisk_db_host }}" state: present - name: FreePBX - Add cdr mysql db mysql_db: name: "{{ asterisk_db_cdrdbname }}" encoding: utf8 collation: utf8_general_ci login_host: "{{ asterisk_db_host }}" state: present - name: FreePBX - Disable & Stop asterisk service systemd: daemon_reload: yes name: asterisk enabled: no state: stopped ## using named groups due to this: http://www.handverdrahtet.org/2016/01/ansible-using-numbered-backreference.html #- name: Enable freepbx installation with remote mysql db # replace: # dest: '{{ freepbx_src_dir }}/installlib/installcommand.class.php' # regexp: '(?P\$amp_conf\[.AMPDBHOST.\] = .)localhost(.;)' # replace: '\g{{ asterisk_db_host }}\2' - name: Don't let freepbx take over the php sessions dir blockinfile: content: | [blacklist] directory = /var/lib/php/sessions marker: "; {mark} ANSIBLE MANAGED BLOCK" dest: /etc/asterisk/freepbx_chown.conf owner: asterisk group: asterisk create: yes - name: Install freepbx (just ran once) command: "{{ item }}" args: chdir: "{{ freepbx_src_dir }}" creates: /var/www/freepbx with_items: - ./start_asterisk start - ./install -n --webroot /var/www/freepbx --dbuser {{ asterisk_db_user }} --dbpass {{ asterisk_db_password }} --dbname {{ asterisk_db_dbname }} --cdrdbname {{ asterisk_db_cdrdbname }} register: freepbx_installation - name: Install unit file /etc/systemd/system/freepbx.service from templates template: src: "freepbx.service.j2" dest: "/etc/systemd/system/freepbx.service" owner: root group: root mode: 0644 # http://community.freepbx.org/t/fixing-cdr-cel-on-ubuntu-debian-installation/30836 # Test using `isql -v MySQL-asteriskcdrdb` - name: Fix asterisk cdr odbc connection (1) blockinfile: dest: /etc/odbcinst.ini create: yes marker: "; {mark} ANSIBLE MANAGED BLOCK" content: | [MySQL] Description = ODBC for MySQL Driver = {{ libodbc_path }} FileUsage = 1 - name: Fix asterisk cdr odbc connection (2) replace: dest: /etc/odbc.ini regexp: /var/lib/mysql/mysql.sock replace: /var/run/mysqld/mysqld.sock - name: Install freepbx modules command: "fwconsole ma downloadinstall {{ item }}" args: creates: /var/www/freepbx/admin/modules/{{ item }} with_items: - userman - asteriskinfo - backup - outroutemsg - name: FreePBX - Enable and start FreePBX service systemd: daemon_reload: yes name: freepbx enabled: yes state: started when: pbx_enabled - name: FreePBX - Disable and Stop FreePBX service systemd: daemon_reload: yes name: freepbx enabled: no state: stopped when: pbx_enabled