added tests with ubuntu 14.04

This commit is contained in:
Paul 2016-04-28 23:24:10 +02:00
parent 15379d2f4a
commit 7d058d7dbb
17 changed files with 440 additions and 1 deletions

View File

@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2016 Paul Lecuq
Copyright (c) 2014 Alexandros Giouzenis
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

96
README.md Normal file
View File

@ -0,0 +1,96 @@
Ansible Zimbra
=========
Install, configure and provision a Full Zimbra Server.
Requirements
------------
* CentOS 6, 7
* RHEL 6, 7
* Ubuntu 14.04
* Correctly configure DNS
* Correctly configued `/etc/hosts` file : now auto-configured by this ansible role
Role Variables
--------------
* `zimbra_download_url`, URL to download Zimbra
* `zimbra_file`, name of the downloaded file
* `zimbra_256sum_file`, `SHA256SUM` of the file
* `zimbra_password`, password for admin and everything
* `zimbra_default_domain`, default domain to create
**zimbra_domains**
* `name`, name of a domain
* `accounts`, Array of accounts
* `distribution_lists`, Array of Distribution Lists
**accounts**
* `name`, email of the account
* `password`, if empty the default pass is `12345678`
**distribution_lists**
* `name`, email of the Distribution List
* `members`, Array of email addresses of members
* `authorized_senders`, Array of domain accounts who can send email to the list
Example Playbook
----------------
```yaml
---
- hosts: all
sudo: yes
vars:
zimbra_download_url: https://files.zimbra.com/downloads/8.6.0_GA/zcs-8.6.0_GA_1153.RHEL6_64.20141215151155.tgz
zimbra_file: zcs-8.6.0_GA_1153.RHEL6_64.20141215151155
zimbra_256sum_file: c2278e6632b9ca72487afdf24da2545238e325338090a9d8ad6e99b39593561c
zimbra_password: Passw0rd
zimbra_default_domain: 'mydom.com'
zimbra_domains:
- name: 'mydom.com'
o: 'My Dom'
accounts:
- name: 'paul@mydom.com'
zimbra_is_admin_account: TRUE
password: Passw0rd
- name: 'mydom2.com'
o: 'My dom 2'
- name: 'mydom3.com'
o: 'My dom 3'
accounts:
- name: 'admin@mydom3.com'
password: Passw0rd
zimbra_is_domain_admin_account: TRUE
distribution_lists:
- name: 'user@mydom3.com'
members:
- '1@mydom4.com'
- '2@mydom3.com'
authorized_senders:
- 'paul@mydom.com'
- name: 'empty.com'
o: 'My dom 4'
roles:
- role: zimbra
```
License
-------
MIT
Author Information
------------------
Based on ansible-zimbradev by pbruna

2
defaults/main.yml Normal file
View File

@ -0,0 +1,2 @@
---
# defaults file for cartertdte.mta

5
handlers/main.yml Normal file
View File

@ -0,0 +1,5 @@
---
# handlers file for cartertdte.mta
- name: postfix restart
service: name=postfix state=restarted

128
meta/main.yml Normal file
View File

@ -0,0 +1,128 @@
---
galaxy_info:
author: your name
description:
company: your company (optional)
# Some suggested licenses:
# - BSD (default)
# - MIT
# - GPLv2
# - GPLv3
# - Apache
# - CC-BY
license: license (GPLv2, CC-BY, etc)
min_ansible_version: 1.2
#
# Below are all platforms currently available. Just uncomment
# the ones that apply to your role. If you don't see your
# platform on this list, let us know and we'll get it added!
#
#platforms:
#- name: EL
# versions:
# - all
# - 5
# - 6
# - 7
#- name: GenericUNIX
# versions:
# - all
# - any
#- name: Fedora
# versions:
# - all
# - 16
# - 17
# - 18
# - 19
# - 20
#- name: SmartOS
# versions:
# - all
# - any
#- name: opensuse
# versions:
# - all
# - 12.1
# - 12.2
# - 12.3
# - 13.1
# - 13.2
#- name: Amazon
# versions:
# - all
# - 2013.03
# - 2013.09
#- name: GenericBSD
# versions:
# - all
# - any
#- name: FreeBSD
# versions:
# - all
# - 8.0
# - 8.1
# - 8.2
# - 8.3
# - 8.4
# - 9.0
# - 9.1
# - 9.1
# - 9.2
#- name: Ubuntu
# versions:
# - all
# - lucid
# - maverick
# - natty
# - oneiric
# - precise
# - quantal
# - raring
# - saucy
# - trusty
#- name: SLES
# versions:
# - all
# - 10SP3
# - 10SP4
# - 11
# - 11SP1
# - 11SP2
# - 11SP3
#- name: GenericLinux
# versions:
# - all
# - any
#- name: Debian
# versions:
# - all
# - etch
# - lenny
# - squeeze
# - wheezy
#
# Below are all categories currently available. Just as with
# the platforms above, uncomment those that apply to your role.
#
#categories:
#- cloud
#- cloud:ec2
#- cloud:gce
#- cloud:rax
#- clustering
#- database
#- database:nosql
#- database:sql
#- development
#- monitoring
#- networking
#- packaging
#- system
#- web
dependencies: []
# List your role dependencies here, one per line. Only
# dependencies available via galaxy should be listed here.
# Be sure to remove the '[]' above if you add dependencies
# to this list.

7
tasks/CentOS.yml Normal file
View File

@ -0,0 +1,7 @@
---
# test
- name: Install Zimbra Dependencies
yum: name={{ item }} state=present
with_items:
- "{{ zimbra_required_packages }}"

6
tasks/Ubuntu.yml Normal file
View File

@ -0,0 +1,6 @@
---
# Install zimbra dependencies
- name: Install Zimbra Dependencies
apt: name={{ item }} state=present
with_items: zimbra_required_packages

View File

@ -0,0 +1,13 @@
# roles/bind/tasks/confgiure_zimbra.yml
# Configuration of Zimbra
---
- name: Copy configuration file
template:
src: zimbra_configuration.conf.j2
dest: /tmp/zimbra_configuration.conf
owner: zimbra
mode: '0644'
- name: Run Zimbra zmsetup.pl
command: /opt/zimbra/libexec/zmsetup.pl -c /tmp/zimbra_configuration.conf

15
tasks/install_zimbra.yml Normal file
View File

@ -0,0 +1,15 @@
# roles/bind/tasks/install_zimbra.yml
# Install Zimbra Software
---
- name: Untar Zimbra src
unarchive: src=/opt/src/{{ zimbra_file }}.tgz dest=/tmp/ copy=no
- name: Install Zimbra Software
shell: yes 'Y' | /tmp/{{ zimbra_file }}/install.sh -s --platform-override -x
args:
chdir: /tmp/{{ zimbra_file }}/
creates: /opt/zimbra/bin/zmprov
- name: Remove Zimbra src
file: path=/tmp/{{ zimbra_file }} state=absent

60
tasks/main.yml Normal file
View File

@ -0,0 +1,60 @@
---
# tasks file for cartertdte.mta
- name: Include distribution specific variables
include_vars: "{{ ansible_distribution }}.yml"
tags: zimbra
- include: CentOS.yml
when: ansible_distribution == "CentOS"
tags: zimbra
- include: Ubuntu.yml
when: ansible_distribution == "Ubuntu"
tags: zimbra
- name: Set hostname
command: hostname {{ zimbra_hostname }}
- name: Set hosts file
template:
src=hosts.j2
dest=/etc/hosts
owner=root
mode=0644
- name: Disable and stop dnsmasq service
service:
name=dnsmasq
state=stopped
enabled=no
- name: Create Source Software Directory
file: path=/opt/src state=directory
- name: 'Download Zimbra .tgz file'
get_url:
url={{ zimbra_download_url }}
dest=/opt/src/{{ zimbra_file }}.tgz
timeout=60
sha256sum={{ zimbra_256sum_file }}
- name: Check if Zimbra is installed
stat: path=/opt/zimbra/bin/zmprov
register: zimbra_check_installation
- include: install_zimbra.yml
when: zimbra_check_installation.stat.islnk is not defined
- name: Check if Zimbra is configured
command: /opt/zimbra/bin/zmprov gd {{ zimbra_default_domain }}
ignore_errors: yes
register: zimbra_check_configuration
- include: configure_zimbra.yml
when: zimbra_check_configuration.rc != 0
- name: Start zimbra
service: name=zimbra state=restarted
- include: provision_zimbra.yml

View File

@ -0,0 +1,17 @@
# roles/bind/tasks/provision_zimbra.yml
# Provision Zimbra with users and etc.
---
- name: Copy provisioning file
template:
src: zimbra_provisioning.j2
dest: /tmp/zimbra_provisioning
owner: zimbra
mode: '0644'
- name: Provision Zimbra
sudo_user: zimbra
shell: /opt/zimbra/bin/zmprov < /tmp/zimbra_provisioning
- name: Delete provisioning file
file: path=/tmp/zimbra_provisioning state=absent

7
templates/hosts.j2 Normal file
View File

@ -0,0 +1,7 @@
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
127.0.0.1 localhost
{{ ansible_eth0.ipv4.address }} {{ zimbra_hostname }}.{{ zimbra_default_domain }} {{ zimbra_hostname }}

2
templates/resolv.conf.j2 Normal file
View File

@ -0,0 +1,2 @@
search localdomain ffx.net
nameserver 127.0.0.1

View File

@ -0,0 +1,23 @@
CREATEADMINPASS="{{ zimbra_password }}"
LDAPAMAVISPASS="{{ zimbra_password }}"
LDAPPOSTPASS="{{ zimbra_password }}"
LDAPROOTPASS="{{ zimbra_password }}"
LDAPADMINPASS="{{ zimbra_password }}"
LDAPREPPASS="{{ zimbra_password }}"
LDAPBESSEARCHSET="set"
LDAPHOST="{{ zimbra_hostname }}"
LDAPPORT="389"
LDAPREPLICATIONTYPE="master"
LDAPSERVERID="2"
ldap_nginx_password="{{ zimbra_password }}"
ldap_bes_searcher_password="{{ zimbra_password }}"
AVDOMAIN="{{ zimbra_default_domain }}"
AVUSER="admin@{{ zimbra_default_domain }}"
CREATEADMIN="admin@{{ zimbra_default_domain }}"
CREATEDOMAIN="{{ zimbra_default_domain }}"
DOCREATEADMIN="yes"
DOCREATEDOMAIN="yes"
EXPANDMENU="no"
HOSTNAME="{{ zimbra_hostname }}"
DOTRAINSA="yes"
ENABLEGALSYNCACCOUNTS=""

View File

@ -0,0 +1,25 @@
{% if zimbra_domains is defined %}
{% for domain in zimbra_domains %}
cd {{ domain.name }} o {{ domain.o | default('--')}}
{% if domain.accounts is defined %}
{% for account in domain.accounts %}
ca {{ account.name }} {{ password | default(12345678)}} zimbraIsAdminAccount {{zimbra_is_admin_account | default('FALSE')}} zimbraIsDomainAdminAccount {{ zimbra_is_domain_admin_account | default('FALSE') }}
{% endfor %}
{% endif %}
{% if domain.distribution_lists is defined %}
{% for dl in domain.distribution_lists %}
cdl {{ dl.name }}
{% if dl.members is defined %}
{% for member in dl.members %}
adlm {{ dl.name }} {{ member }}
{% endfor %}
{% endif %}
{% if dl.authorized_senders is defined %}
{% for user in dl.authorized_senders %}
grr dl {{ dl.name }} usr {{ user }} sendToDistList
{% endfor %}
{% endif %}
{% endfor %}
{% endif %}
{% endfor %}
{% endif %}

18
vars/Ubuntu.yml Normal file
View File

@ -0,0 +1,18 @@
---
# vars file for cartertdte.mta
zimbra_required_packages:
- netcat
- sudo
- libidn11
- libgmp10
- libaio1
- libstdc++6
- unzip
- perl
- libperl5.18
- pax
- sysstat
- sqlite3
- resolvconf
- dnsmasq
- wget

15
vars/main.yml Normal file
View File

@ -0,0 +1,15 @@
---
# vars file for cartertdte.mta
zimbra_required_packages:
- nc
- sudo
- libidn
- gmp
- libaio
- libstdc++
- unzip
- perl-5.10.1
- sysstat
- sqlite
- libreoffice
- libreoffice-headless