{"id":256,"date":"2020-11-14T10:27:31","date_gmt":"2020-11-14T08:27:31","guid":{"rendered":"https:\/\/jochem.jochemenbianca.nl\/?p=256"},"modified":"2020-11-18T19:44:18","modified_gmt":"2020-11-18T17:44:18","slug":"install-kopano-community-with-ansible","status":"publish","type":"post","link":"https:\/\/jochem.jochemenbianca.nl\/?p=256","title":{"rendered":"Installatie Kopano Community met behulp van Ansible"},"content":{"rendered":"<p>Vanaf 1 januari 2021 ga ik aan de slag bij een nieuw bedrijf, genaamd <a href=\"https:\/\/www.smoose.nl\">Smoose<\/a> 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.<br \/>\nEen van de pakketten waar Smoose ook mee bezig is, is Kopano. Een groupware suite welke van origine uit de Zarafa stal komt.<br \/>\nNu 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.<\/p>\n<p>De yaml file ziet er als volgt uit:<\/p>\n<pre>- hosts: kopano\r\n  gather_facts: yes\r\n  become: yes\r\n  vars:\r\n    mysql_root_password: \"password\"\r\n    kopano_mysql_user: \"kopano\"\r\n    kopano_mysql_password: \"kopanopassword\"\r\n    kopano_core_file: \"core-10.0.6.502.1b60234-Ubuntu_20.04-amd64.tar.gz\"\r\n    kopano_webapp_file: \"webapp-5.0.0.28%2B1913.83ea1a8-Ubuntu_20.04-all.tar.gz\"\r\n    ldap_uri : 'ldap:\/\/freeipa:389'\r\n    ldap_sbase : 'cn=users,cn=accounts,dc=local,dc=freeipa,dc=net'\r\n    ldap_admin: ''\r\n    ldap_passwd: ''\r\n  tasks:\r\n  - name: Install on Ubuntu\r\n    block:\r\n      - name: Update and install packages\r\n        apt:\r\n          name: ['vim','git','mariadb-common','mariadb-server','python3-pymysql','apache2','libapache2-mod-php']\r\n          update_cache: yes\r\n          force_apt_get: yes\r\n          state: latest\r\n      - name: Create Database\r\n        mysql_db:\r\n          name: kopano\r\n          state: present\r\n          login_user: root\r\n          login_password: \"\"\r\n          login_unix_socket: \/var\/run\/mysqld\/mysqld.sock\r\n      - mysql_user:\r\n          login_user: root\r\n          login_password: \"\"\r\n          login_unix_socket: \/var\/run\/mysqld\/mysqld.sock\r\n          user: \"{{ kopano_mysql_user }}\" \r\n          check_implicit_admin: true\r\n          password: \"{{ kopano_mysql_password }}\"\r\n          host: localhost\r\n          priv: \"kopano.*:ALL,GRANT\"\r\n          append_privs: yes\r\n      - name: Download and extract Kopano community files\r\n        file:\r\n          path: \/home\/kopano\/amd64\r\n          state: directory\r\n      - unarchive:\r\n          src: \"https:\/\/download.kopano.io\/community\/core%3A\/{{ kopano_core_file }}\"\r\n          dest: \/home\/kopano\/amd64\r\n          remote_src: yes\r\n      - unarchive:\r\n          src: \"https:\/\/download.kopano.io\/community\/webapp%3A\/{{ kopano_webapp_file }}\"\r\n          dest: \/home\/kopano\/amd64\r\n          remote_src: yes\r\n      - shell: apt-ftparchive packages amd64\/ &gt; amd64\/Packages\r\n        args:\r\n          chdir: \/home\/kopano\/\r\n      - lineinfile:\r\n         path: \/etc\/apt\/sources.list.d\/kopano-com.list\r\n         line: 'deb [trusted=yes] file:\/home\/kopano amd64\/'\r\n         create: yes\r\n         state: present\r\n      - apt:\r\n          name: ['kopano-server-packages','kopano-webapp']\r\n          update_cache: yes\r\n          force_apt_get: yes\r\n      - replace:\r\n          path: \/etc\/kopano\/webapp\/config.php\r\n          regexp: '^(.*)SECURE_COOKIES(.*)$'\r\n          replace: \"define(\\\"SECURE_COOKIES\\\", false);\"\r\n      - replace:\r\n          path: \/etc\/kopano\/server.cfg\r\n          regexp: '^(.*)mysql_user(.*)$'\r\n          replace: \"mysql_user = {{ kopano_mysql_user }}\"\r\n      - replace:\r\n          path: \/etc\/kopano\/server.cfg\r\n          regexp: '^(.*)mysql_password(.*)$'\r\n          replace: \"mysql_password = {{ kopano_mysql_password }}\"\r\n      - replace:\r\n          path: \/etc\/kopano\/server.cfg\r\n          regexp: '^(.*)user_plugin (.*)$'\r\n          replace: \"user_plugin = ldap\"\r\n      - replace:\r\n          path: \/etc\/kopano\/server.cfg\r\n          regexp: '^(.*)user_plugin_config(.*)$'\r\n          replace: \"user_plugin_config = \/etc\/kopano\/ldap.cfg\"\r\n      - template:\r\n          src: ldap.cfg.j2\r\n          dest: \/etc\/kopano\/ldap.cfg\r\n          backup: yes\r\n      - service:\r\n          name: kopano-server\r\n          state: restarted\r\n      - service:\r\n          name: apache2\r\n          state: restarted\r\n    when: ansible_facts['os_family'] == \"Debian\"\r\n<\/pre>\n<p>We beginnen met het toevoegen van de host en de variabelen.<br \/>\nBelangrijk is de kopano_core_file en de kopano_webapp_file. Deze verwijzen naar de bestandsnaam op: <a href=\"https:\/\/download.kopano.io\/community\/core%3A\/\">https:\/\/download.kopano.io\/community\/core%3A\/<\/a> en <a href=\"https:\/\/download.kopano.io\/community\/webapp%3A\/\">https:\/\/download.kopano.io\/community\/webapp%3A\/<\/a> Hier kun je de bestandsnaam vinden. Je hebt zo dus de laatste installatie van de Kopano core en de Kopano webapp.<br \/>\nOok moet de ldap_sbase worden aangepast aan de tree zoals die in je FreeIPA bestaat. Waarschijnlijk is dat vooral een aanpassing van de dc &#8220;stukjes&#8221;.<br \/>\nVervolgens wordt gecontroleerd of je op Ubuntu gaat installeren.<br \/>\nDaarna installeren we een aantal dependencies om alles goed te kunnen installeren.<br \/>\nDe 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:<\/p>\n<pre>!include \/usr\/share\/kopano\/ldap.openldap.cfg\r\n\r\nldap_uri = {{ ldap_uri }}\r\nldap_bind_user = {{ ldap_admin }}\r\nldap_bind_passwd = {{ ldap_passwd }}\r\nldap_search_base = {{ ldap_sbase }}\r\n<\/pre>\n<p>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:<\/p>\n<p><iframe loading=\"lazy\" src=\"https:\/\/www.youtube.com\/embed\/letyVib6FE8\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<p>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.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>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 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,3],"tags":[],"class_list":["post-256","post","type-post","status-publish","format-standard","hentry","category-ansible","category-open-source"],"_links":{"self":[{"href":"https:\/\/jochem.jochemenbianca.nl\/index.php?rest_route=\/wp\/v2\/posts\/256","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jochem.jochemenbianca.nl\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jochem.jochemenbianca.nl\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jochem.jochemenbianca.nl\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/jochem.jochemenbianca.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=256"}],"version-history":[{"count":4,"href":"https:\/\/jochem.jochemenbianca.nl\/index.php?rest_route=\/wp\/v2\/posts\/256\/revisions"}],"predecessor-version":[{"id":261,"href":"https:\/\/jochem.jochemenbianca.nl\/index.php?rest_route=\/wp\/v2\/posts\/256\/revisions\/261"}],"wp:attachment":[{"href":"https:\/\/jochem.jochemenbianca.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=256"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jochem.jochemenbianca.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=256"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jochem.jochemenbianca.nl\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=256"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}