--- # This role installs packages that every Mastodon server needs and does common # node setup - name: Install python-apt, aptitude, and debconf-utils shell: apt-get update && apt-get -y install python-apt aptitude debconf-utils - name: Do any package upgrades apt: upgrade=dist - name: Set default locale to en_US.UTF-8 debconf: name=locales question='locales/default_environment_locale' value=en_US.UTF-8 vtype='select' - name: Generate locales debconf: name=locales question='locales/locales_to_be_generated' value='en_US.UTF-8 UTF-8' vtype='multiselect' - name: Set timezone area debconf: name=tzdata question='tzdata/Areas' value='Etc' vtype='select' - name: Set timezone debconf: name=tzdata question='tzdata/Zones/Etc' value='UTC' vtype='select' notify: - restart rsyslog - name: Add Nodesource apt key apt_key: url="https://deb.nodesource.com/gpgkey/nodesource.gpg.key" state=present - name: Add Nodesource apt repositories apt_repository: repo={{ item }} state=present with_items: - "deb https://deb.nodesource.com/node_8.x {{ ansible_distribution_release }} main" - "deb-src https://deb.nodesource.com/node_8.x {{ ansible_distribution_release }} main" - name: Add Yarnpkg apt key apt_key: url="https://dl.yarnpkg.com/debian/pubkey.gpg" state=present - name: Add Yarnpkg apt repository apt_repository: repo="deb https://dl.yarnpkg.com/debian/ stable main" state=present # Note that we don't install nginx, letsencrypt, postgresql and redis here, that will be in different roles - name: Update apt cache and install various dependencies apt: name={{ item }} state=latest update_cache=yes with_items: - imagemagick - ffmpeg - libpq-dev - libxml2-dev - libxslt1-dev - file - git-core - g++ - libprotobuf-dev - protobuf-compiler - pkg-config - nodejs - gcc - autoconf - bison - build-essential - libssl-dev - libyaml-dev - libreadline6-dev - zlib1g-dev - libncurses5-dev - libffi-dev - libgdbm-dev - yarn - libidn11-dev - libicu-dev - libjemalloc1 - libjemalloc-dev - name: Install xenial specific deps when: ansible_distribution_release == 'xenial' apt: name={{ item }} state=latest update_cache=yes with_items: - libgdbm3 - name: Install bionic specific deps when: ansible_distribution_release == 'bionic' apt: name={{ item }} state=latest update_cache=yes with_items: - libgdbm5 - name: Add mastodon system user user: name=mastodon shell=/bin/bash state=present