-
Notifications
You must be signed in to change notification settings - Fork 27
/
mssql_driver_for_php.yml
126 lines (112 loc) · 3.29 KB
/
mssql_driver_for_php.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
---
- name: Ensure prerequisites for sqlsrv in place
yum:
lock_timeout: 180 # wait up to 3 minutes for a lock ansible/ansible#57189
name: "{{item}}"
state: installed
with_items:
- re2c
- gcc-c++
# Install ODBC driver
- name: install mssql-server repo (CentOS, RedHat)
get_url:
url: https://packages.microsoft.com/config/rhel/7/prod.repo
dest: /etc/yum.repos.d/mssql-release.repo
when: ansible_distribution in ['CentOS', 'RedHat']
- name: Ensure conflicting ODBC drivers removed
yum:
lock_timeout: 180 # wait up to 3 minutes for a lock ansible/ansible#57189
name: "{{item}}"
state: absent
with_items:
- unixODBC-utf16
- unixODBC-utf16-devel
- name: install MS ODBC driver package
yum:
lock_timeout: 180 # wait up to 3 minutes for a lock ansible/ansible#57189
name: msodbcsql17
state: latest
environment:
ACCEPT_EULA: 'y'
notify:
- restart apache
- name: install ODBC driver devel package
yum:
lock_timeout: 180 # wait up to 3 minutes for a lock ansible/ansible#57189
name: unixODBC-devel
state: latest
# If mssql tools desired:
# sudo ACCEPT_EULA=Y yum install mssql-tools
# echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
# echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
# source ~/.bashrc
#
# Compiling the PHP drivers with PECL with PHP 7.2 requires a more recent GCC than the default:
#
#
# # CENTOS: sudo yum install centos-release-scl
# - name: install centos-release-scl
# yum:
# name: centos-release-scl
# state: latest
# when: ansible_distribution == "CentOS"
#
# - name: install devtoolset-7 on CentOS
# yum:
# name: devtoolset-7
# state: latest
# when: ansible_distribution == "CentOS"
#
# # REDHAT: sudo yum-config-manager --enable rhel-server-rhscl-7-rpms
# - name: enable rhel-server-rhscl-7-rpms
# yum:
# name: devtoolset-7
# state: latest
# enablerepo: rhel-server-rhscl-7-rpms
# when: ansible_distribution == "RedHat"
#
# - name: Enable devtoolset-7 with SCL
# shell: "scl enable devtoolset-7 bash"
- name: Ensure PEAR channel up-to-date
shell: pear channel-update pecl.php.net
#
# Install sqlsrv drivers from PECL
#
#
# This gives false failures, both done this way (pecl install sqlsrv) as well
# as using the Ansible PEAR module. With this method it simply says "already
# installed" then gives a non-zero return code (an error), but does nothing
# else (it should have a way to make that not cause an error). With the Ansible
# module it actually rebuilds the package from source before erroring, which is
# a waste (hence switching to "pecl install ..."). In either case, it
# successfully installs the correct version.
#
# In the future, perhaps install using Remi repo:
# sudo yum install php-sqlsrv php-pdo_sqlsrv
#
- name: Install sqlsrv PECL packages
shell: pecl install sqlsrv
ignore_errors: true
notify:
- restart apache
- name: Install pdo_sqlsrv PECL packages
shell: pecl install pdo_sqlsrv
ignore_errors: true
notify:
- restart apache
- template:
src: 30-pdo_sqlsrv.ini.j2
dest: /etc/php.d/30-pdo_sqlsrv.ini
owner: root
group: root
mode: 0644
notify:
- restart apache
- template:
src: 20-sqlsrv.ini.j2
dest: /etc/php.d/20-sqlsrv.ini
owner: root
group: root
mode: 0644
notify:
- restart apache