master
Raw Download raw file
  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