Vanaf 1 januari 2021 ga ik aan de slag bij een nieuw bedrijf, genaamd Smoose als Open Source Engineer. Na meer dat 20 jaar in het onderwijs als systeem-/netwerkbeheerder te hebben gewerkt, heb ik besloten om nu eens mijn kennis van automation en open source meer in de praktijk te kunnen gaan brengen.
Een van de pakketten waar Smoose ook mee bezig is, is Kopano. Een groupware suite welke van origine uit de Zarafa stal komt.
Nu wordt er in de Open Source wereld ook veel gebruik gemaakt van FreeIPA als Identity Management systeem en daar wilde ik dus aan kunnen koppelen. De installatie van FreeIPA heb ik nog niet beschreven op mijn website, maar misschien doe ik dat in de toekomst nog. Voor dit project maak ik gebruik van Ubuntu 20.04. Dus de YAML file is daar ook op gebaseerd. Hoewel de eerste check die ik doe de controle is of de host wel Ubuntu draait. Ik zou de yaml file dus makkelijk kunnen uitbreiden om het te laten werken met CentOS.
De yaml file ziet er als volgt uit:
- hosts: kopano gather_facts: yes become: yes vars: mysql_root_password: "password" kopano_mysql_user: "kopano" kopano_mysql_password: "kopanopassword" kopano_core_file: "core-10.0.6.502.1b60234-Ubuntu_20.04-amd64.tar.gz" kopano_webapp_file: "webapp-5.0.0.28%2B1913.83ea1a8-Ubuntu_20.04-all.tar.gz" ldap_uri : 'ldap://freeipa:389' ldap_sbase : 'cn=users,cn=accounts,dc=local,dc=freeipa,dc=net' ldap_admin: '' ldap_passwd: '' tasks: - name: Install on Ubuntu block: - name: Update and install packages apt: name: ['vim','git','mariadb-common','mariadb-server','python3-pymysql','apache2','libapache2-mod-php'] update_cache: yes force_apt_get: yes state: latest - name: Create Database mysql_db: name: kopano state: present login_user: root login_password: "" login_unix_socket: /var/run/mysqld/mysqld.sock - mysql_user: login_user: root login_password: "" login_unix_socket: /var/run/mysqld/mysqld.sock user: "{{ kopano_mysql_user }}" check_implicit_admin: true password: "{{ kopano_mysql_password }}" host: localhost priv: "kopano.*:ALL,GRANT" append_privs: yes - name: Download and extract Kopano community files file: path: /home/kopano/amd64 state: directory - unarchive: src: "https://download.kopano.io/community/core%3A/{{ kopano_core_file }}" dest: /home/kopano/amd64 remote_src: yes - unarchive: src: "https://download.kopano.io/community/webapp%3A/{{ kopano_webapp_file }}" dest: /home/kopano/amd64 remote_src: yes - shell: apt-ftparchive packages amd64/ > amd64/Packages args: chdir: /home/kopano/ - lineinfile: path: /etc/apt/sources.list.d/kopano-com.list line: 'deb [trusted=yes] file:/home/kopano amd64/' create: yes state: present - apt: name: ['kopano-server-packages','kopano-webapp'] update_cache: yes force_apt_get: yes - replace: path: /etc/kopano/webapp/config.php regexp: '^(.*)SECURE_COOKIES(.*)$' replace: "define(\"SECURE_COOKIES\", false);" - replace: path: /etc/kopano/server.cfg regexp: '^(.*)mysql_user(.*)$' replace: "mysql_user = {{ kopano_mysql_user }}" - replace: path: /etc/kopano/server.cfg regexp: '^(.*)mysql_password(.*)$' replace: "mysql_password = {{ kopano_mysql_password }}" - replace: path: /etc/kopano/server.cfg regexp: '^(.*)user_plugin (.*)$' replace: "user_plugin = ldap" - replace: path: /etc/kopano/server.cfg regexp: '^(.*)user_plugin_config(.*)$' replace: "user_plugin_config = /etc/kopano/ldap.cfg" - template: src: ldap.cfg.j2 dest: /etc/kopano/ldap.cfg backup: yes - service: name: kopano-server state: restarted - service: name: apache2 state: restarted when: ansible_facts['os_family'] == "Debian"
We beginnen met het toevoegen van de host en de variabelen.
Belangrijk is de kopano_core_file en de kopano_webapp_file. Deze verwijzen naar de bestandsnaam op: https://download.kopano.io/community/core%3A/ en https://download.kopano.io/community/webapp%3A/ Hier kun je de bestandsnaam vinden. Je hebt zo dus de laatste installatie van de Kopano core en de Kopano webapp.
Ook moet de ldap_sbase worden aangepast aan de tree zoals die in je FreeIPA bestaat. Waarschijnlijk is dat vooral een aanpassing van de dc “stukjes”.
Vervolgens wordt gecontroleerd of je op Ubuntu gaat installeren.
Daarna installeren we een aantal dependencies om alles goed te kunnen installeren.
De rest van de yaml file zou duidelijk moeten zijn. Tijdens deze installatie maken we gebruik van een jinja2 template, voor de configuratie. Deze ziet er als volgt uit:
!include /usr/share/kopano/ldap.openldap.cfg ldap_uri = {{ ldap_uri }} ldap_bind_user = {{ ldap_admin }} ldap_bind_passwd = {{ ldap_passwd }} ldap_search_base = {{ ldap_sbase }}
De standaard ldap.cfg file is wat uitgebreider, maar dit is de basis om het te kunnen laten werken. Als je het script dan uitgaat voeren ziet het er als volgt uit:
Na deze installatie heb je dus een Kopano webapp omgeving op http://kopano.ip.address/webapp. Het is nog niet klaar voor productie. Kopano haalt namelijk nog niet het mailadres uit FreeIPA, maar inloggen lukt wel. Ook gaat dit nog niet over een secure https verbinding. Het begin is echter gemaakt.