mirror of
https://github.com/iiab/iiab.git
synced 2025-02-13 03:32:12 +00:00
Initial stab at installing FreePBX
This commit is contained in:
parent
25702f4e1d
commit
490812e6a5
7 changed files with 199 additions and 3 deletions
|
@ -5,3 +5,13 @@ pbx_installed: False
|
|||
asterisk_url: http://downloads.asterisk.org/pub/telephony/asterisk/
|
||||
asterisk_src_file: asterisk-16-current.tar.gz
|
||||
asterisk_src_dir: /opt/iiab/asterisk
|
||||
|
||||
asterisk_db_host: localhost
|
||||
asterisk_db_user: asterisk
|
||||
asterisk_db_dbname: asterisk
|
||||
asterisk_db_password: changeme
|
||||
asterisk_db_cdrdbname: asteriskcdrdb
|
||||
|
||||
freepbx_url: http://mirror.freepbx.org/modules/packages/freepbx/
|
||||
freepbx_src_file: freepbx-15.0-latest.tgz
|
||||
freepbx_src_dir: /opt/iiab/freepbx
|
||||
|
|
3
roles/pbx/meta/main.yml
Normal file
3
roles/pbx/meta/main.yml
Normal file
|
@ -0,0 +1,3 @@
|
|||
dependencies:
|
||||
- { role: nodejs, tags: ['nodejs'], when: pbx_install }
|
||||
|
|
@ -142,7 +142,7 @@
|
|||
regexp: 'rungroup ='
|
||||
line: 'rungroup = asterisk'
|
||||
|
||||
- name: Enable & Start asterisk service
|
||||
- name: Asterisk - Enable & Start asterisk service
|
||||
systemd:
|
||||
daemon_reload: yes
|
||||
name: asterisk
|
||||
|
@ -150,7 +150,7 @@
|
|||
state: started
|
||||
when: pbx_enabled
|
||||
|
||||
- name: Disable & Stop asterisk service
|
||||
- name: Asterisk - Disable & Stop asterisk service
|
||||
systemd:
|
||||
daemon_reload: yes
|
||||
name: asterisk
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
- name: Install asterisk dependencies
|
||||
- name: Asterisk - Install dependencies
|
||||
package:
|
||||
name:
|
||||
- git
|
||||
|
|
|
@ -0,0 +1,142 @@
|
|||
- 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: FreePBX - Enable freepbx installation with remote mysql db
|
||||
replace:
|
||||
dest: "{{ freepbx_src_dir }}/installlib/installcommand.class.php"
|
||||
regexp: "(?P<firstpart>\$amp_conf\[.AMPDBHOST.\] = .)localhost(.;)"
|
||||
replace: "\g<firstpart>{{ 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 }}/freepbx"
|
||||
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 systemd freepbx service
|
||||
copy: src=freepbx.service.j2 dest=/etc/systemd/system/freepbx.service mode=755
|
||||
|
||||
# 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
|
||||
notify: Reload asterisk modules
|
||||
|
||||
- name: Fix asterisk cdr odbc connection (2)
|
||||
replace:
|
||||
dest: /etc/odbc.ini
|
||||
regexp: /var/lib/mysql/mysql.sock
|
||||
replace: /var/run/mysqld/mysqld.sock
|
||||
notify: Reload asterisk modules
|
||||
|
||||
- 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
|
29
roles/pbx/tasks/freepbx_dependencies.yml
Normal file
29
roles/pbx/tasks/freepbx_dependencies.yml
Normal file
|
@ -0,0 +1,29 @@
|
|||
- name: FreePBX - Install dependencies
|
||||
package:
|
||||
name:
|
||||
- wget
|
||||
- git
|
||||
- unixodbc # for asterisk cdr
|
||||
- sudo # required by freepbx install script
|
||||
- net-tools # fwconsole requirement
|
||||
- cron # required by freepbx ucp package
|
||||
- sox # required for CDR web-playback
|
||||
- php
|
||||
- php-pear
|
||||
- php-cgi
|
||||
- php-common
|
||||
- php-curl
|
||||
- php-mbstring
|
||||
- php-gd
|
||||
- php-mysql
|
||||
- php-gettext
|
||||
- php-bcmath
|
||||
- php-zip
|
||||
- php-xml
|
||||
- php-imap
|
||||
- php-json
|
||||
- php-snmp
|
||||
- php-fpm
|
||||
- libapache2-mod-php
|
||||
- python-mysqldb # https://github.com/Yannik/ansible-role-freepbx/blob/master/tasks/freepbx.yml#L33
|
||||
state: latest
|
12
roles/pbx/templates/freepbx.service.j2
Normal file
12
roles/pbx/templates/freepbx.service.j2
Normal file
|
@ -0,0 +1,12 @@
|
|||
[Unit]
|
||||
Description=FreePBX VoIP Server
|
||||
After=mysql.service
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
RemainAfterExit=yes
|
||||
ExecStart=/usr/sbin/fwconsole start
|
||||
ExecStop=/usr/sbin/fwconsole stop
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
Loading…
Reference in a new issue