From 92824c62604200562d1d356943eb89201184f1b6 Mon Sep 17 00:00:00 2001 From: A Holt Date: Wed, 4 Aug 2021 14:52:15 -0400 Subject: [PATCH 01/22] freepbx.service.j2: Comment out RestartSec=3 --- roles/pbx/templates/freepbx.service.j2 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/roles/pbx/templates/freepbx.service.j2 b/roles/pbx/templates/freepbx.service.j2 index 8ac644dc4..62f198e51 100644 --- a/roles/pbx/templates/freepbx.service.j2 +++ b/roles/pbx/templates/freepbx.service.j2 @@ -7,9 +7,9 @@ Type=oneshot RemainAfterExit=yes ExecStart=/usr/sbin/fwconsole start ExecStop=/usr/sbin/fwconsole stop -# 2021-08-04: Does this help Asterisk (re)start reliably, as FreePBX install completes? -# PR #2908: https://github.com/iiab/iiab/blob/master/roles/pbx/tasks/enable-or-disable.yml -RestartSec=3 +# 2021-08-04: Asterisk doesn't (re)start reliably, as FreePBX install completes: +# https://github.com/iiab/iiab/blob/master/roles/pbx/tasks/enable-or-disable.yml +# RestartSec=3 [Install] WantedBy=multi-user.target From a1df5a873b7901dda7b0eeb88bbd544189d6c783 Mon Sep 17 00:00:00 2001 From: A Holt Date: Wed, 4 Aug 2021 14:54:29 -0400 Subject: [PATCH 02/22] pbx/tasks/enable-or-disable.yml: Revise blurb --- roles/pbx/tasks/enable-or-disable.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/roles/pbx/tasks/enable-or-disable.yml b/roles/pbx/tasks/enable-or-disable.yml index e60921b59..d41f457d3 100644 --- a/roles/pbx/tasks/enable-or-disable.yml +++ b/roles/pbx/tasks/enable-or-disable.yml @@ -7,7 +7,8 @@ # Yes /etc/systemd/system/freepbx.service is supposed to run 'fwconsole stop' # then 'fwconsole start' reliably, as many web posts recommend, But No Dice! # -# Do we need something like 'RestartSec=3' in freepbx.service ?? +# Adding 'RestartSec=3' to freepbx.service is not the answer. Discussion here: +# https://github.com/iiab/iiab/pull/2908 # #- name: Enable & (Re)start 'asterisk' systemd service (if pbx_enabled) # systemd: From a7a296f5fe8611896840bfda0bc5f09eca648a51 Mon Sep 17 00:00:00 2001 From: A Holt Date: Wed, 4 Aug 2021 16:54:38 -0400 Subject: [PATCH 03/22] pbx/tasks/freepbx.yml: take over -> takeover in comment --- roles/pbx/tasks/freepbx.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/pbx/tasks/freepbx.yml b/roles/pbx/tasks/freepbx.yml index 586df3be6..5ef354153 100644 --- a/roles/pbx/tasks/freepbx.yml +++ b/roles/pbx/tasks/freepbx.yml @@ -81,7 +81,7 @@ login_host: "{{ asterisk_db_host }}" state: present -- name: FreePBX - Prevent /etc/asterisk/freepbx_chown.conf take over of /var/lib/php/sessions +- name: FreePBX - Prevent /etc/asterisk/freepbx_chown.conf takeover of /var/lib/php/sessions blockinfile: content: | [blacklist] From 85105bad7cbfffdc3de96c5d4faa569f46ae1e45 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 4 Aug 2021 23:14:24 -0400 Subject: [PATCH 04/22] Branch pbx2 experimentation / preparation --- roles/pbx/tasks/asterisk.yml | 7 +- roles/pbx/tasks/enable-or-disable.yml | 55 +++++------- roles/pbx/tasks/freepbx.yml | 86 ++++++++++++------- roles/pbx/tasks/install.yml | 23 ----- roles/pbx/templates/freepbx.service | 15 ++++ roles/pbx/templates/freepbx.service.j2 | 5 +- roles/pbx/templates/{odbc.ini.j2 => odbc.ini} | 0 7 files changed, 98 insertions(+), 93 deletions(-) create mode 100644 roles/pbx/templates/freepbx.service rename roles/pbx/templates/{odbc.ini.j2 => odbc.ini} (100%) diff --git a/roles/pbx/tasks/asterisk.yml b/roles/pbx/tasks/asterisk.yml index 1ecc5feae..904cd0d18 100644 --- a/roles/pbx/tasks/asterisk.yml +++ b/roles/pbx/tasks/asterisk.yml @@ -48,8 +48,7 @@ args: chdir: "{{ asterisk_src_dir }}" -# 2021-08-03: Requires subversion (installed just above) -- name: Asterisk - Download mp3 decoder library into source tree +- name: Asterisk - Download mp3 decoder library into source tree - requires 'subversion' installed just above command: ./contrib/scripts/get_mp3_source.sh args: chdir: "{{ asterisk_src_dir }}" @@ -108,7 +107,7 @@ name: asterisk state: present -- name: "Asterisk - Ensure user 'asterisk' exists, and belongs to groups: audio,dialout" +- name: Asterisk - Ensure system user 'asterisk' has primary group 'asterisk', groups 'audio,dialout', home '/var/lib/asterisk' user: name: asterisk group: asterisk @@ -117,7 +116,7 @@ system: yes append: yes -- name: "Asterisk - Set ownership (asterisk:asterisk) for 5 directories: /etc/asterisk, /var/lib/asterisk, /var/log/asterisk, /var/spool/asterisk, /usr/lib/asterisk" +- name: Asterisk - Set ownership for 5 directories (asterisk:asterisk, recurse) file: dest: "{{ item }}" owner: asterisk diff --git a/roles/pbx/tasks/enable-or-disable.yml b/roles/pbx/tasks/enable-or-disable.yml index d41f457d3..a83a0befb 100644 --- a/roles/pbx/tasks/enable-or-disable.yml +++ b/roles/pbx/tasks/enable-or-disable.yml @@ -1,41 +1,14 @@ -# 2021-08-04: Stanza below commonly causes systemd error "Asterisk is already -# running. /etc/init.d/asterisk will exit now" (initial installs especially?) -# -# But without this stanza, 'systemctl restart freepbx' all alone during initial -# install ALSO fails to start Asterisk reliably, on Ubuntu 20.04 & Debian 11 :/ -# -# Yes /etc/systemd/system/freepbx.service is supposed to run 'fwconsole stop' -# then 'fwconsole start' reliably, as many web posts recommend, But No Dice! -# -# Adding 'RestartSec=3' to freepbx.service is not the answer. Discussion here: -# https://github.com/iiab/iiab/pull/2908 -# -#- name: Enable & (Re)start 'asterisk' systemd service (if pbx_enabled) -# systemd: -# daemon_reload: yes -# name: asterisk -# enabled: yes -# state: restarted -# when: pbx_enabled - -#- name: Disable & Stop 'asterisk' systemd service (if not pbx_enabled) -# systemd: -# daemon_reload: yes -# name: asterisk -# enabled: no -# state: stopped -# when: not pbx_enabled - - -- name: Enable & (Re)start 'freepbx' systemd service (if pbx_enabled) +- name: Enable & (Re)start 'freepbx' systemd service, if pbx_enabled systemd: + daemon_reload: yes name: freepbx enabled: yes state: restarted when: pbx_enabled -- name: Disable & Stop 'freepbx' systemd service (if not pbx_enabled) +- name: Disable & Stop 'freepbx' systemd service, if not pbx_enabled systemd: + daemon_reload: yes name: freepbx enabled: no state: stopped @@ -52,5 +25,23 @@ - name: Restart Apache service ({{ apache_service }}) systemd: - name: "{{ apache_service }}" # httpd or apache2 + name: "{{ apache_service }}" # apache2 state: restarted + + +# - name: Enable http://box/freepbx via NGINX, by installing {{ nginx_conf_dir }}/freepbx-nginx.conf from template +# template: +# src: freepbx-nginx.conf.j2 +# dest: "{{ nginx_conf_dir }}/freepbx-nginx.conf" # /etc/nginx/conf.d +# when: pbx_enabled + +# - name: Disable http://box/freepbx via NGINX, by removing {{ nginx_conf_dir }}/freepbx-nginx.conf +# file: +# path: "{{ nginx_conf_dir }}/freepbx-nginx.conf" +# state: absent +# when: not pbx_enabled + +# - name: Restart 'nginx' systemd service +# systemd: +# name: nginx +# state: restarted diff --git a/roles/pbx/tasks/freepbx.yml b/roles/pbx/tasks/freepbx.yml index 5ef354153..e0c643537 100644 --- a/roles/pbx/tasks/freepbx.yml +++ b/roles/pbx/tasks/freepbx.yml @@ -1,3 +1,6 @@ +# 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 @@ -45,12 +48,13 @@ # dest: "{{ freepbx_src_dir }}/amp_conf/htdocs/admin/libraries/Composer/vendor/neitanod/forceutf8/src/ForceUTF8/Encoding.php" -- name: FreePBX - Disable & Stop 'asterisk' systemd service - systemd: - daemon_reload: yes - name: asterisk - enabled: no - state: stopped +# 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: @@ -81,17 +85,6 @@ login_host: "{{ asterisk_db_host }}" state: present -- name: FreePBX - Prevent /etc/asterisk/freepbx_chown.conf takeover of /var/lib/php/sessions - 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: FreePBX - Create new php sessions dir /var/lib/php/asterisk_sessions/ file: path: /var/lib/php/asterisk_sessions/ @@ -104,15 +97,16 @@ group: asterisk recurse: yes - -- name: FreePBX - 2-stage 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 }} +- 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() @@ -120,15 +114,45 @@ # 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.j2 - dest: /etc/odbc.ini + src: odbc.ini + dest: /etc/ -- name: FreePBX - Install /etc/systemd/system/freepbx.service systemd unit file from template (root:root, 0644 by default) +- name: FreePBX - Install /etc/systemd/system/freepbx.service from template (root:root, 0644 by default) template: - src: freepbx.service.j2 - dest: /etc/systemd/system/freepbx.service + 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) diff --git a/roles/pbx/tasks/install.yml b/roles/pbx/tasks/install.yml index d6b32348a..36e0190fa 100644 --- a/roles/pbx/tasks/install.yml +++ b/roles/pbx/tasks/install.yml @@ -32,34 +32,11 @@ name: httpd -# 2021-07-27: Taken care of by main.yml -#- name: TODO: Check if asterisk and freepbx are already installed -# -#- name: Check if /etc/systemd/system/freepbx.service is already installed -# stat: -# path: /etc/systemd/system/freepbx.service -# register: freepbx_installed -# -#- debug: -# msg: >- -# FreePBX already installed. Reinstall shall be skipped -# when: freepbx_installed.stat.exists - -# 2021-08-03: Taken care of by asterisk.yml's scripts/install_prereq -#- name: Install 'make' package -# package: -# name: make -# state: present - - name: Install Asterisk include_tasks: asterisk.yml - #when: internet_available and pbx_install and (pbx_installed is undefined) and is_debuntu and (not freepbx_installed.stat.exists) - #when: internet_available and pbx_install and (not pbx_installed) and ((is_debian and ansible_distribution_major_version == "9") or is_ubuntu_18) - name: Install FreePBX include_tasks: freepbx.yml - #when: internet_available and pbx_install and (pbx_installed is undefined) and is_debuntu and (not freepbx_installed.stat.exists) - #when: internet_available and pbx_install and (not pbx_installed) and ((is_debian and ansible_distribution_major_version == "9") or is_ubuntu_18) # RECORD PBX AS INSTALLED diff --git a/roles/pbx/templates/freepbx.service b/roles/pbx/templates/freepbx.service new file mode 100644 index 000000000..62f198e51 --- /dev/null +++ b/roles/pbx/templates/freepbx.service @@ -0,0 +1,15 @@ +[Unit] +Description=FreePBX VoIP Server +After=mysql.service + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/sbin/fwconsole start +ExecStop=/usr/sbin/fwconsole stop +# 2021-08-04: Asterisk doesn't (re)start reliably, as FreePBX install completes: +# https://github.com/iiab/iiab/blob/master/roles/pbx/tasks/enable-or-disable.yml +# RestartSec=3 + +[Install] +WantedBy=multi-user.target diff --git a/roles/pbx/templates/freepbx.service.j2 b/roles/pbx/templates/freepbx.service.j2 index 62f198e51..42b46abf0 100644 --- a/roles/pbx/templates/freepbx.service.j2 +++ b/roles/pbx/templates/freepbx.service.j2 @@ -7,9 +7,8 @@ Type=oneshot RemainAfterExit=yes ExecStart=/usr/sbin/fwconsole start ExecStop=/usr/sbin/fwconsole stop -# 2021-08-04: Asterisk doesn't (re)start reliably, as FreePBX install completes: -# https://github.com/iiab/iiab/blob/master/roles/pbx/tasks/enable-or-disable.yml -# RestartSec=3 +# 2021-08-04: Asterisk doesn't (re)start reliably, as FreePBX install completes, +# especially on Debian 11? https://github.com/iiab/iiab/pull/2908 / PR #2910 [Install] WantedBy=multi-user.target diff --git a/roles/pbx/templates/odbc.ini.j2 b/roles/pbx/templates/odbc.ini similarity index 100% rename from roles/pbx/templates/odbc.ini.j2 rename to roles/pbx/templates/odbc.ini From 3fce9afe2ff192adedab4be41d7a685c0e3f6e1c Mon Sep 17 00:00:00 2001 From: root Date: Wed, 4 Aug 2021 23:31:53 -0400 Subject: [PATCH 05/22] Move pbx/templates/freepbx.service.j2 to freepbx.service --- roles/pbx/templates/freepbx.service | 5 ++--- roles/pbx/templates/freepbx.service.j2 | 14 -------------- 2 files changed, 2 insertions(+), 17 deletions(-) delete mode 100644 roles/pbx/templates/freepbx.service.j2 diff --git a/roles/pbx/templates/freepbx.service b/roles/pbx/templates/freepbx.service index 62f198e51..42b46abf0 100644 --- a/roles/pbx/templates/freepbx.service +++ b/roles/pbx/templates/freepbx.service @@ -7,9 +7,8 @@ Type=oneshot RemainAfterExit=yes ExecStart=/usr/sbin/fwconsole start ExecStop=/usr/sbin/fwconsole stop -# 2021-08-04: Asterisk doesn't (re)start reliably, as FreePBX install completes: -# https://github.com/iiab/iiab/blob/master/roles/pbx/tasks/enable-or-disable.yml -# RestartSec=3 +# 2021-08-04: Asterisk doesn't (re)start reliably, as FreePBX install completes, +# especially on Debian 11? https://github.com/iiab/iiab/pull/2908 / PR #2910 [Install] WantedBy=multi-user.target diff --git a/roles/pbx/templates/freepbx.service.j2 b/roles/pbx/templates/freepbx.service.j2 deleted file mode 100644 index 42b46abf0..000000000 --- a/roles/pbx/templates/freepbx.service.j2 +++ /dev/null @@ -1,14 +0,0 @@ -[Unit] -Description=FreePBX VoIP Server -After=mysql.service - -[Service] -Type=oneshot -RemainAfterExit=yes -ExecStart=/usr/sbin/fwconsole start -ExecStop=/usr/sbin/fwconsole stop -# 2021-08-04: Asterisk doesn't (re)start reliably, as FreePBX install completes, -# especially on Debian 11? https://github.com/iiab/iiab/pull/2908 / PR #2910 - -[Install] -WantedBy=multi-user.target From 785deada29629434364592be40389513d072f3fd Mon Sep 17 00:00:00 2001 From: root Date: Wed, 4 Aug 2021 23:38:37 -0400 Subject: [PATCH 06/22] freepbx.yml & freepbx.conf.j2: Mention /var/lib/php/asterisk_sessions --- roles/pbx/tasks/freepbx.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/pbx/tasks/freepbx.yml b/roles/pbx/tasks/freepbx.yml index e0c643537..8670ff174 100644 --- a/roles/pbx/tasks/freepbx.yml +++ b/roles/pbx/tasks/freepbx.yml @@ -85,7 +85,7 @@ login_host: "{{ asterisk_db_host }}" state: present -- name: FreePBX - Create new php sessions dir /var/lib/php/asterisk_sessions/ +- name: FreePBX - Create new php sessions dir /var/lib/php/asterisk_sessions/ - SEE 'php_value session.save_path /var/lib/php/asterisk_sessions/' IN pbx/templates/freepbx.conf.j2 file: path: /var/lib/php/asterisk_sessions/ state: directory From 1df3a4d923b07d57ea6b0cbb0228a25aac4b9cc6 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 4 Aug 2021 23:53:03 -0400 Subject: [PATCH 07/22] pbx/defaults/main.yml: Axe trailing (double) slash from 3 URLs --- roles/pbx/defaults/main.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/roles/pbx/defaults/main.yml b/roles/pbx/defaults/main.yml index 94449dfb9..0271907a7 100644 --- a/roles/pbx/defaults/main.yml +++ b/roles/pbx/defaults/main.yml @@ -15,11 +15,11 @@ # All above are set in: github.com/iiab/iiab/blob/master/vars/default_vars.yml # If nec, change them by editing /etc/iiab/local_vars.yml prior to installing! -asterisk_url: http://downloads.asterisk.org/pub/telephony/asterisk/ +asterisk_url: http://downloads.asterisk.org/pub/telephony/asterisk asterisk_src_file: asterisk-18-current.tar.gz asterisk_src_dir: /opt/iiab/asterisk -freepbx_url: http://mirror.freepbx.org/modules/packages/freepbx/7.4/ +freepbx_url: http://mirror.freepbx.org/modules/packages/freepbx/7.4 freepbx_src_file: freepbx-16.0-latest.tgz # Beta as of 2021-06-21 but looking great! Does NOT support PHP < 7.4 (you've been warned!) Please review https://github.com/iiab/iiab/blob/master/roles/pbx/README.rst freepbx_src_dir: /opt/iiab/freepbx freepbx_install_dir: /var/www/html/freepbx @@ -30,6 +30,6 @@ asterisk_db_dbname: asterisk asterisk_db_password: asterisk asterisk_db_cdrdbname: asteriskcdrdb -chan_dongle_url: https://github.com/wdoekes/asterisk-chan-dongle/archive/ +chan_dongle_url: https://github.com/wdoekes/asterisk-chan-dongle/archive chan_dongle_src_file: master.zip chan_dongle_src_dir: /opt/iiab/chan_dongle From e7da7e4567bbef155f2bf4e6acf568424bde89d1 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 5 Aug 2021 00:05:32 -0400 Subject: [PATCH 08/22] Restore correct block syntax in /etc/asterisk/freepbx_chown.conf --- roles/pbx/tasks/freepbx.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/roles/pbx/tasks/freepbx.yml b/roles/pbx/tasks/freepbx.yml index 8670ff174..be3108a3e 100644 --- a/roles/pbx/tasks/freepbx.yml +++ b/roles/pbx/tasks/freepbx.yml @@ -48,6 +48,9 @@ # dest: "{{ freepbx_src_dir }}/amp_conf/htdocs/admin/libraries/Composer/vendor/neitanod/forceutf8/src/ForceUTF8/Encoding.php" +- pause: + + # 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: @@ -102,7 +105,7 @@ content: | [blacklist] directory = /var/lib/php/sessions - # marker: "; {mark} ANSIBLE MANAGED BLOCK" + marker: "; {mark} ANSIBLE MANAGED BLOCK" dest: /etc/asterisk/freepbx_chown.conf owner: asterisk group: asterisk @@ -155,6 +158,9 @@ dest: /etc/systemd/system/ +- pause: + + - name: FreePBX - Install /etc/apache2/sites-available/freepbx.conf from template ({{ apache_user }}:{{ apache_user }}, 0644 by default) template: src: freepbx.conf.j2 @@ -167,3 +173,6 @@ path: /etc/apache2/ports.conf line: "Listen {{ pbx_http_port }}" # insertafter: Listen 80 + + +- pause: From 99f6f36fd10c5985b5b8736da1529bd104da13c7 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 5 Aug 2021 00:07:47 -0400 Subject: [PATCH 09/22] freepbx.yml: Remove temp breakpoints --- roles/pbx/tasks/freepbx.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/roles/pbx/tasks/freepbx.yml b/roles/pbx/tasks/freepbx.yml index be3108a3e..85035efc3 100644 --- a/roles/pbx/tasks/freepbx.yml +++ b/roles/pbx/tasks/freepbx.yml @@ -158,9 +158,6 @@ dest: /etc/systemd/system/ -- pause: - - - name: FreePBX - Install /etc/apache2/sites-available/freepbx.conf from template ({{ apache_user }}:{{ apache_user }}, 0644 by default) template: src: freepbx.conf.j2 @@ -173,6 +170,3 @@ path: /etc/apache2/ports.conf line: "Listen {{ pbx_http_port }}" # insertafter: Listen 80 - - -- pause: From 02fe5fdd4a1a3a07b4d7311dbed51606ca39bc32 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 5 Aug 2021 00:16:56 -0400 Subject: [PATCH 10/22] freepbx.yml: rm breakpoint & mention /var/www/html/freepbx --- roles/pbx/tasks/freepbx.yml | 5 +---- roles/pbx/tasks/install.yml | 4 ++-- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/roles/pbx/tasks/freepbx.yml b/roles/pbx/tasks/freepbx.yml index 85035efc3..5ec716b92 100644 --- a/roles/pbx/tasks/freepbx.yml +++ b/roles/pbx/tasks/freepbx.yml @@ -48,9 +48,6 @@ # dest: "{{ freepbx_src_dir }}/amp_conf/htdocs/admin/libraries/Composer/vendor/neitanod/forceutf8/src/ForceUTF8/Encoding.php" -- pause: - - # 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: @@ -122,7 +119,7 @@ command: "{{ item }}" args: chdir: "{{ freepbx_src_dir }}" - creates: "{{ freepbx_install_dir }}" + creates: "{{ freepbx_install_dir }}" # /var/www/html/freepbx 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 }} diff --git a/roles/pbx/tasks/install.yml b/roles/pbx/tasks/install.yml index 36e0190fa..dd02adcd2 100644 --- a/roles/pbx/tasks/install.yml +++ b/roles/pbx/tasks/install.yml @@ -32,8 +32,8 @@ name: httpd -- name: Install Asterisk - include_tasks: asterisk.yml +#- name: Install Asterisk +# include_tasks: asterisk.yml - name: Install FreePBX include_tasks: freepbx.yml From d208d61d2855b6102cdf6769d52f96ebf380c4da Mon Sep 17 00:00:00 2001 From: A Holt Date: Thu, 5 Aug 2021 01:17:34 -0400 Subject: [PATCH 11/22] pbx/tasks/install.yml: Restore asterisk.yml --- roles/pbx/tasks/install.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/roles/pbx/tasks/install.yml b/roles/pbx/tasks/install.yml index dd02adcd2..36e0190fa 100644 --- a/roles/pbx/tasks/install.yml +++ b/roles/pbx/tasks/install.yml @@ -32,8 +32,8 @@ name: httpd -#- name: Install Asterisk -# include_tasks: asterisk.yml +- name: Install Asterisk + include_tasks: asterisk.yml - name: Install FreePBX include_tasks: freepbx.yml From 40f9f2e8860ab2e64116c718e09d4f18360c8fd9 Mon Sep 17 00:00:00 2001 From: Jerry Vonau Date: Thu, 5 Aug 2021 00:17:37 -0500 Subject: [PATCH 12/22] little heavy handed but it works `./start_asterisk stop` does nothing `./start_asterisk kill` spits out an error just undoes what `./start_asterisk` start did allows the freepbx service to start cleanly to run the hooks --- roles/pbx/tasks/freepbx.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/roles/pbx/tasks/freepbx.yml b/roles/pbx/tasks/freepbx.yml index 5ef354153..abef797b3 100644 --- a/roles/pbx/tasks/freepbx.yml +++ b/roles/pbx/tasks/freepbx.yml @@ -113,6 +113,8 @@ 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 }} + - killall -9 safe_asterisk + - killall -9 asterisk # 2021-08-04: FreePBX 16 no longer needs this FreePBX 15 patch # - name: FreePBX - Patch FreePBX source - disable get_magic_quotes_gpc() From 50e04c9c5b39eaa31680cfe4da93c954ebab16be Mon Sep 17 00:00:00 2001 From: A Holt Date: Thu, 5 Aug 2021 03:30:50 -0400 Subject: [PATCH 13/22] pbx/tasks/freepbx.yml comment: 2-step install -> 4-step install --- roles/pbx/tasks/freepbx.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/pbx/tasks/freepbx.yml b/roles/pbx/tasks/freepbx.yml index 9d7e31c63..9be3fe949 100644 --- a/roles/pbx/tasks/freepbx.yml +++ b/roles/pbx/tasks/freepbx.yml @@ -115,7 +115,7 @@ # dest: "{{ freepbx_install_dir }}/admin/libraries/view.functions.php" -- name: FreePBX - 2-step install (just run once) - CAN TAKE 12 MIN OR LONGER! +- name: FreePBX - 4-step install (just run once) - CAN TAKE 12 MIN OR LONGER! command: "{{ item }}" args: chdir: "{{ freepbx_src_dir }}" From c3b43b93ff96a01607fa8ad01baf2bf0e056357c Mon Sep 17 00:00:00 2001 From: A Holt Date: Thu, 5 Aug 2021 14:10:19 -0400 Subject: [PATCH 14/22] freepbx.yml: Mention March 2021 Asterisk on RPi compile tips --- roles/pbx/tasks/freepbx.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/roles/pbx/tasks/freepbx.yml b/roles/pbx/tasks/freepbx.yml index 9be3fe949..425be1e2d 100644 --- a/roles/pbx/tasks/freepbx.yml +++ b/roles/pbx/tasks/freepbx.yml @@ -1,5 +1,6 @@ # 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/ +# RPi: http://mghadam.blogspot.com/2021/03/install-asterisk-18-freepbx-15-on.html - name: FreePBX - Install dependencies include: freepbx_dependencies.yml From 37805f7a4c4ceb27a37ff74271025e822b3c289a Mon Sep 17 00:00:00 2001 From: root Date: Thu, 5 Aug 2021 16:50:24 -0400 Subject: [PATCH 15/22] Add systemd support to Asterisk + #2908 debug experiments --- roles/pbx/tasks/asterisk.yml | 17 ++++++++++++++--- .../pbx/tasks/asterisk_dependencies.yml.unused | 6 +++--- roles/pbx/tasks/freepbx.yml | 15 ++++++++++----- 3 files changed, 27 insertions(+), 11 deletions(-) diff --git a/roles/pbx/tasks/asterisk.yml b/roles/pbx/tasks/asterisk.yml index 904cd0d18..afae7c60e 100644 --- a/roles/pbx/tasks/asterisk.yml +++ b/roles/pbx/tasks/asterisk.yml @@ -1,7 +1,12 @@ -# 2021-08-03: Asterisk's own install_prereq (below) handles these? +# 2021-08-05: Asterisk's own install_prereq (below) handles most all of these #- name: Asterisk - Install dependencies # include: asterisk_dependencies.yml +- name: Install package 'libsystemd-dev' so Asterisk compiles in systemd support -- after '/* #undef HAVE_SYSTEMD */' becomes '#undef HAVE_SYSTEMD' in /opt/iiab/asterisk/include/asterisk/autoconfig.h -- per https://community.asterisk.org/t/systemctl-start-asterisk-is-fail-with-timeout/81123/3 and https://github.com/asterisk/asterisk/blob/master/contrib/systemd/asterisk.service + package: + name: libsystemd-dev + state: present + - name: Asterisk - Download {{ asterisk_url }}/{{ asterisk_src_file }} to {{ downloads_dir }} get_url: url: "{{ asterisk_url }}/{{ asterisk_src_file }}" @@ -74,7 +79,7 @@ args: chdir: "{{ asterisk_src_dir }}" -- name: Asterisk - Run 'make' - CAN TAKE 30 MIN OR LONGER! +- name: Asterisk - Run 'make' - CAN TAKE 8-30 MIN OR LONGER! command: make args: chdir: "{{ asterisk_src_dir }}" @@ -97,10 +102,16 @@ chdir: "{{ asterisk_src_dir }}" - name: Asterisk - Run 'ldconfig' - shell: ldconfig + command: ldconfig args: chdir: "{{ asterisk_src_dir }}" +# - name: 2021-08-05 EXPERIMENTALLY RUN 'update-rc.d -f asterisk remove' similar to 'systemctl disable asterisk' as recommended by https://wiki.freepbx.org/display/FOP/Installing+FreePBX+16+on+Debian+10.9 +# command: update-rc.d -f asterisk remove + + +- pause: + - name: Asterisk - Ensure group 'asterisk' exists group: diff --git a/roles/pbx/tasks/asterisk_dependencies.yml.unused b/roles/pbx/tasks/asterisk_dependencies.yml.unused index 0738ddfe4..74f20c184 100644 --- a/roles/pbx/tasks/asterisk_dependencies.yml.unused +++ b/roles/pbx/tasks/asterisk_dependencies.yml.unused @@ -1,12 +1,12 @@ - name: Asterisk - Install dependencies package: name: - - git - - curl + - git # Not visible in install_prereq + - curl # Not visible in install_prereq - wget - libnewt-dev - libssl-dev - - libncurses5-dev + - libncurses5-dev # Not visible in install_prereq - subversion - libsqlite3-dev - build-essential diff --git a/roles/pbx/tasks/freepbx.yml b/roles/pbx/tasks/freepbx.yml index 425be1e2d..ea92385e5 100644 --- a/roles/pbx/tasks/freepbx.yml +++ b/roles/pbx/tasks/freepbx.yml @@ -116,7 +116,7 @@ # dest: "{{ freepbx_install_dir }}/admin/libraries/view.functions.php" -- name: FreePBX - 4-step install (just run once) - CAN TAKE 12 MIN OR LONGER! +- name: FreePBX - 4-step install (just run once) - CAN TAKE 3-12 MIN OR LONGER! command: "{{ item }}" args: chdir: "{{ freepbx_src_dir }}" @@ -124,9 +124,11 @@ 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 - - killall -9 safe_asterisk # 2021-08-05: Thanks to @jvonau's PR $2912, these 2 lines are a (brute force for now!) workaround to the intermittent #2908 - - killall -9 asterisk # install issue of 'systemctl status freepbx' showing "Unable to run Pre-Asterisk hooks, because Asterisk is already running" + # - ./start_asterisk stop + #- killall -9 safe_asterisk # 2021-08-05: Thanks to @jvonau's PR $2912, these 2 lines attempt a (brute force for now, not enough?!) workaround to intermittent + #- killall -9 asterisk # #2908 install issue of 'systemctl status freepbx' showing "Unable to run Pre-Asterisk hooks, because Asterisk is already running" + +- pause: # - name: 'FreePBX - fix file permissions for NGINX: /etc/freepbx.conf (0644), /var/log/asterisk/freepbx.log (0666)' # file: @@ -147,7 +149,7 @@ # # - /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) +- name: FreePBX - Install /etc/odbc.ini from template (root:root, 0644 by default) - in future consider compiling ODBC driver for aarch64 per http://mghadam.blogspot.com/2021/03/install-asterisk-18-freepbx-15-on.html ? template: src: odbc.ini dest: /etc/ @@ -170,3 +172,6 @@ path: /etc/apache2/ports.conf line: "Listen {{ pbx_http_port }}" # insertafter: Listen 80 + + +- pause: From d9b7b5c4ae6d599c57b6e016ed53334db1f9035d Mon Sep 17 00:00:00 2001 From: root Date: Thu, 5 Aug 2021 17:57:19 -0400 Subject: [PATCH 16/22] pbx: Compare asterisk_dependencies.yml to Asterisk's install_prereq --- roles/pbx/tasks/asterisk_dependencies.yml.unused | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/roles/pbx/tasks/asterisk_dependencies.yml.unused b/roles/pbx/tasks/asterisk_dependencies.yml.unused index 74f20c184..a3f26a5c3 100644 --- a/roles/pbx/tasks/asterisk_dependencies.yml.unused +++ b/roles/pbx/tasks/asterisk_dependencies.yml.unused @@ -1,12 +1,12 @@ - name: Asterisk - Install dependencies package: name: - - git # Not visible in install_prereq - - curl # Not visible in install_prereq + - git # 2021-08-05: Not in Asterisk's install_prereq + - curl # 2021-08-05: Not in Asterisk's install_prereq - wget - libnewt-dev - libssl-dev - - libncurses5-dev # Not visible in install_prereq + - libncurses5-dev # 2021-08-05: Not in Asterisk's install_prereq - subversion - libsqlite3-dev - build-essential From 3c41bffd6323c54e7dd80975445c8163ad24604d Mon Sep 17 00:00:00 2001 From: root Date: Thu, 5 Aug 2021 19:50:44 -0400 Subject: [PATCH 17/22] freepbx.yml: /usr/sbin/asterisk -rx "core stop gracefully" --- roles/pbx/tasks/asterisk.yml | 10 ++-------- roles/pbx/tasks/freepbx.yml | 19 ++++++++++++------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/roles/pbx/tasks/asterisk.yml b/roles/pbx/tasks/asterisk.yml index afae7c60e..2830f878d 100644 --- a/roles/pbx/tasks/asterisk.yml +++ b/roles/pbx/tasks/asterisk.yml @@ -1,8 +1,8 @@ -# 2021-08-05: Asterisk's own install_prereq (below) handles most all of these +# 2021-08-05: Asterisk's own install_prereq (below) handles essentially all of these #- name: Asterisk - Install dependencies # include: asterisk_dependencies.yml -- name: Install package 'libsystemd-dev' so Asterisk compiles in systemd support -- after '/* #undef HAVE_SYSTEMD */' becomes '#undef HAVE_SYSTEMD' in /opt/iiab/asterisk/include/asterisk/autoconfig.h -- per https://community.asterisk.org/t/systemctl-start-asterisk-is-fail-with-timeout/81123/3 and https://github.com/asterisk/asterisk/blob/master/contrib/systemd/asterisk.service +- name: Asterisk - Install package 'libsystemd-dev' so Asterisk compiles in imperfect-but-improving systemd support -- so '/* #undef HAVE_SYSTEMD */' becomes '#undef HAVE_SYSTEMD' in /opt/iiab/asterisk/include/asterisk/autoconfig.h -- per https://community.asterisk.org/t/systemctl-start-asterisk-is-fail-with-timeout/81123/3 and https://github.com/asterisk/asterisk/blob/master/contrib/systemd/asterisk.service package: name: libsystemd-dev state: present @@ -106,12 +106,6 @@ args: chdir: "{{ asterisk_src_dir }}" -# - name: 2021-08-05 EXPERIMENTALLY RUN 'update-rc.d -f asterisk remove' similar to 'systemctl disable asterisk' as recommended by https://wiki.freepbx.org/display/FOP/Installing+FreePBX+16+on+Debian+10.9 -# command: update-rc.d -f asterisk remove - - -- pause: - - name: Asterisk - Ensure group 'asterisk' exists group: diff --git a/roles/pbx/tasks/freepbx.yml b/roles/pbx/tasks/freepbx.yml index ea92385e5..e6c781f1d 100644 --- a/roles/pbx/tasks/freepbx.yml +++ b/roles/pbx/tasks/freepbx.yml @@ -1,6 +1,7 @@ # 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/ # RPi: http://mghadam.blogspot.com/2021/03/install-asterisk-18-freepbx-15-on.html +# 2012-2017: http://www.raspberry-asterisk.org - name: FreePBX - Install dependencies include: freepbx_dependencies.yml @@ -57,6 +58,14 @@ # enabled: no # state: stopped +# 2021-08-05: Asterisk's systemd / systemctl support is getting there but Very +# Imperfect (even when compiled in, see the top of asterisk.tml) so let's +# follow the official instructions for now: + +- name: FreePBX - Run 'update-rc.d -f asterisk remove' similar to 'systemctl disable asterisk' giving FreePBX full control during boot - not strictly required but recommended by https://wiki.freepbx.org/display/FOP/Installing+FreePBX+16+on+Debian+10.9 + command: update-rc.d -f asterisk remove + + - name: FreePBX - Add MySQL user ({{ asterisk_db_user }}) mysql_user: name: "{{ asterisk_db_user }}" @@ -124,11 +133,10 @@ 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 }} + - /usr/sbin/asterisk -rx "core stop gracefully" # 2021-08-05: For 1st run of enable-or-disable.yml, so 'systemctl status freepbx' doesn't show "Unable to run Pre-Asterisk hooks, because Asterisk is already running" -- allowing http://box:83/freepbx to connect to Asterix reliably/immediately -- even prior to the 1st reboot # - ./start_asterisk stop - #- killall -9 safe_asterisk # 2021-08-05: Thanks to @jvonau's PR $2912, these 2 lines attempt a (brute force for now, not enough?!) workaround to intermittent - #- killall -9 asterisk # #2908 install issue of 'systemctl status freepbx' showing "Unable to run Pre-Asterisk hooks, because Asterisk is already running" - -- pause: + # - killall -9 safe_asterisk # 2021-08-05: Thanks to @jvonau's PR $2912, these 2 lines attempt a (brute force for now, not enough?!) workaround to intermittent + # - killall -9 asterisk # #2908 install issue of 'systemctl status freepbx' showing "Unable to run Pre-Asterisk hooks, because Asterisk is already running" # - name: 'FreePBX - fix file permissions for NGINX: /etc/freepbx.conf (0644), /var/log/asterisk/freepbx.log (0666)' # file: @@ -172,6 +180,3 @@ path: /etc/apache2/ports.conf line: "Listen {{ pbx_http_port }}" # insertafter: Listen 80 - - -- pause: From c82e852526fb53588851dab67d39364da2534630 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 5 Aug 2021 20:09:48 -0400 Subject: [PATCH 18/22] pbx: Warn that Asterisk's systemd support needs work --- roles/pbx/tasks/asterisk.yml | 3 +++ roles/pbx/tasks/freepbx.yml | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/roles/pbx/tasks/asterisk.yml b/roles/pbx/tasks/asterisk.yml index 2830f878d..63059695b 100644 --- a/roles/pbx/tasks/asterisk.yml +++ b/roles/pbx/tasks/asterisk.yml @@ -2,6 +2,9 @@ #- name: Asterisk - Install dependencies # include: asterisk_dependencies.yml +# BEWARE: 'systemctl is-active asterix' falsely reports 'inactive' even when systemd +# is compiled in below! FWIW: /opt/iiab/asterisk/contrib/systemd/asterisk.service + - name: Asterisk - Install package 'libsystemd-dev' so Asterisk compiles in imperfect-but-improving systemd support -- so '/* #undef HAVE_SYSTEMD */' becomes '#undef HAVE_SYSTEMD' in /opt/iiab/asterisk/include/asterisk/autoconfig.h -- per https://community.asterisk.org/t/systemctl-start-asterisk-is-fail-with-timeout/81123/3 and https://github.com/asterisk/asterisk/blob/master/contrib/systemd/asterisk.service package: name: libsystemd-dev diff --git a/roles/pbx/tasks/freepbx.yml b/roles/pbx/tasks/freepbx.yml index e6c781f1d..96e227fbc 100644 --- a/roles/pbx/tasks/freepbx.yml +++ b/roles/pbx/tasks/freepbx.yml @@ -59,8 +59,8 @@ # state: stopped # 2021-08-05: Asterisk's systemd / systemctl support is getting there but Very -# Imperfect (even when compiled in, see the top of asterisk.tml) so let's -# follow the official instructions for now: +# Imperfect (even when compiled in, as a result of package 'libsystemd-dev' at +# top of asterisk.tml) so let's follow the official instructions for now: - name: FreePBX - Run 'update-rc.d -f asterisk remove' similar to 'systemctl disable asterisk' giving FreePBX full control during boot - not strictly required but recommended by https://wiki.freepbx.org/display/FOP/Installing+FreePBX+16+on+Debian+10.9 command: update-rc.d -f asterisk remove From 56519b7fce41e820fc2b3b6611ebd2708f42f9f5 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 5 Aug 2021 22:04:26 -0400 Subject: [PATCH 19/22] pbx: True 'systemctl restart freepbx' twice for #2908 --- roles/pbx/tasks/asterisk.yml | 11 +++++++++-- roles/pbx/tasks/freepbx.yml | 15 +++++++++++---- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/roles/pbx/tasks/asterisk.yml b/roles/pbx/tasks/asterisk.yml index 63059695b..22b404ca0 100644 --- a/roles/pbx/tasks/asterisk.yml +++ b/roles/pbx/tasks/asterisk.yml @@ -3,9 +3,10 @@ # include: asterisk_dependencies.yml # BEWARE: 'systemctl is-active asterix' falsely reports 'inactive' even when systemd -# is compiled in below! FWIW: /opt/iiab/asterisk/contrib/systemd/asterisk.service +# is compiled in below! FWIW: /opt/iiab/asterisk/contrib/systemd/asterisk.service +# https://github.com/asterisk/asterisk/blob/master/contrib/systemd/asterisk.service -- name: Asterisk - Install package 'libsystemd-dev' so Asterisk compiles in imperfect-but-improving systemd support -- so '/* #undef HAVE_SYSTEMD */' becomes '#undef HAVE_SYSTEMD' in /opt/iiab/asterisk/include/asterisk/autoconfig.h -- per https://community.asterisk.org/t/systemctl-start-asterisk-is-fail-with-timeout/81123/3 and https://github.com/asterisk/asterisk/blob/master/contrib/systemd/asterisk.service +- name: Asterisk - Install package 'libsystemd-dev' so Asterisk compiles in imperfect-but-improving systemd support -- if ./configure below places '#define HAVE_SYSTEMD 1' in /opt/iiab/asterisk/include/asterisk/autoconfig.h -- please later confirm with 'ldd /usr/sbin/asterisk | grep systemd' -- per https://community.asterisk.org/t/systemctl-start-asterisk-is-fail-with-timeout/81123/3 package: name: libsystemd-dev state: present @@ -67,6 +68,12 @@ args: chdir: "{{ asterisk_src_dir }}" +# - name: Asterisk - Set '#define HAVE_SYSTEMD 1' in /opt/iiab/asterisk/include/asterisk/autoconfig.h +# lineinfile: +# path: /opt/iiab/asterisk/include/asterisk/autoconfig.h +# regexp: '#undef HAVE_SYSTEMD' +# line: '#define HAVE_SYSTEMD 1' + - name: Asterisk - Run 'make menuselect.makeopts' command: make menuselect.makeopts args: diff --git a/roles/pbx/tasks/freepbx.yml b/roles/pbx/tasks/freepbx.yml index 96e227fbc..5d9557261 100644 --- a/roles/pbx/tasks/freepbx.yml +++ b/roles/pbx/tasks/freepbx.yml @@ -125,7 +125,7 @@ # dest: "{{ freepbx_install_dir }}/admin/libraries/view.functions.php" -- name: FreePBX - 4-step install (just run once) - CAN TAKE 3-12 MIN OR LONGER! +- name: FreePBX - 2-step install (just run once) - CAN TAKE 3-12 MIN OR LONGER! command: "{{ item }}" args: chdir: "{{ freepbx_src_dir }}" @@ -133,10 +133,10 @@ 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 }} - - /usr/sbin/asterisk -rx "core stop gracefully" # 2021-08-05: For 1st run of enable-or-disable.yml, so 'systemctl status freepbx' doesn't show "Unable to run Pre-Asterisk hooks, because Asterisk is already running" -- allowing http://box:83/freepbx to connect to Asterix reliably/immediately -- even prior to the 1st reboot # - ./start_asterisk stop - # - killall -9 safe_asterisk # 2021-08-05: Thanks to @jvonau's PR $2912, these 2 lines attempt a (brute force for now, not enough?!) workaround to intermittent - # - killall -9 asterisk # #2908 install issue of 'systemctl status freepbx' showing "Unable to run Pre-Asterisk hooks, because Asterisk is already running" + # - killall -9 safe_asterisk # 2021-08-05: These 2 lines from PR #2912 attempted a (brute force, not enough?!) workaround to frequent #2908 install + # - killall -9 asterisk # annoyance 'systemctl status freepbx' showing "Unable to run Pre-Asterisk hooks, because Asterisk is already running" + # - /usr/sbin/asterisk -rx "core stop gracefully" # - name: 'FreePBX - fix file permissions for NGINX: /etc/freepbx.conf (0644), /var/log/asterisk/freepbx.log (0666)' # file: @@ -175,6 +175,13 @@ owner: "{{ apache_user }}" # www-data group: "{{ apache_user }}" +- name: FreePBX - Run 'systemctl restart freepbx' TWICE (THIS IS #1 OF 2) to get past 'systemctl status freepbx' glitch "Unable to run Pre-Asterisk hooks, because Asterisk is already running" + systemd: + daemon_reload: yes + name: freepbx + enabled: yes + state: restarted + - name: FreePBX - Add directive "Listen {{ pbx_http_port }}" to /etc/apache2/ports.conf lineinfile: path: /etc/apache2/ports.conf From 776d2d5eb298efab922909df2618e895770571a1 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 5 Aug 2021 22:55:18 -0400 Subject: [PATCH 20/22] Clean/Explain asterisk.yml & freepbx.yml --- roles/pbx/tasks/asterisk.yml | 6 ------ roles/pbx/tasks/freepbx.yml | 20 ++++++++++---------- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/roles/pbx/tasks/asterisk.yml b/roles/pbx/tasks/asterisk.yml index 22b404ca0..909f5ef3b 100644 --- a/roles/pbx/tasks/asterisk.yml +++ b/roles/pbx/tasks/asterisk.yml @@ -68,12 +68,6 @@ args: chdir: "{{ asterisk_src_dir }}" -# - name: Asterisk - Set '#define HAVE_SYSTEMD 1' in /opt/iiab/asterisk/include/asterisk/autoconfig.h -# lineinfile: -# path: /opt/iiab/asterisk/include/asterisk/autoconfig.h -# regexp: '#undef HAVE_SYSTEMD' -# line: '#define HAVE_SYSTEMD 1' - - name: Asterisk - Run 'make menuselect.makeopts' command: make menuselect.makeopts args: diff --git a/roles/pbx/tasks/freepbx.yml b/roles/pbx/tasks/freepbx.yml index 5d9557261..3ee84c317 100644 --- a/roles/pbx/tasks/freepbx.yml +++ b/roles/pbx/tasks/freepbx.yml @@ -60,7 +60,7 @@ # 2021-08-05: Asterisk's systemd / systemctl support is getting there but Very # Imperfect (even when compiled in, as a result of package 'libsystemd-dev' at -# top of asterisk.tml) so let's follow the official instructions for now: +# top of asterisk.tml) so let's follow these "official" instructions for now: - name: FreePBX - Run 'update-rc.d -f asterisk remove' similar to 'systemctl disable asterisk' giving FreePBX full control during boot - not strictly required but recommended by https://wiki.freepbx.org/display/FOP/Installing+FreePBX+16+on+Debian+10.9 command: update-rc.d -f asterisk remove @@ -134,8 +134,8 @@ - ./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 - # - killall -9 safe_asterisk # 2021-08-05: These 2 lines from PR #2912 attempted a (brute force, not enough?!) workaround to frequent #2908 install - # - killall -9 asterisk # annoyance 'systemctl status freepbx' showing "Unable to run Pre-Asterisk hooks, because Asterisk is already running" + # - killall -9 safe_asterisk # 2021-08-05: These 2 lines from PR #2912 attempted a brute force (not enough!) workaround for the #2908 annoyance on 1st + # - killall -9 asterisk # install, of 'systemctl status freepbx' showing "Unable to run Pre-Asterisk hooks, because Asterisk is already running" # - /usr/sbin/asterisk -rx "core stop gracefully" # - name: 'FreePBX - fix file permissions for NGINX: /etc/freepbx.conf (0644), /var/log/asterisk/freepbx.log (0666)' @@ -167,6 +167,13 @@ src: freepbx.service dest: /etc/systemd/system/ +- name: FreePBX - Run 'systemctl restart freepbx' TWICE (THIS IS #1 OF 2) to get past 'systemctl status freepbx' glitch "Unable to run Pre-Asterisk hooks, because Asterisk is already running" + systemd: + daemon_reload: yes + name: freepbx + enabled: yes + state: restarted + - name: FreePBX - Install /etc/apache2/sites-available/freepbx.conf from template ({{ apache_user }}:{{ apache_user }}, 0644 by default) template: @@ -175,13 +182,6 @@ owner: "{{ apache_user }}" # www-data group: "{{ apache_user }}" -- name: FreePBX - Run 'systemctl restart freepbx' TWICE (THIS IS #1 OF 2) to get past 'systemctl status freepbx' glitch "Unable to run Pre-Asterisk hooks, because Asterisk is already running" - systemd: - daemon_reload: yes - name: freepbx - enabled: yes - state: restarted - - name: FreePBX - Add directive "Listen {{ pbx_http_port }}" to /etc/apache2/ports.conf lineinfile: path: /etc/apache2/ports.conf From 578acd7d103663c416df73ca4eea22fb77758a2f Mon Sep 17 00:00:00 2001 From: A Holt Date: Thu, 5 Aug 2021 23:21:20 -0400 Subject: [PATCH 21/22] Fix comment glitch: 'systemctl restart freepbx' (1 OF 2) --- roles/pbx/tasks/freepbx.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/pbx/tasks/freepbx.yml b/roles/pbx/tasks/freepbx.yml index 3ee84c317..b02887ae0 100644 --- a/roles/pbx/tasks/freepbx.yml +++ b/roles/pbx/tasks/freepbx.yml @@ -167,7 +167,7 @@ src: freepbx.service dest: /etc/systemd/system/ -- name: FreePBX - Run 'systemctl restart freepbx' TWICE (THIS IS #1 OF 2) to get past 'systemctl status freepbx' glitch "Unable to run Pre-Asterisk hooks, because Asterisk is already running" +- name: FreePBX - Run 'systemctl restart freepbx' TWICE (THIS IS 1 OF 2) to get past 'systemctl status freepbx' glitch "Unable to run Pre-Asterisk hooks, because Asterisk is already running" systemd: daemon_reload: yes name: freepbx From a4f6832ce6b0950bd1cdb5e5fb64d03905e53f2b Mon Sep 17 00:00:00 2001 From: A Holt Date: Fri, 6 Aug 2021 06:36:31 -0400 Subject: [PATCH 22/22] chan_dongle.yml: Mention March 2021 recipe detail --- roles/pbx/tasks/chan_dongle.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/roles/pbx/tasks/chan_dongle.yml b/roles/pbx/tasks/chan_dongle.yml index d9dab0d0d..119b552fd 100644 --- a/roles/pbx/tasks/chan_dongle.yml +++ b/roles/pbx/tasks/chan_dongle.yml @@ -1,3 +1,5 @@ +# RPi: http://mghadam.blogspot.com/2021/03/install-asterisk-18-freepbx-15-on.html + - name: chan_dongle - Download {{ chan_dongle_url }}/{{ chan_dongle_src_file }} to {{ downloads_dir }} get_url: url: "{{ chan_dongle_url }}/{{ chan_dongle_src_file }}" # /opt/iiab/downloads/master.zip