diff --git a/map.jinja b/map.jinja index a8152a0..19e5628 100644 --- a/map.jinja +++ b/map.jinja @@ -1,102 +1,129 @@ {% set dirs = salt['grains.filter_by']({ 'Debian': { 'etc': '/etc', 'bin': '/usr/bin', 'include': '/usr/include', 'lib': '/usr/lib', 'man': '/usr/share/man', 'sbin': '/usr/sbin', }, 'FreeBSD' : { 'etc': '/usr/local/etc', 'bin': '/usr/local/bin', 'include': '/usr/local/include', 'lib': '/usr/local/lib', 'man': '/usr/local/man', 'sbin': '/usr/local/sbin', }, }, default='Debian') %} {% set services = salt['grains.filter_by']({ 'Debian': { 'manager': 'systemd', }, 'FreeBSD' : { 'manager': 'rc', }, }, default='Debian') %} {% set shells = salt['grains.filter_by']({ 'Debian': { 'bash': '/bin/bash', 'fish': '/usr/bin/fish', 'tcsh': '/usr/bin/tcsh', }, 'FreeBSD' : { 'bash': '/usr/local/bin/bash', 'fish': '/usr/local/bin/fish', 'tcsh': '/bin/tcsh', }, }, default='Debian') %} {% set paths = salt['grains.filter_by']({ 'FreeBSD': { 'sftp': '/usr/libexec/sftp-server', }, 'Debian': { 'sftp': '/usr/lib/openssh/sftp-server', }, 'RedHat': { 'sftp': '/usr/libexec/openssh/sftp-server', }, 'Arch': { 'sftp': '/usr/lib/ssh/sftp-server', }, }, default='FreeBSD') %} +{% set packages_prefixes = salt['grains.filter_by']({ + 'Debian': { + 'python2': '', + 'python3': 'python3-', + }, + 'RedHat': { + 'python2': 'python2-', + 'python3': 'python3-', + }, + 'FreeBSD' : { + 'python2': 'py27-', + 'python3': 'py36-', + 'rubygem': 'rubygem-', + }, +}, default='Debian') %} + {% set packages = salt['grains.filter_by']({ 'Debian' : { 'ag': 'silversearcher-ag', 'aspell-fr': 'aspell-fr', + 'aspell-en': 'aspell-en', 'certbot': 'certbot', 'cppunit': 'libcppunit-dev', 'emacs': 'emacs-nox', 'mariadb': 'mariadb-server', + 'node': 'nodejs', 'sphinx': 'python3-sphinx', 'tcltls': 'tcl-tls', + 'tdom': 'tdom', 'varnish': 'varnish', + 'verbiste': 'verbiste', }, 'RedHat': { 'ag': 'the_silver_searcher', 'aspell-fr': 'aspell-fr', 'certbot': 'python2-certbot', 'cppunit': 'cppunit-devel', 'emacs': 'emacs-nox', + 'exiftool': 'perl-Image-ExifTool', 'mariadb': 'mariadb-server', + 'node': 'nodejs', 'sphinx': 'python3-sphinx', 'tcltls': 'tcltls', 'varnish': 'varnish', }, 'Arch': { 'ag': 'the_silver_searcher', 'aspell-fr': 'aspell-fr', 'certbot': 'certbot', 'cppunit': 'cppunit', 'emacs': 'emacs-nox', 'mariadb': 'mariadb', 'sphinx': 'python-sphinx', 'tcltls': 'tcltls', 'varnish': 'varnish', }, 'FreeBSD' : { 'ag': 'the_silver_searcher', 'aspell-fr': 'fr-aspell', + 'aspell-en': 'en-aspell', 'certbot': 'py27-certbot', 'cppunit': 'cppunit', 'emacs': 'emacs-nox11', + 'exiftool': 'p5-Image-ExifTool-devel', 'mariadb': 'mariadb101-server', + 'node': 'node', 'sphinx': 'py27-sphinx', 'tcltls': 'tcltls', + 'tdom': 'tDOM', 'varnish': 'varnish5', + 'verbiste': 'fr-verbiste', }, }, default='Debian') %} diff --git a/roles/devserver/init.sls b/roles/devserver/init.sls new file mode 100644 index 0000000..a7ef190 --- /dev/null +++ b/roles/devserver/init.sls @@ -0,0 +1,10 @@ +# ------------------------------------------------------------- +# Salt — Provision a development server +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# Project: Nasqueron +# Created: 2017-10-20 +# License: Trivial work, not eligible to copyright +# ------------------------------------------------------------- + +include: + - .userland-software diff --git a/roles/devserver/userland-software/dev.sls b/roles/devserver/userland-software/dev.sls new file mode 100644 index 0000000..29b442d --- /dev/null +++ b/roles/devserver/userland-software/dev.sls @@ -0,0 +1,119 @@ +# ------------------------------------------------------------- +# Salt — Provision dev software +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# Project: Nasqueron +# Created: 2017-10-20 +# License: Trivial work, not eligible to copyright +# ------------------------------------------------------------- + +{% from "map.jinja" import packages, packages_prefixes with context %} + +# ------------------------------------------------------------- +# Java +# ------------------------------------------------------------- + +devserver_software_dev_java: + pkg: + - installed + - pkgs: + - openjdk8 + - apache-ant + - maven + +# ------------------------------------------------------------- +# .Net languages +# ------------------------------------------------------------- + +devserver_software_dev_dotnet: + pkg: + - installed + - pkgs: + - mono + +# ------------------------------------------------------------- +# Node +# ------------------------------------------------------------- + +devserver_software_dev_node: + pkg: + - installed + - pkgs: + - {{ packages.node }} + - npm + +devserver_node_packages: + npm.installed: + - pkgs: + - bower + - browserify + - gulp + - grunt + - react-tools + - require: + - pkg: devserver_software_dev_node + +# ------------------------------------------------------------- +# PHP +# ------------------------------------------------------------- + +devserver_software_dev_php: + pkg: + - installed + - pkgs: + - phpunit + +# ------------------------------------------------------------- +# Python +# ------------------------------------------------------------- + +devserver_software_dev_python: + pkg: + - installed + - pkgs: + - {{ packages_prefixes.python2 }}nltk + - {{ packages_prefixes.python2 }}numpy + - {{ packages_prefixes.python2 }}virtualenv + +# ------------------------------------------------------------- +# Ruby +# ------------------------------------------------------------- + +devserver_software_dev_ruby: + pkg: + - installed + - pkgs: + - {{ packages_prefixes.rubygem }}rubocop + +# ------------------------------------------------------------- +# Rust +# ------------------------------------------------------------- + +devserver_software_dev_rust: + pkg: + - installed + - pkgs: + - rust + +# ------------------------------------------------------------- +# TCL +# ------------------------------------------------------------- + +devserver_software_dev_tcl: + pkg: + - installed + - pkgs: + - rlwrap + - tcllib + - tclsoap + - {{ packages.tcltls }} + - {{ packages.tdom }} + +# ------------------------------------------------------------- +# Web development +# ------------------------------------------------------------- + +devserver_software_dev_web: + pkg: + - installed + - pkgs: + - memcached diff --git a/roles/devserver/userland-software/init.sls b/roles/devserver/userland-software/init.sls new file mode 100644 index 0000000..f8a4796 --- /dev/null +++ b/roles/devserver/userland-software/init.sls @@ -0,0 +1,16 @@ +# ------------------------------------------------------------- +# Salt — Provision software +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# Project: Nasqueron +# Created: 2017-10-20 +# License: Trivial work, not eligible to copyright +# ------------------------------------------------------------- + +include: + # Shell server content + - roles/shellserver/userland-software/base + - roles/shellserver/userland-software/irc + - roles/shellserver/userland-software/web + # Software specific for development servers + - .dev + - .misc diff --git a/roles/devserver/userland-software/misc.sls b/roles/devserver/userland-software/misc.sls new file mode 100644 index 0000000..f8c1046 --- /dev/null +++ b/roles/devserver/userland-software/misc.sls @@ -0,0 +1,94 @@ +# ------------------------------------------------------------- +# Salt — Provision dev software +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# Project: Nasqueron +# Created: 2017-10-20 +# License: Trivial work, not eligible to copyright +# ------------------------------------------------------------- + +{% from "map.jinja" import packages, packages_prefixes with context %} + +devserver_software_misc_vcs: + pkg: + - installed + - pkgs: + # VCS + - cvs + - fossil + - subversion + # Bridges + - cvs2svn + - {{ packages_prefixes.python2 }}hg-git + +devserver_software_misc_media: + pkg: + - installed + - pkgs: + - {{ packages.exiftool }} + - ffmpeg2theora + - opencore-amr + - opus + - speex + - speexdsp + - x265 + +devserver_software_misc_text_processing: + pkg: + - installed + - pkgs: + - antiword + - odt2txt + - texlive-full + +devserver_software_misc_security: + pkg: + - installed + - pkgs: + - aescrypt + - pwgen + - vault + +devserver_software_misc_tools: + pkg: + - installed + - pkgs: + - boxes + - cursive + - fusefs-s3fs + - gist + - p7zip + - primegen + - rsync + - unix2dos + {% if grains['os'] == 'FreeBSD' %} + - gawk + {% endif %} + +{% if grains['os'] == 'FreeBSD' %} +devserver_software_misc_ports: + pkg: + - installed + - pkgs: + - ccache + - portmaster + - portshaker + - porttools + - poudriere +{% endif %} + +devserver_software_misc_gadgets: + pkg: + - installed + - pkgs: + - asciiquarium + - binclock + - ditaa + - epte + - weatherspect + +devserver_software_misc_games: + pkg: + - installed + - pkgs: + - bsdgames + - textmaze diff --git a/roles/shellserver/userland-software/base.sls b/roles/shellserver/userland-software/base.sls index 83261bd..1775549 100644 --- a/roles/shellserver/userland-software/base.sls +++ b/roles/shellserver/userland-software/base.sls @@ -1,149 +1,157 @@ # ------------------------------------------------------------- # Salt — Provision base software # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Project: Nasqueron # Created: 2016-04-09 # License: Trivial work, not eligible to copyright # ------------------------------------------------------------- {% from "map.jinja" import packages with context %} # ------------------------------------------------------------- # Shells # ------------------------------------------------------------- shells: pkg: - installed - pkgs: - bash - fish - - tcsh - zsh + {% if grains['os'] != 'FreeBSD' %} + - tcsh + {% endif %} # ------------------------------------------------------------- # Editors # # Disclaimer: We don't caution the views of Richard Stallman # or the Church of Emacs positions. # See http://geekfeminism.wikia.com/wiki/EMACS_virgins_joke # ------------------------------------------------------------- editors: pkg: - installed - pkgs: - vim - nano - joe - {{ packages.emacs }} # ------------------------------------------------------------- # General UNIX utilities # ------------------------------------------------------------- utilities: pkg: - installed - pkgs: + - mosh - cmatrix - figlet - nmap - toilet + - tmux - tree - whois - woof {% if grains['os_family'] == 'Debian' %} - bsdmainutils - sockstat - dnsutils - sysvbanner - toilet-fonts {% endif %} {% if grains['os'] == 'FreeBSD' %} - figlet-fonts - bind-tools + - sudo + - coreutils + - wget {% endif %} # ------------------------------------------------------------- # Development # ------------------------------------------------------------- dev: pkg: - installed - pkgs: - autoconf - automake - git - - arcanist - colordiff - - strace - cmake - valgrind - {{ packages.cppunit }} - {{ packages.ag }} {% if grains['os_family'] == 'Debian' %} - php7.1-curl {% endif %} {% if grains['os'] != 'FreeBSD' %} + - arcanist - clang - llvm + - strace {% endif %} +{% if grains['os_family'] == 'Debian' %} dev_popular_libs: pkg: - installed - pkgs: - {% if grains['os_family'] == 'Debian' %} - libssl-dev - {% endif %} +{% endif %} # ------------------------------------------------------------- # Languages # ------------------------------------------------------------- languages_removed: pkg: - removed - pkgs: {% if grains['os_family'] == 'Debian' %} - php7.0 {% elif grains['os'] == 'FreeBSD' %} - php70 {% endif %} languages: pkg: - installed - pkgs: - python3 {% if grains['os_family'] == 'Debian' %} - tcl8.6-dev - php7.1 {% elif grains['os'] == 'FreeBSD' %} - tcl86 - php71 {% endif %} # ------------------------------------------------------------- # De facto standard libraries for languages # ------------------------------------------------------------- languages_libs: pkg: - installed - pkgs: - tcllib - {{ packages.tcltls }} # ------------------------------------------------------------- # Spelling and language utilities # ------------------------------------------------------------- spelling: pkg: - installed - pkgs: - - verbiste + - {{ packages.verbiste }} - {{ packages['aspell-fr'] }} + - {{ packages['aspell-en'] }} diff --git a/roles/shellserver/userland-software/web.sls b/roles/shellserver/userland-software/web.sls index 23c15c3..e52059a 100644 --- a/roles/shellserver/userland-software/web.sls +++ b/roles/shellserver/userland-software/web.sls @@ -1,25 +1,27 @@ # ------------------------------------------------------------- # Salt — Provision web software # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Project: Eglide # Created: 2016-06-12 # License: Trivial work, not eligible to copyright # ------------------------------------------------------------- +{% from "map.jinja" import packages with context %} + # ------------------------------------------------------------- # nginx # ------------------------------------------------------------- nginx: pkg.installed: [] service.running: - require: - pkg: nginx # ------------------------------------------------------------- # SSL certificates # ------------------------------------------------------------- letsencrypt: pkg.installed: - - name: letsencrypt + - name: {{ packages.certbot }}