From 1edac06e032b7f7f53a92a202351ad783cc1c5fd Mon Sep 17 00:00:00 2001 From: Will Bradley Date: Tue, 14 Jun 2016 16:17:13 -0700 Subject: [PATCH] Updating to a working state --- README.md | 20 ++++++- tasks/main.yml | 28 +++++---- templates/config.properties.j2 | 2 +- templates/mongodb-org-3.2.repo.j2 | 7 +++ templates/unifi.init.j2 | 97 +++++++++++++------------------ vars/main.yml | 15 +++-- 6 files changed, 90 insertions(+), 79 deletions(-) create mode 100644 templates/mongodb-org-3.2.repo.j2 diff --git a/README.md b/README.md index d2f4c36..830d262 100644 --- a/README.md +++ b/README.md @@ -9,12 +9,13 @@ Requirements ------------ - You need the [EPEL Repository](https://fedoraproject.org/wiki/EPEL) from Fedora Project enabled to be able to install the requirements (MongoDB etc) -- Ubiquiti's license does not allow redistribution of the software ZIP, so you must manually download the ZIP of the UniFi Controller software from the [Ubiquiti website](https://www.ubnt.com/download/unifi/) and save it to `files/UniFi.unix.zip`. The most recent tested version is "UniFi v5.0.6 Zip for DIY Unix/Linux" from 2016-06-01. +- Ubiquiti's license does not allow redistribution of the software ZIP, so you must manually download the ZIP of the UniFi Controller software from the [Ubiquiti website](https://www.ubnt.com/download/unifi/) and save it to `files/UniFi.unix.zip`. The most recent tested version is "UniFi v5.0.6 Zip for DIY Unix/Linux" from 2016-06-01. If you are including this role via Galaxy, you may download this file to your playbook's `files` directory instead of this role's `files` directory; both will work. Role Variables -------------- -- **unifi_controller_rhel.ntp_server** (optional) sets your preferred NTP server for the UniFi APs to use +- **unifi_controller_rhel_ntp_server** (optional) sets your preferred NTP server for the UniFi APs to use (default: `pool.ntp.org`) +- **unifi_controller_rhel_unifi_zip_file** (optional) sets the filename of the UniFi controller software on the Ansible system (default: `UniFi.unix.zip`) Dependencies ------------ @@ -24,11 +25,24 @@ n/a Example Playbook ---------------- +First, install this role via Galaxy by typing `sudo ansible-galaxy install zyphlar.unifi_controller_rhel` + +Then create and run an Ansible playbook like this: + - hosts: your_unifi_controllers - sudo: yes + become: true roles: - zyphlar.unifi_controller_rhel +Or, if you want to override some variables: + + - hosts: your_unifi_controllers + become: true + roles: + - some_other_role + - role: zyphlar.unifi_controller_rhel + unifi_controller_rhel_unifi_zip_file: UniFi.unix.5.0.6.zip + License ------- diff --git a/tasks/main.yml b/tasks/main.yml index 01e218b..4f8ea23 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -3,7 +3,10 @@ - name: abort if os is not suitable when: ansible_os_family != "RedHat" - fail: "msg={{ansible_os_family}} is not supported by this playbook" + fail: msg="{{ansible_os_family}} is not supported by this playbook" + +- name: create mongo repository + template: src=mongodb-org-3.2.repo.j2 dest=/etc/yum.repos.d/mongodb-org-3.2.repo owner=root group=root - name: install java and mongodb when: ansible_os_family == "RedHat" @@ -11,34 +14,37 @@ with_items: - java-1.6.0-openjdk - jakarta-commons-daemon-jsvc - - mongodb-server + - mongodb-org - name: no need for the standard mongod service service: name=mongod enabled=no state=stopped - name: setup unifi group - group: name={{ unifi_controller_rhel.unifi_gid }} system=yes state=present + group: name={{ unifi_controller_rhel_unifi_gid }} system=yes state=present - name: setup unifi user - user: name={{ unifi_controller_rhel.unifi_uid }} home={{ unifi_controller_rhel.unifi_prefix }}/UniFi createhome=no shell=/sbin/nologin system=yes state=present + user: name={{ unifi_controller_rhel_unifi_uid }} home={{ unifi_controller_rhel_unifi_prefix }}/UniFi createhome=no shell=/sbin/nologin system=yes state=present - name: copy unifi zipball to host - copy: src={{ unifi_controller_rhel.unifi_zip_file }} dest={{ unifi_controller_rhel.unifi_zip_dest }} + copy: src={{ unifi_controller_rhel_unifi_zip_file }} dest={{ unifi_controller_rhel_unifi_zip_dest }} force=no - name: extract unifi - command: /usr/bin/unzip -o {{ unifi_controller_rhel.unifi_zip_dest }} -d {{ unifi_controller_rhel.unifi_prefix }} creates=/opt/UniFi + command: /usr/bin/unzip -o {{ unifi_controller_rhel_unifi_zip_dest }} -d {{ unifi_controller_rhel_unifi_prefix }} creates={{ unifi_controller_rhel_unifi_prefix }}/UniFi + +- name: create unifi data directory + file: dest={{ unifi_controller_rhel_unifi_prefix }}/UniFi/data state=directory - name: fix permissions - command: /bin/chown -R {{ unifi_controller_rhel.unifi_uid }}:{{ unifi_controller_rhel.unifi_gid }} {{ unifi_controller_rhel.unifi_prefix }}/UniFi + command: /bin/chown -R {{ unifi_controller_rhel_unifi_uid }}:{{ unifi_controller_rhel_unifi_gid }} {{ unifi_controller_rhel_unifi_prefix }}/UniFi - name: symlink mongod binary to where unifi path - file: src=/usr/bin/mongod dest={{ unifi_controller_rhel.unifi_prefix }}/UniFi/bin/mongod state=link + file: src=/usr/bin/mongod dest={{ unifi_controller_rhel_unifi_prefix }}/UniFi/bin/mongod state=link - name: install custom config.properties - template: src=config.properties.j2 dest={{ unifi_controller_rhel.unifi_prefix }}/UniFi/data/config.properties owner={{ unifi_controller_rhel.unifi_uid }} group={{ unifi_controller_rhel.unifi_gid }} + template: src=config.properties.j2 dest={{ unifi_controller_rhel_unifi_prefix }}/UniFi/data/config.properties owner={{ unifi_controller_rhel_unifi_uid }} group={{ unifi_controller_rhel_unifi_gid }} - name: install init script - template: src=unifi.init.j2 dest=/etc/init.d/unifi owner=root group=root mode=755 + template: src=unifi.init.j2 dest=/etc/init.d/UniFi owner=root group=root mode=755 - name: start unifi service - service: name=unifi enabled=yes state=started + service: name=UniFi enabled=yes state=started diff --git a/templates/config.properties.j2 b/templates/config.properties.j2 index c7ceb0c..a789598 100644 --- a/templates/config.properties.j2 +++ b/templates/config.properties.j2 @@ -1 +1 @@ -config.ntp_server={{ unifi_controller_rhel.ntp_server }} +config.ntp_server={{ unifi_controller_rhel_ntp_server }} diff --git a/templates/mongodb-org-3.2.repo.j2 b/templates/mongodb-org-3.2.repo.j2 new file mode 100644 index 0000000..0507fb1 --- /dev/null +++ b/templates/mongodb-org-3.2.repo.j2 @@ -0,0 +1,7 @@ +{# Note: expected ansible_distribution is "Amazon" or "RedHat" to be compatible with yum repos listed here https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/ -#} +[mongodb-org-3.2] +name=MongoDB Repository +baseurl=https://repo.mongodb.org/yum/{{ ansible_distribution|lower }}/2013.03/mongodb-org/3.2/x86_64/ +gpgcheck=1 +enabled=1 +gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc \ No newline at end of file diff --git a/templates/unifi.init.j2 b/templates/unifi.init.j2 index ea3f697..4d60725 100755 --- a/templates/unifi.init.j2 +++ b/templates/unifi.init.j2 @@ -1,68 +1,53 @@ #!/bin/bash # chkconfig: 2345 95 20 # description: UniFi system -# processname: unifi +# processname: UniFi -NAME="unifi" -DESC="Ubiquiti UniFi Controller" - -BASEDIR="{{ unifi_controller_rhel.unifi_prefix }}/UniFi" -MAINCLASS="com.ubnt.ace.Launcher" - -PIDFILE="/var/run/${NAME}/${NAME}.pid" -PATH=/bin:/usr/bin:/sbin:/usr/sbin - -JAVA_HOME="{{ unifi_controller_rhel.java_home }}" -# JSVC - for running java apps as services -JSVC=`which jsvc` -#JSVC_OPTS="-debug" -JSVC_OPTS="${JSVC_OPTS}\ - -home ${JAVA_HOME} \ - -cp /usr/share/java/commons-daemon.jar:${BASEDIR}/lib/ace.jar \ - -pidfile ${PIDFILE} \ - -outfile SYSLOG \ - -errfile SYSLOG \ - -Djava.awt.headless=true -Xmx1024M" - -# Source function library. -. /etc/init.d/functions - -[ -d /var/run/${NAME} ] || mkdir -p /var/run/${NAME} -cd ${BASEDIR} - -ctrl_start() { - ${JSVC} ${JSVC_OPTS} ${MAINCLASS} start +ctrl_start() +{ +java -jar {{ unifi_controller_rhel_unifi_prefix }}/UniFi/lib/ace.jar start & } -ctrl_stop() { - ${JSVC} ${JSVC_OPTS} ${MAINCLASS} stop + +ctrl_stop() +{ +java -jar {{ unifi_controller_rhel_unifi_prefix }}/UniFi/lib/ace.jar stop & } -ctrl_restart() { - ctrl_stop - sleep 3 - ctrl_start +ctrl_restart() +{ +ctrl_stop +sleep 1 +ctrl_start } case "$1" in -start) - echo -n "starting UniFi system ..." - ctrl_start - echo " service started" - ;; -stop) - echo -n "stopping UniFi system ..." - ctrl_stop - echo " service stopped" - ;; -restart) - echo -n "restarting UniFi system ..." - ctrl_restart - echo "service restarted" - ;; -*) - echo "usage: service unifi {start|stop|restart}" - ;; -esac -exit 0 +start) + +echo -n "starting UniFi system" +ctrl_start +echo " service started" +;; + +stop) + +echo -n "stopping UniFi system" +ctrl_stop +echo " service stopped" +;; + +restart) + +echo -n "restarting UniFi system" +ctrl_restart +echo "service restarted" +;; + +*) + +echo "usage: service UniFi {start|stop|restart}" +;; + +esac +exit 0 \ No newline at end of file diff --git a/vars/main.yml b/vars/main.yml index f1c1d89..a27fa67 100644 --- a/vars/main.yml +++ b/vars/main.yml @@ -1,10 +1,9 @@ --- # vars file for unifi_controller_rhel - -- unifi_controller_rhel.ntp_server: pool.ntp.org -- unifi_controller_rhel.unifi_zip_file: UniFi.unix.zip -- unifi_controller_rhel.unifi_zip_dest: /usr/local/src/UniFi-2.4.6.zip -- unifi_controller_rhel.unifi_prefix: /opt -- unifi_controller_rhel.unifi_uid: unifi -- unifi_controller_rhel.unifi_gid: unifi -- unifi_controller_rhel.java_home: /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64 +unifi_controller_rhel_ntp_server: pool.ntp.org +unifi_controller_rhel_unifi_zip_file: UniFi.unix.zip +unifi_controller_rhel_unifi_zip_dest: /usr/local/src/UniFi.zip +unifi_controller_rhel_unifi_prefix: /opt +unifi_controller_rhel_unifi_uid: unifi +unifi_controller_rhel_unifi_gid: unifi +unifi_controller_rhel_java_home: /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64