Found this discussion in google after facing the same issue as the topic creator.
The point here is that he's not trying to learn everything at the same time. We are reading the book "Asterisk: Definitive Guide 5th Edition", and to set up an Asterisk environment, instead of doing everything manually, the book offers a playbook which installs everything you need to start following the book. Asterisk only runs in Linux, but previous Linux knowledge is not obligatory (although recommended). The problem here is that they don't provide the playbook file online and we have to copy it manually (or through a PDF book), however both ways are easy to misspell or add unwanted spaces.
Well, I've tried to write the file manually and I'm getting stuck due to an syntax error, but I can't find where the error is. This is the whole file. The part that returns an error is the bold one. Can someone help us to figure out how to fix this playbook? Thanks in advance!
- hosts: starfish
become: yes
vars:
# Use these on the first run of this playbook
current_mysql_root_password: ""
updated_mysql_root_password: "root"
current_mysql_asterisk_password: ""
updated_mysql_asterisk_password: "root"
# Comment the above out after the first run
# Uncomment these for subsequent runs
# current_mysql_root_password: "YouNeedAReallyGoodPassword"
# updated_mysql_root_password: "{{ current_mysql_root_password }}"
# current_mysql_asterisk_password: "YouNeedAReallyGoodPasswordHereToo"
# updated_mysql_asterisk_password: "{{ current_mysql_asterisk_password }}"
tasks:
- name: Install epel-release
dnf:
name: epel-release
state: present
- name: Install dependencies
dnf:
name: ['vim', 'wget', 'MySQL-python']
state: present
- name: Install the MySQL repo.
dnf:
state: present
- name: Install mysql-server
dnf:
name: mysql-server
state: present
- name: Override variables for MySQL (RedHat).
set_fact:
mysql_daemon: mysqld
mysql_packages: ['mysql-server']
mysql_log_error: /var/log/mysqld.err
mysql_syslog_tag: mysqld
mysql_pid_file: /var/run/mysqld/mysqld.pid
mysql_socket: /var/lib/mysql/mysql.sock
when: ansible_os_family == "RedHat"
- name: Ensure MySQL server is running
service:
name: mysqld
state: started
enabled: yes
- name: update mysql root pass for localhost root account from local servers
mysql_user:
login_user: root
login_password: "{{ current_mysql_root_password }}"
name: root
host: "{{ item }}"
password: "{{ updated_mysql_root_password }}"
with_items:
- localhost
- name: update mysql root password for all other local root accounts
mysql_user:
login_user: root
login_password: "{{ updated_mysql_root_password }}"
name: root
host: "{{ item }}"
password: "{{ updated_mysql_root_password }}"
with_items:
- "{{ inventory_hostname }}"
- 127.0.0.1
- ::1
- localhost.localdomain
- name: create asterisk database
mysql_db:
login_user: root
login_password: "{{ updated_mysql_root_password }}"
name: asterisk
state: present
- name: asterisk mysql user
mysql_user:
login_user: root
login_password: "{{ updated_mysql_root_password }}"
name: asterisk
host: "{{ item }}"
password: "{{ updated_mysql_asterisk_password }}"
priv: "asterisk.*:ALL"
with_items:
- "{{ inventory_hostname }}"
- 127.0.0.1
- ::1
- localhost
- localhost.localdomain
- name: remove anonymous user
mysql_user:
login_user: root
login_password: "{{ updated_mysql_root_password }}"
name: ""
state: absent
host: "{{ item }}"
with_items:
- localhost
- "{{ inventory_hostname }}"
- 127.0.0.1
- ::1
- localhost.localdomain
- name: remove test database
mysql_db:
login_user: root
login_password: "{{ updated_mysql_root_password }}"
name: test
state: absent
- user:
name: asterisk
state: present
createhome: yes
- group:
name: asterisk
state: present
- user:
name: astmin
groups: asterisk,wheel
state: present
- name: Install other dependencies
dnf:
name:
- unixODBC
- unixODBC-devel
- mysql-connector-odbc
- MySQL-python
- tcpdump
- ntp
- ntpdate
- jansson
- bind-utils
state: present
#Tweak the firewall for UDP/SIP
- firewalld:
port: 5060/udp
permanent: true
state: enabled
#Tweak firewall for UDP/RTP
- firewalld:
port: 10000-20000/udp
permanent: true
state: enabled
- name: Ensure NTP is running
service:
name: ntpd
state: started
enabled: yes
# The libmyodbc8a.so file is versioned, so if you don't have version 8, see what the
# /usr/lib64/libmyodbc<version>a.so file is, and refer to that instead
# on your 'Driver64' line, and then run the playbook again
- name: update odbcinst.ini
lineinfile:
dest: /etc/odbcinst.ini
regexp: "{{ item.regexp }}"
line: "{{ item.line }}"
state: present
with_items:
- regexp: "^Driver64"
line: "Driver64 = /usr/lib64/libmyodbc8a.so"
- regexp: "^Setup64"
line: "Setup64 = /usr/lib64/libodbcmyS.so"
- name: create odbc.ini
blockinfile:
path: /etc/odbc.ini
create: yes
block: |
[asterisk]
Driver = MySQL
Description = MySQL connection to 'asterisk' database
Server = localhost
Port = 3306
Database = asterisk
UserName = asterisk
Password = {{ updated_mysql_asterisk_password }}
#Socket = /var/run/mysqld/mysqld.sock
Socket = /var/run/mysqld/mysqld.sock
Socket = /var/lib/mysql/mysql.sock