mirror of
https://git.lapiole.org/dani/ansible-roles.git
synced 2025-04-22 21:23:23 +02:00
Update to 2022-02-24 10:00
This commit is contained in:
parent
175a20ac07
commit
60c1fefb94
@ -37,8 +37,10 @@ fpbx_prov_tcp_ports: [ 21 ]
|
|||||||
fpbx_prov_udp_ports: [ 69 ]
|
fpbx_prov_udp_ports: [ 69 ]
|
||||||
fpbx_http_ports:
|
fpbx_http_ports:
|
||||||
- 80 # Normal HTTP
|
- 80 # Normal HTTP
|
||||||
- 8088 # UCP node
|
- 8088 # asterisk http endpoint
|
||||||
- 8001 # ast WS
|
- 8089 # asterisk https endpoint
|
||||||
|
- 8001 # NodeJS UCP http endpoint
|
||||||
|
- 8003 # NodeJS UCP https endpoint
|
||||||
fpbx_mgm_src_ip: []
|
fpbx_mgm_src_ip: []
|
||||||
fpbx_voip_src_ip: []
|
fpbx_voip_src_ip: []
|
||||||
fpbx_http_src_ip: "{{ httpd_src_ip }}"
|
fpbx_http_src_ip: "{{ httpd_src_ip }}"
|
||||||
@ -50,3 +52,6 @@ fpbx_prov_src_ip: "{{ fpbx_voip_src_ip }}"
|
|||||||
|
|
||||||
# Set to your vhost if you use one
|
# Set to your vhost if you use one
|
||||||
# fpbx_vhost: https://tel.domain.net
|
# fpbx_vhost: https://tel.domain.net
|
||||||
|
|
||||||
|
# If letsencrypt role is also installed, you can get a certificate by uncommenting this
|
||||||
|
# fpbx_letsencrypt_cert: "{{ inventory_hostname }}"
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
---
|
---
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
|
- role: mkdir
|
||||||
- role: repo_asterisk
|
- role: repo_asterisk
|
||||||
- role: repo_elrepo
|
- role: repo_elrepo
|
||||||
- role: repo_nodejs
|
- role: repo_nodejs
|
||||||
|
8
roles/freepbx/tasks/archive_post.yml
Normal file
8
roles/freepbx/tasks/archive_post.yml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
- import_tasks: ../includes/webapps_post.yml
|
||||||
|
vars:
|
||||||
|
- root_dir: "{{ fpbx_root_dir }}"
|
||||||
|
- version: "{{ fpbx_version }}"
|
||||||
|
tags: fpbx
|
||||||
|
|
9
roles/freepbx/tasks/archive_pre.yml
Normal file
9
roles/freepbx/tasks/archive_pre.yml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
- import_tasks: ../includes/webapps_archive.yml
|
||||||
|
vars:
|
||||||
|
- root_dir: "{{ fpbx_root_dir }}"
|
||||||
|
- version: "{{ fpbx_current_version }}"
|
||||||
|
- db_name: "{{ fpbx_db_name }}"
|
||||||
|
- db_server: "{{ fpbx_db_server }}"
|
||||||
|
tags: fpbx
|
10
roles/freepbx/tasks/cleanup.yml
Normal file
10
roles/freepbx/tasks/cleanup.yml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
- name: Remove temp and obsolete files
|
||||||
|
file: path={{ item }} state=absent
|
||||||
|
loop:
|
||||||
|
- "{{ fpbx_root_dir }}/tmp/freepbx-{{ fpbx_version }}-latest.tgz"
|
||||||
|
- "{{ fpbx_root_dir }}/tmp/freepbx"
|
||||||
|
- "{{ fpbx_root_dir }}/db_dumps"
|
||||||
|
tags: fpbx
|
||||||
|
|
77
roles/freepbx/tasks/conf.yml
Normal file
77
roles/freepbx/tasks/conf.yml
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
- name: Configure vsftpd
|
||||||
|
template: src=vsftpd/{{ item }}.j2 dest=/etc/vsftpd/{{ item }}
|
||||||
|
loop:
|
||||||
|
- user_list
|
||||||
|
- vsftpd.conf
|
||||||
|
- chroot_list
|
||||||
|
notify: restart vsftpd
|
||||||
|
tags: fpbx
|
||||||
|
|
||||||
|
- name: Deploy PAM config for vsftpd
|
||||||
|
template: src=vsftpd/pam.j2 dest=/etc/pam.d/vsftpd
|
||||||
|
tags: fpbx
|
||||||
|
|
||||||
|
- name: Deploy configuration
|
||||||
|
template: src={{ item }}.j2 dest=/etc/{{ item }}
|
||||||
|
loop:
|
||||||
|
- freepbx.conf
|
||||||
|
notify:
|
||||||
|
- reload freepbx
|
||||||
|
- fpbx chown
|
||||||
|
tags: fpbx
|
||||||
|
|
||||||
|
- name: Configure manager.conf and extensions.conf
|
||||||
|
lineinfile:
|
||||||
|
path: "{{ item.file }}"
|
||||||
|
regexp: '^{{ item.param }}\s*=.*'
|
||||||
|
line: '{{ item.param }} = {{ item.value }}'
|
||||||
|
loop:
|
||||||
|
- param: secret
|
||||||
|
value: "{{ fpbx_manager_pass }}"
|
||||||
|
file: /etc/asterisk/manager.conf
|
||||||
|
tags: fpbx
|
||||||
|
|
||||||
|
- name: Set amportal settings
|
||||||
|
command: /usr/local/bin/fwconsole setting {{ item.param }} {{ item.value }}
|
||||||
|
loop:
|
||||||
|
- param: AMPMGRUSER
|
||||||
|
value: admin
|
||||||
|
- param: AMPMGRPASS
|
||||||
|
value: "{{ fpbx_manager_pass }}"
|
||||||
|
- param: PROXY_ENABLED
|
||||||
|
value: "{{ (system_proxy is defined and system_proxy != '') | ternary('TRUE','FALSE') }}"
|
||||||
|
- param: PROXY_ADDRESS
|
||||||
|
value: "'{{ (system_proxy is defined and system_proxy != '') | ternary(system_proxy,'') }}'"
|
||||||
|
- param: AUTHTYPE
|
||||||
|
value: "{{ fpbx_auth_type }}"
|
||||||
|
- param: PHPTIMEZONE
|
||||||
|
value: "{{ system_tz | default('UTC') }}"
|
||||||
|
- param: HTTPENABLED
|
||||||
|
value: TRUE
|
||||||
|
- param: HTTPBINDADDRESS
|
||||||
|
value: 0.0.0.0
|
||||||
|
- param: HTTPBINDPORT
|
||||||
|
value: 8088
|
||||||
|
- param: HTTPPREFIX
|
||||||
|
value: asterisk
|
||||||
|
- param: NODEJSBINDADDRESS
|
||||||
|
value: 0.0.0.0
|
||||||
|
- param: NODEJSHTTPSBINDADDRESS
|
||||||
|
value: 0.0.0.0
|
||||||
|
changed_when: False
|
||||||
|
tags: fpbx
|
||||||
|
|
||||||
|
# Configure httpd / PHP
|
||||||
|
- import_tasks: ../includes/webapps_webconf.yml
|
||||||
|
vars:
|
||||||
|
- app_id: freepbx
|
||||||
|
- php_version: "{{ fpbx_php_version }}"
|
||||||
|
- php_fpm_pool: "{{ fpbx_php_fpm_pool | default('') }}"
|
||||||
|
tags: fpbx
|
||||||
|
|
||||||
|
- name: Install logrotate config
|
||||||
|
template: src=logrotate.conf.j2 dest=/etc/logrotate.d/asterisk
|
||||||
|
tags: fpbx
|
||||||
|
|
27
roles/freepbx/tasks/directories.yml
Normal file
27
roles/freepbx/tasks/directories.yml
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
- name: Create directories
|
||||||
|
file: path={{ fpbx_root_dir }}/{{ item.dir }} state=directory owner={{ item.owner | default(omit) }} group={{ item.group | default(omit) }} mode={{ item.mode | default(omit) }}
|
||||||
|
loop:
|
||||||
|
- dir: web
|
||||||
|
- dir: cgi-bin
|
||||||
|
- dir: meta
|
||||||
|
mode: 700
|
||||||
|
- dir: backup
|
||||||
|
mode: 700
|
||||||
|
- dir: tmp
|
||||||
|
- dir: sessions
|
||||||
|
- dir: archives
|
||||||
|
- dir: web/admin/modules/ucp/
|
||||||
|
- dir: provisioning/contacts
|
||||||
|
- dir: provisioning/logs
|
||||||
|
- dir: provisioning/overrides
|
||||||
|
- dir: provisioning/licenses
|
||||||
|
- dir: provisioning/bmp
|
||||||
|
- dir: provisioning/config_bkup/contacts
|
||||||
|
tags: fpbx
|
||||||
|
|
||||||
|
- name: Create /tftpboot
|
||||||
|
file: dest=/tftpboot src={{ fpbx_root_dir }}/provisioning state=link
|
||||||
|
tags: fpbx
|
||||||
|
|
85
roles/freepbx/tasks/facts.yml
Normal file
85
roles/freepbx/tasks/facts.yml
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
- include_vars: "{{ item }}"
|
||||||
|
with_first_found:
|
||||||
|
- vars/{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml
|
||||||
|
- vars/{{ ansible_os_family }}-{{ ansible_distribution_major_version }}.yml
|
||||||
|
- vars/{{ ansible_distribution }}.yml
|
||||||
|
- vars/{{ ansible_os_family }}.yml
|
||||||
|
- vars/defaults.yml
|
||||||
|
tags: fpbx
|
||||||
|
|
||||||
|
# Detect if it's an install, upgrade, or none
|
||||||
|
- block:
|
||||||
|
- import_tasks: ../includes/webapps_set_install_mode.yml
|
||||||
|
vars:
|
||||||
|
- root_dir: "{{ fpbx_root_dir }}"
|
||||||
|
- version: "{{ fpbx_version }}"
|
||||||
|
- manage_upgrade: False
|
||||||
|
- set_fact: fpbx_install_mode={{ (install_mode == 'install') | ternary('install','none') }}
|
||||||
|
- set_fact: fpbx_current_version={{ current_version | default('') }}
|
||||||
|
tags: fpbx
|
||||||
|
|
||||||
|
- name: Build a list of music on hold format to install
|
||||||
|
set_fact: fpbx_moh_pkg={{ fpbx_moh_pkg | default([ 'asterisk-moh-opsound' ]) + [ 'asterisk-moh-opsound-' ~ item ] }}
|
||||||
|
loop:
|
||||||
|
- alaw
|
||||||
|
- g722
|
||||||
|
- g729
|
||||||
|
- gsm
|
||||||
|
- siren14
|
||||||
|
- siren7
|
||||||
|
- sln16
|
||||||
|
- ulaw
|
||||||
|
- wav
|
||||||
|
tags: fpbx
|
||||||
|
|
||||||
|
- name: Build a list of languages packages to install
|
||||||
|
set_fact: fpbx_snd_pkg={{ fpbx_snd_pkg | default([]) + [ 'asterisk-sounds-core-' ~ item.0 ~ '-' ~ item.1 ] }}
|
||||||
|
with_nested:
|
||||||
|
- - en
|
||||||
|
- es
|
||||||
|
- fr
|
||||||
|
- it
|
||||||
|
- - alaw
|
||||||
|
- g722
|
||||||
|
- g729
|
||||||
|
- gsm
|
||||||
|
- siren14
|
||||||
|
- siren7
|
||||||
|
- sln16
|
||||||
|
- ulaw
|
||||||
|
- wav
|
||||||
|
tags: fpbx
|
||||||
|
|
||||||
|
# Create a random pass for phone provisionning
|
||||||
|
- when: fpbxphone_pass is not defined
|
||||||
|
block:
|
||||||
|
- import_tasks: ../includes/get_rand_pass.yml
|
||||||
|
vars:
|
||||||
|
- pass_file: "{{ fpbx_root_dir }}/meta/ansible_phonepass"
|
||||||
|
- pass_size: 12
|
||||||
|
- complex: False
|
||||||
|
- set_fact: fpbx_phone_pass={{ rand_pass }}
|
||||||
|
tags: fpbx
|
||||||
|
|
||||||
|
# Generate a random pass for the database if needed
|
||||||
|
- when: fpbx_db_pass is not defined
|
||||||
|
block:
|
||||||
|
- import_tasks: ../includes/get_rand_pass.yml
|
||||||
|
vars:
|
||||||
|
- pass_file: "{{ fpbx_root_dir }}/meta/ansible_dbpass"
|
||||||
|
- complex: False
|
||||||
|
- set_fact: fpbx_db_pass={{ rand_pass }}
|
||||||
|
tags: fpbx
|
||||||
|
|
||||||
|
# Generate a random pass for the manager if needed
|
||||||
|
- when: fpbx_manager_pass is not defined
|
||||||
|
block:
|
||||||
|
- import_tasks: ../includes/get_rand_pass.yml
|
||||||
|
vars:
|
||||||
|
- pass_file: "{{ fpbx_root_dir }}/meta/ansible_manager_pass"
|
||||||
|
- complex: False
|
||||||
|
- set_fact: fpbx_manager_pass={{ rand_pass }}
|
||||||
|
tags: fpbx
|
||||||
|
|
136
roles/freepbx/tasks/install.yml
Normal file
136
roles/freepbx/tasks/install.yml
Normal file
@ -0,0 +1,136 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
- name: Install Asterisk and its dependencies
|
||||||
|
yum: name={{ fpbx_packages }}
|
||||||
|
tags: fpbx
|
||||||
|
|
||||||
|
- name: Install music on hold and languages packages
|
||||||
|
yum: name={{ fpbx_moh_pkg + fpbx_snd_pkg }}
|
||||||
|
tags: fpbx
|
||||||
|
|
||||||
|
- name: Create a user for provisioning
|
||||||
|
user:
|
||||||
|
name: phone
|
||||||
|
home: "{{ fpbx_root_dir }}/provisioning"
|
||||||
|
shell: /bin/rbash
|
||||||
|
password: "{{ fpbx_phone_pass | password_hash('sha256', 65535 | random(seed=inventory_hostname)) }}"
|
||||||
|
tags: fpbx
|
||||||
|
|
||||||
|
- when: fpbx_install_mode != 'none'
|
||||||
|
block:
|
||||||
|
- name: Download FreePBX
|
||||||
|
get_url:
|
||||||
|
url: "{{ fpbx_archive_url }}"
|
||||||
|
dest: "{{ fpbx_root_dir }}/tmp/"
|
||||||
|
checksum: "sha256:{{ fpbx_archive_sha256 }}"
|
||||||
|
|
||||||
|
- name: Extract fpbx archive
|
||||||
|
unarchive:
|
||||||
|
src: "{{ fpbx_root_dir }}/tmp/freepbx-{{ fpbx_version }}-latest.tgz"
|
||||||
|
dest: "{{ fpbx_root_dir }}/tmp"
|
||||||
|
remote_src: True
|
||||||
|
|
||||||
|
tags: fpbx
|
||||||
|
|
||||||
|
# Create the FreePBX database
|
||||||
|
- import_tasks: ../includes/webapps_create_mysql_db.yml
|
||||||
|
vars:
|
||||||
|
- db_name: "{{ fpbx_db_name }}"
|
||||||
|
- db_user: "{{ fpbx_db_user }}"
|
||||||
|
- db_server: "{{ fpbx_db_server }}"
|
||||||
|
- db_pass: "{{ fpbx_db_pass }}"
|
||||||
|
- append_privs: True
|
||||||
|
tags: fpbx
|
||||||
|
|
||||||
|
# Create the CDR database
|
||||||
|
- import_tasks: ../includes/webapps_create_mysql_db.yml
|
||||||
|
vars:
|
||||||
|
- db_name: "{{ fpbx_cdr_db_name }}"
|
||||||
|
- db_user: "{{ fpbx_db_user }}"
|
||||||
|
- db_server: "{{ fpbx_db_server }}"
|
||||||
|
- db_pass: "{{ fpbx_db_pass }}"
|
||||||
|
- append_privs: True
|
||||||
|
tags: fpbx
|
||||||
|
|
||||||
|
- when: fpbx_install_mode == 'install'
|
||||||
|
block:
|
||||||
|
- name: Ensure asterisk is running
|
||||||
|
service: name=asterisk state=started
|
||||||
|
|
||||||
|
- name: Remove config file before installation
|
||||||
|
file: path={{ item }} state=absent
|
||||||
|
loop:
|
||||||
|
- /etc/freepbx.conf
|
||||||
|
- /etc/amportal.conf
|
||||||
|
|
||||||
|
- name: Install base framework
|
||||||
|
command: >
|
||||||
|
scl enable php{{ fpbx_php_version }} -- ./install
|
||||||
|
-n --webroot={{ fpbx_root_dir }}/web --dbengine=mysql
|
||||||
|
--dbuser={{ fpbx_db_user }} --dbname={{ fpbx_db_name }}
|
||||||
|
--cdrdbname={{ fpbx_cdr_db_name }} --dbpass={{ fpbx_db_pass | quote }}
|
||||||
|
--astmoddir=/usr/lib64/asterisk/modules/
|
||||||
|
--astagidir=/usr/share/asterisk/agi-bin/
|
||||||
|
--ampsbin=/usr/local/bin
|
||||||
|
--ampcgibin=/opt/freepbx/cgi-bin
|
||||||
|
args:
|
||||||
|
chdir: "{{ fpbx_root_dir }}/tmp/freepbx"
|
||||||
|
|
||||||
|
tags: fpbx
|
||||||
|
|
||||||
|
- name: Check for wrapper symlinks
|
||||||
|
stat: path=/usr/local/bin/{{ item }}
|
||||||
|
register: fpbx_wrapper_links
|
||||||
|
loop:
|
||||||
|
- fwconsole
|
||||||
|
- amportal
|
||||||
|
tags: fpbx
|
||||||
|
|
||||||
|
- name: Remove symlinks
|
||||||
|
file: path=/usr/local/bin/{{ item.item }} state=absent
|
||||||
|
when: item.stat.islnk is defined and item.stat.islnk
|
||||||
|
loop: "{{ fpbx_wrapper_links.results }}"
|
||||||
|
tags: fpbx
|
||||||
|
|
||||||
|
- name: Install wrappers
|
||||||
|
template: src={{ item }}.j2 dest=/usr/local/bin/{{ item }} mode=755
|
||||||
|
loop:
|
||||||
|
- fwconsole
|
||||||
|
- amportal
|
||||||
|
tags: fpbx
|
||||||
|
|
||||||
|
- name: Install safe_asterisk
|
||||||
|
copy: src=safe_asterisk dest=/usr/local/bin/safe_asterisk mode=755
|
||||||
|
tags: fpbx
|
||||||
|
|
||||||
|
- name: Ensure asterisk service is stopped and disabled
|
||||||
|
service: name=asterisk state=stopped enabled=False
|
||||||
|
tags: fpbx
|
||||||
|
|
||||||
|
- name: Deploy FreePBX service unit
|
||||||
|
template: src=freepbx.service.j2 dest=/etc/systemd/system/freepbx.service
|
||||||
|
register: fpbx_unit
|
||||||
|
notify: restart freepbx
|
||||||
|
tags: fpbx
|
||||||
|
|
||||||
|
- name: Reload systemd
|
||||||
|
systemd: daemon_reload=True
|
||||||
|
when: fpbx_unit.changed
|
||||||
|
tags: fpbx
|
||||||
|
|
||||||
|
- name: Deploy pre/post backup scripts
|
||||||
|
template: src={{ item }}_backup.sh.j2 dest=/etc/backup/{{ item }}.d/freepbx.sh mode=750
|
||||||
|
loop:
|
||||||
|
- pre
|
||||||
|
- post
|
||||||
|
tags: fpbx
|
||||||
|
|
||||||
|
- name: Install agi scripts
|
||||||
|
copy: src=agi/{{ item }} dest=/usr/share/asterisk/agi-bin/{{ item }} mode=750 group=asterisk
|
||||||
|
loop:
|
||||||
|
- jitsi_conf_pin
|
||||||
|
tags: fpbx
|
||||||
|
|
||||||
|
- name: Install dehydrated hook
|
||||||
|
template: src=dehydrated_hook.j2 dest=/etc/dehydrated/hooks_deploy_cert.d/freepbx.sh mode=755
|
||||||
|
tags: fpbx
|
32
roles/freepbx/tasks/iptables.yml
Normal file
32
roles/freepbx/tasks/iptables.yml
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
- name: Load iptables FTP helper
|
||||||
|
copy: content="nf_conntrack_ftp" dest=/etc/modules-load.d/freepbx.conf
|
||||||
|
notify: restart systemd-modules-load
|
||||||
|
tags: fpbx
|
||||||
|
|
||||||
|
- name: Handle FreePBX ports
|
||||||
|
iptables_raw:
|
||||||
|
name: "{{ item.name }}"
|
||||||
|
state: "{{ (item.src | length > 0 and (item.tcp_ports | length > 0 or item.udp_ports | length > 0)) | ternary('present','absent') }}"
|
||||||
|
rules: "{% if item.tcp_ports is defined and item.tcp_ports | length > 0 %}-A INPUT -m state --state NEW -p tcp -m multiport --dports {{ item.tcp_ports | join(',') }} -s {{ item.src | join(',') }} -j ACCEPT\n{% endif %}
|
||||||
|
{% if item.udp_ports is defined and item.udp_ports | length > 0 %}-A INPUT -m state --state NEW -p udp -m multiport --dports {{ item.udp_ports | join(',') }} -s {{ item.src | join(',') }} -j ACCEPT{% endif %}"
|
||||||
|
when: iptables_manage | default(True)
|
||||||
|
loop:
|
||||||
|
- name: fpbx_mgm_ports
|
||||||
|
tcp_ports: "{{ fpbx_mgm_tcp_ports }}"
|
||||||
|
udp_ports: "{{ fpbx_mgm_udp_ports }}"
|
||||||
|
src: "{{ fpbx_mgm_src_ip }}"
|
||||||
|
- name: fpbx_voip_ports
|
||||||
|
tcp_ports: "{{ fpbx_voip_tcp_ports }}"
|
||||||
|
udp_ports: "{{ fpbx_voip_udp_ports }}"
|
||||||
|
src: "{{ fpbx_voip_src_ip }}"
|
||||||
|
- name: fpbx_http_ports
|
||||||
|
tcp_ports: "{{ fpbx_http_ports }}"
|
||||||
|
src: "{{ fpbx_http_src_ip }}"
|
||||||
|
- name: fpbx_prov_ports
|
||||||
|
tcp_ports: "{{ fpbx_prov_tcp_ports }}"
|
||||||
|
udp_ports: "{{ fpbx_prov_udp_ports }}"
|
||||||
|
src: "{{ fpbx_prov_src_ip }}"
|
||||||
|
tags: fpbx,firewall
|
||||||
|
|
@ -1,442 +1,18 @@
|
|||||||
---
|
---
|
||||||
|
|
||||||
- include_vars: "{{ item }}"
|
|
||||||
with_first_found:
|
|
||||||
- vars/{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml
|
|
||||||
- vars/{{ ansible_os_family }}-{{ ansible_distribution_major_version }}.yml
|
|
||||||
- vars/{{ ansible_distribution }}.yml
|
|
||||||
- vars/{{ ansible_os_family }}.yml
|
|
||||||
- vars/defaults.yml
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- name: Install Asterisk and its dependencies
|
|
||||||
yum: name={{ fpbx_packages }}
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- name: Build a list of music on hold format to install
|
|
||||||
set_fact: fpbx_moh_pkg={{ fpbx_moh_pkg | default([ 'asterisk-moh-opsound' ]) + [ 'asterisk-moh-opsound-' ~ item ] }}
|
|
||||||
loop:
|
|
||||||
- alaw
|
|
||||||
- g722
|
|
||||||
- g729
|
|
||||||
- gsm
|
|
||||||
- siren14
|
|
||||||
- siren7
|
|
||||||
- sln16
|
|
||||||
- ulaw
|
|
||||||
- wav
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- name: Build a list of languages packages to install
|
|
||||||
set_fact: fpbx_snd_pkg={{ fpbx_snd_pkg | default([]) + [ 'asterisk-sounds-core-' ~ item.0 ~ '-' ~ item.1 ] }}
|
|
||||||
with_nested:
|
|
||||||
- - en
|
|
||||||
- es
|
|
||||||
- fr
|
|
||||||
- it
|
|
||||||
- - alaw
|
|
||||||
- g722
|
|
||||||
- g729
|
|
||||||
- gsm
|
|
||||||
- siren14
|
|
||||||
- siren7
|
|
||||||
- sln16
|
|
||||||
- ulaw
|
|
||||||
- wav
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- name: Install music on hold and languages packages
|
|
||||||
yum: name={{ fpbx_moh_pkg + fpbx_snd_pkg }}
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- import_tasks: ../includes/disable_selinux.yml
|
- import_tasks: ../includes/disable_selinux.yml
|
||||||
tags: fpbx
|
tags: fpbx
|
||||||
|
- include: directories.yml
|
||||||
- block:
|
- include: facts.yml
|
||||||
- import_tasks: ../includes/webapps_set_install_mode.yml
|
- include: archive_pre.yml
|
||||||
vars:
|
|
||||||
- root_dir: "{{ fpbx_root_dir }}"
|
|
||||||
- version: "{{ fpbx_version }}"
|
|
||||||
- manage_upgrade: False
|
|
||||||
- set_fact: fpbx_install_mode={{ (install_mode == 'install') | ternary('install','none') }}
|
|
||||||
- set_fact: fpbx_current_version={{ current_version | default('') }}
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- name: Create directories
|
|
||||||
file: path={{ fpbx_root_dir }}/{{ item.dir }} state=directory owner={{ item.owner | default(omit) }} group={{ item.group | default(omit) }} mode={{ item.mode | default(omit) }}
|
|
||||||
loop:
|
|
||||||
- dir: web
|
|
||||||
- dir: cgi-bin
|
|
||||||
- dir: meta
|
|
||||||
mode: 700
|
|
||||||
- dir: backup
|
|
||||||
mode: 700
|
|
||||||
- dir: tmp
|
|
||||||
- dir: sessions
|
|
||||||
- dir: archives
|
|
||||||
- dir: web/admin/modules/ucp/
|
|
||||||
- dir: provisioning/contacts
|
|
||||||
- dir: provisioning/logs
|
|
||||||
- dir: provisioning/overrides
|
|
||||||
- dir: provisioning/licenses
|
|
||||||
- dir: provisioning/bmp
|
|
||||||
- dir: provisioning/config_bkup/contacts
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- name: Remove obsolete directories
|
|
||||||
file: path={{ fpbx_root_dir }}/{{ item }} state=absent
|
|
||||||
loop:
|
|
||||||
- db_dumps
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- name: Create /tftpboot
|
|
||||||
file: dest=/tftpboot src={{ fpbx_root_dir }}/provisioning state=link
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- import_tasks: ../includes/get_rand_pass.yml
|
|
||||||
vars:
|
|
||||||
- pass_file: "{{ fpbx_root_dir }}/meta/ansible_phonepass"
|
|
||||||
- pass_size: 12
|
|
||||||
- complex: False
|
|
||||||
when: fpbxphone_pass is not defined
|
|
||||||
tags: fpbx
|
|
||||||
- set_fact: fpbx_phone_pass={{ rand_pass }}
|
|
||||||
when: fpbx_phone_pass is not defined
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- name: Create a user for provisioning
|
|
||||||
user:
|
|
||||||
name: phone
|
|
||||||
home: "{{ fpbx_root_dir }}/provisioning"
|
|
||||||
shell: /bin/rbash
|
|
||||||
password: "{{ fpbx_phone_pass | password_hash('sha256', 65535 | random(seed=inventory_hostname)) }}"
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- name: Configure vsftpd
|
|
||||||
template: src=vsftpd/{{ item }}.j2 dest=/etc/vsftpd/{{ item }}
|
|
||||||
loop:
|
|
||||||
- user_list
|
|
||||||
- vsftpd.conf
|
|
||||||
- chroot_list
|
|
||||||
notify: restart vsftpd
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- name: Deploy PAM config for vsftpd
|
|
||||||
template: src=vsftpd/pam.j2 dest=/etc/pam.d/vsftpd
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- name: Load iptables FTP helper
|
|
||||||
copy: content="nf_conntrack_ftp" dest=/etc/modules-load.d/freepbx.conf
|
|
||||||
notify: restart systemd-modules-load
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- name: Start and enable vsftpd
|
|
||||||
service: name=vsftpd state=started enabled=True
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- import_tasks: ../includes/webapps_archive.yml
|
|
||||||
vars:
|
|
||||||
- root_dir: "{{ fpbx_root_dir }}"
|
|
||||||
- version: "{{ fpbx_current_version }}"
|
|
||||||
- db_name: "{{ fpbx_db_name }}"
|
|
||||||
- db_server: "{{ fpbx_db_server }}"
|
|
||||||
when: fpbx_install_mode == 'upgrade'
|
when: fpbx_install_mode == 'upgrade'
|
||||||
tags: fpbx
|
- include: install.yml
|
||||||
|
- include: conf.yml
|
||||||
- name: Download FreePBX
|
- include: iptables.yml
|
||||||
get_url:
|
|
||||||
url: "{{ fpbx_archive_url }}"
|
|
||||||
dest: "{{ fpbx_root_dir }}/tmp/"
|
|
||||||
checksum: "sha256:{{ fpbx_archive_sha256 }}"
|
|
||||||
when: fpbx_install_mode != 'none'
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- name: Extract fpbx archive
|
|
||||||
unarchive:
|
|
||||||
src: "{{ fpbx_root_dir }}/tmp/freepbx-{{ fpbx_version }}-latest.tgz"
|
|
||||||
dest: "{{ fpbx_root_dir }}/tmp"
|
|
||||||
remote_src: yes
|
|
||||||
when: fpbx_install_mode != 'none'
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- import_tasks: ../includes/get_rand_pass.yml
|
|
||||||
vars:
|
|
||||||
- pass_file: "{{ fpbx_root_dir }}/meta/ansible_dbpass"
|
|
||||||
- complex: False
|
|
||||||
when: fpbx_db_pass is not defined
|
|
||||||
tags: fpbx
|
|
||||||
- set_fact: fpbx_db_pass={{ rand_pass }}
|
|
||||||
when: fpbx_db_pass is not defined
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- import_tasks: ../includes/webapps_create_mysql_db.yml
|
|
||||||
vars:
|
|
||||||
- db_name: "{{ fpbx_db_name }}"
|
|
||||||
- db_user: "{{ fpbx_db_user }}"
|
|
||||||
- db_server: "{{ fpbx_db_server }}"
|
|
||||||
- db_pass: "{{ fpbx_db_pass }}"
|
|
||||||
- append_privs: True
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- import_tasks: ../includes/webapps_create_mysql_db.yml
|
|
||||||
vars:
|
|
||||||
- db_name: "{{ fpbx_cdr_db_name }}"
|
|
||||||
- db_user: "{{ fpbx_db_user }}"
|
|
||||||
- db_server: "{{ fpbx_db_server }}"
|
|
||||||
- db_pass: "{{ fpbx_db_pass }}"
|
|
||||||
- append_privs: True
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- name: Ensure asterisk is running
|
|
||||||
service: name=asterisk state=started
|
|
||||||
when: fpbx_install_mode == 'install'
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- name: Remove config file before installation
|
|
||||||
file: path={{ item }} state=absent
|
|
||||||
loop:
|
|
||||||
- /etc/freepbx.conf
|
|
||||||
- /etc/amportal.conf
|
|
||||||
when: fpbx_install_mode == 'install'
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- name: Install base framework
|
|
||||||
command: >
|
|
||||||
scl enable php{{ fpbx_php_version }} -- ./install
|
|
||||||
-n --webroot={{ fpbx_root_dir }}/web --dbengine=mysql
|
|
||||||
--dbuser={{ fpbx_db_user }} --dbname={{ fpbx_db_name }}
|
|
||||||
--cdrdbname={{ fpbx_cdr_db_name }} --dbpass={{ fpbx_db_pass | quote }}
|
|
||||||
--astmoddir=/usr/lib64/asterisk/modules/
|
|
||||||
--astagidir=/usr/share/asterisk/agi-bin/
|
|
||||||
--ampsbin=/usr/local/bin
|
|
||||||
--ampcgibin=/opt/freepbx/cgi-bin
|
|
||||||
args:
|
|
||||||
chdir: "{{ fpbx_root_dir }}/tmp/freepbx"
|
|
||||||
when: fpbx_install_mode == 'install'
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
# TODO: should be in a loop to patch easily several files, but checking for file presence in a loop
|
|
||||||
# is a pain with ansible
|
|
||||||
#- name: Check if webrtc class exist
|
|
||||||
# stat: path={{ fpbx_root_dir }}/web/admin/modules/webrtc/Webrtc.class.php
|
|
||||||
# register: fpbx_webrtc_class
|
|
||||||
# tags: fpbx
|
|
||||||
#
|
|
||||||
#- name: Patch webrtc class
|
|
||||||
# patch: src=patches/webrtc_proxy.patch dest={{ fpbx_root_dir }}/web/admin/modules/webrtc/Webrtc.class.php
|
|
||||||
# when: fpbx_webrtc_class.stat.exists
|
|
||||||
# tags: fpbx
|
|
||||||
|
|
||||||
- name: Check for wrapper symlinks
|
|
||||||
stat: path=/usr/local/bin/{{ item }}
|
|
||||||
register: fpbx_wrapper_links
|
|
||||||
loop:
|
|
||||||
- fwconsole
|
|
||||||
- amportal
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- name: Remove symlinks
|
|
||||||
file: path=/usr/local/bin/{{ item.item }} state=absent
|
|
||||||
when: item.stat.islnk is defined and item.stat.islnk
|
|
||||||
loop: "{{ fpbx_wrapper_links.results }}"
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- name: Install wrappers
|
|
||||||
template: src={{ item }}.j2 dest=/usr/local/bin/{{ item }} mode=755
|
|
||||||
loop:
|
|
||||||
- fwconsole
|
|
||||||
- amportal
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- name: Install safe_asterisk
|
|
||||||
copy: src=safe_asterisk dest=/usr/local/bin/safe_asterisk mode=755
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- name: Ensure asterisk service is stopped and disabled
|
|
||||||
service: name=asterisk state=stopped enabled=False
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- name: Ensure /etc/systemd/system/ exists
|
|
||||||
file: path=/etc/systemd/system/ state=directory
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- name: Deploy FreePBX service unit
|
|
||||||
template: src=freepbx.service.j2 dest=/etc/systemd/system/freepbx.service
|
|
||||||
register: fpbx_unit
|
|
||||||
notify: restart freepbx
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- name: Reload systemd
|
|
||||||
systemd: daemon_reload=True
|
|
||||||
when: fpbx_unit.changed
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- name: Remove temp files
|
|
||||||
file: path={{ item }} state=absent
|
|
||||||
loop:
|
|
||||||
- "{{ fpbx_root_dir }}/tmp/freepbx-{{ fpbx_version }}-latest.tgz"
|
|
||||||
- "{{ fpbx_root_dir }}/tmp/freepbx"
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
#- name: Update modules
|
|
||||||
# command: /usr/local/bin/fwconsole ma updateall
|
|
||||||
# changed_when: False
|
|
||||||
# tags: fpbx
|
|
||||||
|
|
||||||
- import_tasks: ../includes/get_rand_pass.yml
|
|
||||||
vars:
|
|
||||||
- pass_file: "{{ fpbx_root_dir }}/meta/ansible_manager_pass"
|
|
||||||
- complex: False
|
|
||||||
when: fpbx_manager_pass is not defined
|
|
||||||
tags: fpbx
|
|
||||||
- set_fact: fpbx_manager_pass={{ rand_pass }}
|
|
||||||
when: fpbx_manager_pass is not defined
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- name: Deploy configuration
|
|
||||||
template: src={{ item }}.j2 dest=/etc/{{ item }}
|
|
||||||
loop:
|
|
||||||
- freepbx.conf
|
|
||||||
notify:
|
|
||||||
- reload freepbx
|
|
||||||
- fpbx chown
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- name: Configure manager.conf and extensions.conf
|
|
||||||
lineinfile:
|
|
||||||
path: "{{ item.file }}"
|
|
||||||
regexp: '^{{ item.param }}\s*=.*'
|
|
||||||
line: '{{ item.param }} = {{ item.value }}'
|
|
||||||
loop:
|
|
||||||
# - param: AMPMGRPASS
|
|
||||||
# value: "{{ fpbx_manager_pass }}"
|
|
||||||
# file: /etc/asterisk/extensions_additional.conf
|
|
||||||
#- param: AMPDBHOST
|
|
||||||
# value: "{{ fpbx_db_server }}"
|
|
||||||
# file: /etc/amportal.conf
|
|
||||||
#- param: AMPDBNAME
|
|
||||||
# value: "{{ fpbx_db_name }}"
|
|
||||||
# file: /etc/amportal.conf
|
|
||||||
#- param: AMPDBUSER
|
|
||||||
# value: "{{ fpbx_db_user }}"
|
|
||||||
# file: /etc/amportal.conf
|
|
||||||
#- param: AMPDBPASS
|
|
||||||
# value: "{{ fpbx_db_pass }}"
|
|
||||||
# file: /etc/amportal.conf
|
|
||||||
#- param: CDRDBNAME
|
|
||||||
# value: "{{ fpbx_cdr_db_name }}"
|
|
||||||
# file: /etc/amportal.conf
|
|
||||||
- param: secret
|
|
||||||
value: "{{ fpbx_manager_pass }}"
|
|
||||||
file: /etc/asterisk/manager.conf
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- name: Set amportal settings
|
|
||||||
command: /usr/local/bin/fwconsole setting {{ item.param }} {{ item.value }}
|
|
||||||
loop:
|
|
||||||
- param: AMPMGRUSER
|
|
||||||
value: admin
|
|
||||||
- param: AMPMGRPASS
|
|
||||||
value: "{{ fpbx_manager_pass }}"
|
|
||||||
- param: PROXY_ENABLED
|
|
||||||
value: "{{ (system_proxy is defined and system_proxy != '') | ternary('TRUE','FALSE') }}"
|
|
||||||
- param: PROXY_ADDRESS
|
|
||||||
value: "'{{ (system_proxy is defined and system_proxy != '') | ternary(system_proxy,'') }}'"
|
|
||||||
- param: AUTHTYPE
|
|
||||||
value: "{{ fpbx_auth_type }}"
|
|
||||||
- param: PHPTIMEZONE
|
|
||||||
value: "{{ system_tz | default('UTC') }}"
|
|
||||||
- param: HTTPENABLED
|
|
||||||
value: TRUE
|
|
||||||
- param: HTTPBINDADDRESS
|
|
||||||
value: 0.0.0.0
|
|
||||||
- param: HTTPBINDPORT
|
|
||||||
value: 8088
|
|
||||||
- param: HTTPPREFIX
|
|
||||||
value: asterisk
|
|
||||||
- param: NODEJSBINDADDRESS
|
|
||||||
value: 0.0.0.0
|
|
||||||
- param: NODEJSHTTPSBINDADDRESS
|
|
||||||
value: 0.0.0.0
|
|
||||||
- param: SIGNATURECHECK
|
|
||||||
value: FALSE # Needed since we're going to patch some module to pass through a rev proxy
|
|
||||||
changed_when: False
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
#- name: Set global language # TODO : this is an ugly hack
|
|
||||||
# command: mysql --host={{ fpbx_db_server}} --user={{ fpbx_db_user }} --password={{ fpbx_db_pass | quote }} {{ fpbx_db_name }} -e "UPDATE `soundlang_settings` SET `value`='fr' WHERE `keyword`='language'"
|
|
||||||
# changed_when: False
|
|
||||||
# tags: fpbx
|
|
||||||
|
|
||||||
- import_tasks: ../includes/webapps_webconf.yml
|
|
||||||
vars:
|
|
||||||
- app_id: freepbx
|
|
||||||
- php_version: "{{ fpbx_php_version }}"
|
|
||||||
- php_fpm_pool: "{{ fpbx_php_fpm_pool | default('') }}"
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- name: Deploy pre/post backup scripts
|
|
||||||
template: src={{ item }}_backup.sh.j2 dest=/etc/backup/{{ item }}.d/freepbx.sh mode=750
|
|
||||||
loop:
|
|
||||||
- pre
|
|
||||||
- post
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- name: Install agi scripts
|
|
||||||
copy: src=agi/{{ item }} dest=/usr/share/asterisk/agi-bin/{{ item }} mode=750 group=asterisk
|
|
||||||
loop:
|
|
||||||
- jitsi_conf_pin
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- name: Handle FreePBX ports
|
|
||||||
iptables_raw:
|
|
||||||
name: "{{ item.name }}"
|
|
||||||
state: "{{ (item.src | length > 0 and (item.tcp_ports | length > 0 or item.udp_ports | length > 0)) | ternary('present','absent') }}"
|
|
||||||
rules: "{% if item.tcp_ports is defined and item.tcp_ports | length > 0 %}-A INPUT -m state --state NEW -p tcp -m multiport --dports {{ item.tcp_ports | join(',') }} -s {{ item.src | join(',') }} -j ACCEPT\n{% endif %}
|
|
||||||
{% if item.udp_ports is defined and item.udp_ports | length > 0 %}-A INPUT -m state --state NEW -p udp -m multiport --dports {{ item.udp_ports | join(',') }} -s {{ item.src | join(',') }} -j ACCEPT{% endif %}"
|
|
||||||
when: iptables_manage | default(True)
|
when: iptables_manage | default(True)
|
||||||
loop:
|
- include: services.yml
|
||||||
- name: fpbx_mgm_ports
|
- include: archive_post.yml
|
||||||
tcp_ports: "{{ fpbx_mgm_tcp_ports }}"
|
when: fpbx_install_mode == 'upgrade'
|
||||||
udp_ports: "{{ fpbx_mgm_udp_ports }}"
|
|
||||||
src: "{{ fpbx_mgm_src_ip }}"
|
|
||||||
- name: fpbx_voip_ports
|
|
||||||
tcp_ports: "{{ fpbx_voip_tcp_ports }}"
|
|
||||||
udp_ports: "{{ fpbx_voip_udp_ports }}"
|
|
||||||
src: "{{ fpbx_voip_src_ip }}"
|
|
||||||
- name: fpbx_http_ports
|
|
||||||
tcp_ports: "{{ fpbx_http_ports }}"
|
|
||||||
src: "{{ fpbx_http_src_ip }}"
|
|
||||||
- name: fpbx_prov_ports
|
|
||||||
tcp_ports: "{{ fpbx_prov_tcp_ports }}"
|
|
||||||
udp_ports: "{{ fpbx_prov_udp_ports }}"
|
|
||||||
src: "{{ fpbx_prov_src_ip }}"
|
|
||||||
tags: fpbx,firewall
|
|
||||||
|
|
||||||
- name: Remove old iptables rules
|
|
||||||
iptables_raw:
|
|
||||||
name: "{{ item }}"
|
|
||||||
state: absent
|
|
||||||
loop:
|
|
||||||
- ast_mgm_tcp_ports
|
|
||||||
- ast_mgm_udp_ports
|
|
||||||
- ast_voip_tcp_ports
|
|
||||||
- ast_voip_udp_ports
|
|
||||||
- ast_http_ports
|
|
||||||
tags: fpbx,firewall
|
|
||||||
|
|
||||||
- name: Install logrotate config
|
|
||||||
template: src=logrotate.conf.j2 dest=/etc/logrotate.d/asterisk
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- name: Start and enable the service
|
|
||||||
service: name=freepbx state=started enabled=True
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- import_tasks: ../includes/webapps_post.yml
|
|
||||||
vars:
|
|
||||||
- root_dir: "{{ fpbx_root_dir }}"
|
|
||||||
- version: "{{ fpbx_version }}"
|
|
||||||
tags: fpbx
|
|
||||||
|
|
||||||
- include: filebeat.yml
|
- include: filebeat.yml
|
||||||
|
- include: write_version.yml
|
||||||
|
- include: cleanup.yml
|
||||||
|
10
roles/freepbx/tasks/services.yml
Normal file
10
roles/freepbx/tasks/services.yml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
- name: Start and enable vsftpd
|
||||||
|
service: name=vsftpd state=started enabled=True
|
||||||
|
tags: fpbx
|
||||||
|
|
||||||
|
- name: Start and enable FreePBX
|
||||||
|
service: name=freepbx state=started enabled=True
|
||||||
|
tags: fpbx
|
||||||
|
|
5
roles/freepbx/tasks/write_version.yml
Normal file
5
roles/freepbx/tasks/write_version.yml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
- name: Write installed version
|
||||||
|
copy: content={{ fpbx_version }} dest={{ fpbx_root_dir }}/meta/ansible_version
|
||||||
|
tags: fpbx
|
23
roles/freepbx/templates/dehydrated_hook.j2
Normal file
23
roles/freepbx/templates/dehydrated_hook.j2
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
{% if fpbx_letsencrypt_cert is defined %}
|
||||||
|
|
||||||
|
if [ $1 == "{{ fpbx_letsencrypt_cert }}" ]; then
|
||||||
|
cp /var/lib/dehydrated/certificates/certs/{{ fpbx_letsencrypt_cert }}/fullchain.pem /etc/asterisk/keys/{{ fpbx_letsencrypt_cert }}.crt
|
||||||
|
cp /var/lib/dehydrated/certificates/certs/{{ fpbx_letsencrypt_cert }}/privkey.pem /etc/asterisk/keys/{{ fpbx_letsencrypt_cert }}.key
|
||||||
|
chown asterisk:asterisk /etc/asterisk/keys/{{ fpbx_letsencrypt_cert }}.crt /etc/asterisk/keys/{{ fpbx_letsencrypt_cert }}.key
|
||||||
|
chmod 600 /etc/asterisk/keys/{{ fpbx_letsencrypt_cert }}.crt /etc/asterisk/keys/{{ fpbx_letsencrypt_cert }}.key
|
||||||
|
# Import cert into FreePBX if the certificate manager is installed
|
||||||
|
if [ $(fwconsole list | grep -c certificates) == 1 ]; then
|
||||||
|
fwconsole certificates --import
|
||||||
|
fi
|
||||||
|
asterisk -R 'core restart gracefully'
|
||||||
|
fi
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
# No Let's Encrypt cert configured, nothing to do
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user