master
1---
2# Derived from the IMS_Install.sh bash script
3# Things worth doing:
4# - add tags to avoid building SER and FHoSS every time
5# - pull out chunks of this that would be useful for other things (i.e. java install and setup)
6- hosts: local
7 vars:
8 # Oracle Java variables
9 jdk_url: "http://download.oracle.com/otn-pub/java/jdk/7u40-b43/jdk-7u40-linux-x64.tar.gz"
10 jdk_file: "jdk-7u40-linux-x64.tar.gz"
11 jdk_extract_dir: "jdk1.7.0_40"
12 jdk_header: "Cookie:gpw_e24=http%3A%2F%2Fwww.oracle.com"
13 jdk_install_dir: "/usr/lib/jvm"
14 jdk_priority: 9001 # over 9000 :P
15
16 # sip express router and FHoSS variables
17 oims_dir: "/opt/OpenIMSCore"
18 ser_dir: "/opt/OpenIMSCore/ser_ims"
19 ser_repo: "http://svn.berlios.de/svnroot/repos/openimscore/ser_ims/trunk"
20 fhoss_dir: "/opt/OpenIMSCore/FHoSS"
21 fhoss_repo: "http://svn.berlios.de/svnroot/repos/openimscore/FHoSS/trunk"
22
23 # mysql variables
24 mysql_root_password: "arg"
25
26 tasks:
27 - name: ensure ims dependencies are installed
28 apt: pkg={{ item }} state=latest update_cache=yes cache_valid_time=3600
29 sudo: yes
30 with_items:
31 - vim
32 - bison
33 - libcurl4-gnutls-dev
34 - libxml2-dev
35 - byobu # huh?
36 - debhelper
37 - cdbs
38 - lintian
39 - build-essential
40 - fakeroot
41 - devscripts
42 - ipsec-tools
43 - pbuilder
44 - dh-make
45 - debootstrap
46 - dpatch
47 - flex
48 - libmysqlclient-dev
49 - ant
50 - docbook-to-man
51 - bind9
52 - tmux
53 - subversion
54 - htop
55 - python-mysqldb
56 - mysql-server
57
58 - name: get the oracle jdk from their lame server
59 command: wget --quiet --no-cookies --header {{ jdk_header }} {{ jdk_url }} creates={{ jdk_file }}
60 - name: extract jdk
61 command: tar -zxf {{ jdk_file }} creates={{ jdk_extract_dir }}
62 - name: install (move) jdk to jvm dir
63 command: mv {{ jdk_extract_dir }} {{ jdk_install_dir }} creates={{ jdk_install_dir }}/{{jdk_extract_dir}}
64 sudo: yes
65 - name: set default java
66 command: update-alternatives --install {{ item.java_bin }} {{ item.java_bin_name }} {{ jdk_install_dir }}/{{ jdk_extract_dir }}/bin/{{ item.java_bin_name }} {{ jdk_priority }}
67 sudo: yes
68 with_items:
69 - { java_bin: "/usr/bin/java", java_bin_name: "java" }
70 - { java_bin: "/usr/bin/javac", java_bin_name: "javac" }
71 - { java_bin: "/usr/bin/javaws", java_bin_name: "javaws" }
72 - name: link java for programs that arent smart enough to know where it is (FHoSS)
73 file: dest=/bin/java src=/usr/bin/java state=link
74 sudo: yes
75
76 - name: ensure IMS directories exist
77 file: path={{ item }} state=directory
78 sudo: yes
79 with_items:
80 - /opt
81 - "{{ oims_dir }}"
82
83 - name: checkout SER code
84 subversion: repo={{ ser_repo }} dest={{ ser_dir }}
85 sudo: yes
86 - name: checkout HSS mgmt code
87 subversion: repo={{ fhoss_repo }} dest={{ fhoss_dir }}
88 sudo: yes
89
90 - name: make Sip Express Router
91 command: make install-libs all chdir={{ ser_dir }}
92 sudo: yes
93
94 - name: compile and build FHoSS (not idempodent)
95 shell: ant {{ item }} -Dfile.encoding=UTF8 chdir={{ fhoss_dir }}
96 sudo: yes
97 with_items:
98 - compile
99 - deploy
100
101 - name: fix FHoSS directory permissions
102 file: path={{ fhoss_dir }}/deploy state=directory recurse=yes mode=0777
103 sudo: yes
104
105 - name: start mysql service
106 service: name=mysql state=started
107
108 - name: ensure mysql .my.cnf file deployed (root password credentials)
109 template: src=files/my.cnf dest=/root/.my.cnf owner=root mode=0600
110 sudo: yes
111 notify:
112 - restart mysql
113
114 - name: update mysql root password for all root accounts
115 mysql_user:
116 host={{ item }}
117 login_user=root
118 login_password={{ mysql_root_password }}
119 name=student
120 password={{ mysql_root_password }}
121 state=present
122 priv=*.*:ALL,GRANT
123 sudo: yes
124 with_items:
125 - "{{ ansible_hostname }}"
126 - 127.0.0.1
127 - ::1
128 - localhost
129
130 #- name: import sql databases
131 # mysql_db:
132 # login_user=root
133 # login_password={{ mysql_root_password }}
134 # login_host=localhost
135 # state=import
136 # name={{ item.db }}
137 # target={{ item.sql }}
138 # with_items:
139 # - { db: icscf, sql: "{{ ser_dir }}/cfg/icscf.sql" }
140 # - { db: hss_db, sql: "{{ fhoss_dir }}/scripts/hss_db.sql" }
141 # - { db: hss_db, sql: "{{ fhoss_dir }}/scripts/userdata.sql" }
142
143 - name: give up on the ansible module and just pipe sql into mysql
144 shell: mysql -u student --password={{ mysql_root_password }} < {{ item }}
145 with_items:
146 - "{{ ser_dir }}/cfg/icscf.sql"
147 - "{{ fhoss_dir }}/scripts/hss_db.sql"
148 - "{{ fhoss_dir }}/scripts/userdata.sql"
149
150 - name: grab all cfg xml and sh files into OpenIMSCore
151 shell: cp {{ item }} . chdir={{ oims_dir }}
152 sudo: yes
153 with_items:
154 - "{{ ser_dir }}/cfg/*.cfg"
155 - "{{ ser_dir }}/cfg/*.xml"
156 - "{{ ser_dir }}/cfg/*.sh"
157
158 - name: add openims zone file to bind
159 command: cp /opt/OpenIMSCore/ser_ims/cfg/open-ims.dnszone /etc/bind
160 sudo: yes
161 notify:
162 - restart bind
163
164 - lineinfile:
165 dest=/etc/bind/named.conf.local
166 regexp="^zone "
167 line='zone "open-ims.test" { type master; file "/etc/bind/open-ims.dnszone"; };'
168 state=present
169 sudo: yes
170 notify:
171 - restart bind
172
173 - name: make student conf directories
174 file: path={{item}} state=directory
175 sudo: yes
176 with_items:
177 - /etc/studentconf
178 - /etc/studentconf/openimscore
179
180 - name: copy launchers and scripts into student folder
181 copy: src={{ item.src}} dest={{ item.dest }}
182 sudo: yes
183 with_items:
184 - { src: files/imsCore.sh, dest: /etc/studentconf/openimscore }
185 - { src: files/kill_tmux.desktop, dest: /usr/share/applications }
186 - { src: files/StartIMScore.desktop, dest: /usr/share/applications }
187
188 handlers:
189 - name: restart mysql
190 service: name=mysql state=restarted
191 sudo: yes
192
193 - name: restart bind
194 service: name=bind9 state=restarted
195 sudo: yes