# https://wiki.freepbx.org/display/FOP/Installing+FreePBX+16+on+Debian+10.9 # https://computingforgeeks.com/how-to-install-asterisk-16-with-freepbx-15-on-ubuntu-debian/ - name: FreePBX - Install dependencies include: freepbx_dependencies.yml - name: FreePBX - Download {{ freepbx_url }}/{{ freepbx_src_file }} to {{ downloads_dir }} get_url: url: "{{ freepbx_url }}/{{ freepbx_src_file }}" dest: "{{ downloads_dir }}" # e.g. /opt/iiab/downloads/freepbx-16.0-latest.tgz timeout: "{{ download_timeout }}" when: internet_available - name: FreePBX - Check for {{ downloads_dir }}/{{ freepbx_src_file }} stat: path: "{{ downloads_dir }}/{{ freepbx_src_file }}" register: freepbx_src - name: FreePBX - FAIL (force Ansible to exit) IF {{ downloads_dir }}/{{ freepbx_src_file }} doesn't exist fail: msg: "{{ downloads_dir }}/{{ freepbx_src_file }} is REQUIRED to install FreePBX." when: not freepbx_src.stat.exists - name: FreePBX - Create source dir {{ freepbx_src_dir }} file: path: "{{ freepbx_src_dir }}" # /opt/iiab/freepbx state: directory - name: FreePBX - Extract to source dir (root:root) unarchive: src: "{{ downloads_dir }}/{{ freepbx_src_file }}" dest: "{{ freepbx_src_dir }}" owner: root group: root extra_opts: [--strip-components=1] creates: "{{ freepbx_src_dir }}/install" # 2021-08-04: FreePBX 16 no longer needs this FreePBX 15 patch # - name: FreePBX - Patch FreePBX source - IIAB Bug 1685 # patch: # src: roles/pbx/templates/71-freepbx-framework.patch # dest: "{{ freepbx_src_dir }}/amp_conf/htdocs/admin/libraries/BMO/Framework.class.php" # 2021-08-04: FreePBX 16 no longer needs this FreePBX 15 patch # - name: FreePBX - Patch FreePBX source - wants [] not {} # patch: # src: roles/pbx/templates/pbx.patch # dest: "{{ freepbx_src_dir }}/amp_conf/htdocs/admin/libraries/Composer/vendor/neitanod/forceutf8/src/ForceUTF8/Encoding.php" # 2021-08-04: systemd service 'asterisk' is Enabled but Not Active at this point -- LET'S EXPERIMENT # - name: FreePBX - Disable & Stop 'asterisk' systemd service # systemd: # daemon_reload: yes # name: asterisk # enabled: no # state: stopped - name: FreePBX - Add MySQL user ({{ asterisk_db_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 }}" # login_user: root # login_password: "{{ mysql_root_password }}" host: "{{ (asterisk_db_host == 'localhost') | ternary('localhost', ansible_default_ipv4.address) }}" state: present - name: FreePBX - Add MySQL db ({{ asterisk_db_dbname }}) mysql_db: name: "{{ asterisk_db_dbname }}" encoding: utf8 collation: utf8_general_ci # login_host: "{{ asterisk_db_host }}" # login_user: root # login_password: "{{ mysql_root_password }}" state: present - name: FreePBX - Add cdr MySQL db ({{ asterisk_db_cdrdbname }}) mysql_db: name: "{{ asterisk_db_cdrdbname }}" encoding: utf8 collation: utf8_general_ci login_host: "{{ asterisk_db_host }}" state: present - name: FreePBX - Create new php sessions dir /var/lib/php/asterisk_sessions/ file: path: /var/lib/php/asterisk_sessions/ state: directory - name: FreePBX - Set ownership for new php sessions dir (asterisk:asterisk) file: dest: /var/lib/php/asterisk_sessions/ owner: asterisk group: asterisk recurse: yes - name: "FreePBX - Populate /etc/asterisk/freepbx_chown.conf to prevent 'fwconsole chown' takeover of /var/lib/php/sessions - and possibly later /etc/freepbx.conf, /var/log/asterisk/freepbx.log, /var/spool/asterisk/cache" 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 # 2021-08-04: FreePBX 16 no longer needs this FreePBX 15 patch # - name: FreePBX - Patch FreePBX source - disable get_magic_quotes_gpc() # patch: # src: roles/pbx/templates/pbx2.patch # dest: "{{ freepbx_install_dir }}/admin/libraries/view.functions.php" - name: FreePBX - 2-step install (just run once) - CAN TAKE 12 MIN OR LONGER! command: "{{ item }}" args: chdir: "{{ freepbx_src_dir }}" creates: "{{ freepbx_install_dir }}" with_items: - ./start_asterisk start - ./install -n --webroot {{ freepbx_install_dir }} --dbuser {{ asterisk_db_user }} --dbpass {{ asterisk_db_password }} --dbname {{ asterisk_db_dbname }} --cdrdbname {{ asterisk_db_cdrdbname }} # - ./start_asterisk stop # Can this help Asterisk start reliably on initial install on Debian 11 / others? #2908 # - name: 'FreePBX - fix file permissions for NGINX: /etc/freepbx.conf (0644), /var/log/asterisk/freepbx.log (0666)' # file: # #state: file # path: "{{ item.path }}" # mode: "{{ item.mode }}" # with_items: # - { path: '/etc/freepbx.conf', mode: u=rw,g=r,o=r } # 2021-08-04: LATER ENDS UP AS 0660 # - { path: '/var/log/asterisk/freepbx.log', mode: u=rw,g=rw,o=rw } # 2021-08-04: LATER ENDS UP AS 0664 # - name: 'FreePBX - fix dir permissions for NGINX: /var/spool/asterisk/cache (0777)' # file: # state: directory # path: "{{ item }}" # mode: u=rwx,g=rwx,o=rwx # 2021-08-04: MOST CONTENT THEREIN ENDS UP AS asterisk:asterisk 664 (files) & 775 (dirs) # # recurse: yes # Probably Doesn't Help? # with_items: # # - /var/www/html/freepbx/admin/assets/less/cache # - /var/spool/asterisk/cache - name: FreePBX - Install /etc/odbc.ini from template (root:root, 0644 by default) template: src: odbc.ini dest: /etc/ - name: FreePBX - Install /etc/systemd/system/freepbx.service from template (root:root, 0644 by default) template: src: freepbx.service dest: /etc/systemd/system/ - name: FreePBX - Install /etc/apache2/sites-available/freepbx.conf from template ({{ apache_user }}:{{ apache_user }}, 0644 by default) template: src: freepbx.conf.j2 dest: /etc/apache2/sites-available/freepbx.conf owner: "{{ apache_user }}" # www-data group: "{{ apache_user }}" - name: FreePBX - Add directive "Listen {{ pbx_http_port }}" to /etc/apache2/ports.conf lineinfile: path: /etc/apache2/ports.conf line: "Listen {{ pbx_http_port }}" # insertafter: Listen 80