Copyright (c) 2017 Benjamin Neff | |||||
Licensed under the Apache License, Version 2.0 (the "License"); | |||||
you may not use this file except in compliance with the License. | |||||
You may obtain a copy of the License at | |||||
http://www.apache.org/licenses/LICENSE-2.0 | |||||
Unless required by applicable law or agreed to in writing, software | |||||
distributed under the License is distributed on an "AS IS" BASIS, | |||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
See the License for the specific language governing permissions and | |||||
limitations under the License. |
# diaspora-formula | |||||
A saltstack formula to install and configure the distributed social network, [diaspora*](https://diasporafoundation.org/). | |||||
> Note: See the full [Salt Formulas installation and usage instructions](http://docs.saltstack.com/en/latest/topics/development/conventions/formulas.html). | |||||
> | |||||
> This formula only manages diaspora. You are responsible for installing/configuring PostgreSQL or MariaDB as appropriate. | |||||
## Available states | |||||
### `diaspora` | |||||
Install, configure and run diaspora as a service. | |||||
### `diaspora.install` | |||||
Installs diaspora from github. | |||||
### `diaspora.config` | |||||
Configures diaspora. | |||||
### `diaspora.service` | |||||
Creates a service for diaspora and runs it. |
diaspora: | |||||
repository: git://github.com/diaspora/diaspora.git | |||||
version: master | |||||
install_path: /srv/diaspora | |||||
ruby_version: 2.3.4 | |||||
install_redis: True | |||||
user: | |||||
username: diaspora | |||||
database: | |||||
type: postgresql | |||||
host: localhost | |||||
username: diaspora | |||||
password: | |||||
database: diaspora |
include: | |||||
- diaspora.install | |||||
# - diaspora.config | |||||
# - diaspora.service |
{%- from "diaspora/map.jinja" import diaspora with context %} | |||||
diaspora_dependencies: | |||||
pkg.installed: | |||||
- pkgs: {{ diaspora.dependencies|json }} | |||||
- require: | |||||
- pkg: diaspora_database_dependency | |||||
diaspora_database_dependency: | |||||
pkg.installed: | |||||
{%- if diaspora.database.type == "mysql" %} | |||||
- name: {{ diaspora.mysql_package }} | |||||
{%- else %} | |||||
- name: {{ diaspora.postgresql_package }} | |||||
{%- endif %} | |||||
{%- if diaspora.install_redis %} | |||||
redis_package: | |||||
pkg.installed: | |||||
- name: {{ diaspora.redis_package }} | |||||
{%- endif %} | |||||
diaspora_user: | |||||
user.present: | |||||
- name: {{ diaspora.user.username }} | |||||
{%- if 'shell' in diaspora.user %} | |||||
- shell: {{ diaspora.user.shell }} | |||||
{%- endif %} | |||||
{%- if 'home' in diaspora.user %} | |||||
- home: {{ diaspora.user.home }} | |||||
{%- endif %} | |||||
diaspora_rvm_gpg_key: | |||||
cmd.run: | |||||
- name: gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 | |||||
- unless: gpg --list-keys 409B6B1796C275462A1703113804BB82D39DC0E3 | |||||
- runas: {{ diaspora.user.username }} | |||||
- require: | |||||
- user: diaspora_user | |||||
diaspora_rvm_ruby: | |||||
rvm.installed: | |||||
- name: ruby-{{ diaspora.ruby_version }} | |||||
- user: {{ diaspora.user.username }} | |||||
- default: True | |||||
- require: | |||||
- pkg: diaspora_dependencies | |||||
- cmd: diaspora_rvm_gpg_key | |||||
diaspora_rvm_gemset: | |||||
rvm.gemset_present: | |||||
- name: diaspora | |||||
- ruby: ruby-{{ diaspora.ruby_version }} | |||||
- user: {{ diaspora.user.username }} | |||||
- require: | |||||
- rvm: diaspora_rvm_ruby | |||||
diaspora_install_bundler: | |||||
gem.installed: | |||||
- name: bundler | |||||
- user: {{ diaspora.user.username }} | |||||
- ruby: ruby-{{ diaspora.ruby_version }}@diaspora | |||||
- require: | |||||
- rvm: diaspora_rvm_gemset | |||||
diaspora_install_directory: | |||||
file.directory: | |||||
- name: {{ diaspora.install_path }} | |||||
- user: {{ diaspora.user.username }} | |||||
- mode: 755 | |||||
- require: | |||||
- user: diaspora_user | |||||
diaspora_git: | |||||
git.latest: | |||||
- name: {{ diaspora.repository }} | |||||
- rev: {{ diaspora.version }} | |||||
- target: {{ diaspora.install_path }} | |||||
- user: {{ diaspora.user.username }} | |||||
- require: | |||||
- file: diaspora_install_directory |
{% set os_map = salt['grains.filter_by']({ | |||||
'Debian': { | |||||
'dependencies' : [ | |||||
'build-essential', | |||||
'git', | |||||
'curl', | |||||
'libcurl4-openssl-dev', | |||||
'libssl-dev', | |||||
'libxml2-dev', | |||||
'libxslt1-dev', | |||||
'imagemagick', | |||||
'libmagickwand-dev', | |||||
'ghostscript', | |||||
'nodejs', | |||||
], | |||||
'postgresql_package': 'libpq-dev', | |||||
'mysql_package' : 'libmariadbclient-dev', | |||||
'redis_package' : 'redis-server', | |||||
'redis_service' : 'redis-server', | |||||
}, | |||||
'RedHat': { | |||||
'dependencies' : [ | |||||
'tar', | |||||
'make', | |||||
'automake', | |||||
'gcc', | |||||
'gcc-c++', | |||||
'git', | |||||
'net-tools', | |||||
'libcurl-devel', | |||||
'libxml2-devel', | |||||
'libffi-devel', | |||||
'libxslt-devel', | |||||
'wget', | |||||
'ImageMagick', | |||||
'nodejs', | |||||
], | |||||
'postgresql_package': 'postgresql-devel', | |||||
'mysql_package' : 'mariadb-devel', | |||||
'redis_package' : 'redis', | |||||
'redis_service' : 'redis', | |||||
}, | |||||
}, merge=salt['grains.filter_by']({ | |||||
'Ubuntu': { | |||||
'dependencies' : [ | |||||
'build-essential', | |||||
'git', | |||||
'curl', | |||||
'libcurl4-openssl-dev', | |||||
'libxml2-dev', | |||||
'libxslt1-dev', | |||||
'libgmp-dev', | |||||
'imagemagick', | |||||
'libmagickwand-dev', | |||||
'nodejs', | |||||
], | |||||
}, | |||||
}, grain='os', merge=salt['pillar.get']('diaspora:lookup'))) %} | |||||
{% import_yaml "diaspora/defaults.yaml" as defaults %} | |||||
{% do defaults.diaspora.update(os_map) %} | |||||
{% set diaspora = salt['pillar.get']('diaspora', default=defaults.diaspora, merge=True) %} |
diaspora: | |||||
repository: git://github.com/diaspora/diaspora.git | |||||
# version can be a branch or a tag | |||||
version: develop | |||||
install_path: /srv/diaspora | |||||
ruby_version: 2.3.4 | |||||
user: | |||||
username: diaspora | |||||
shell: /bin/zsh | |||||
database: | |||||
type: postgresql | |||||
host: localhost | |||||
username: diaspora | |||||
password: secret | |||||
database: diaspora |