diff --git a/.travis.yml b/.travis.yml index e6890903552e030ed9d2b8d45a5f36799e320819..8d0c9aeffa2b3714358672200a76b1f61a966891 100644 --- a/.travis.yml +++ b/.travis.yml @@ -58,7 +58,7 @@ jobs: ## Define the rest of the matrix based on Kitchen testing # Make sure the instances listed below match up with # the `platforms` defined in `kitchen.yml` - # - env: INSTANCE=tomcat-install-debian-10-master-py3 + - env: INSTANCE=tomcat-install-debian-10-master-py3 - env: INSTANCE=tomcat-install-ubuntu-1804-master-py3 # - env: INSTANCE=tomcat-extend-ubuntu-1804-master-py3 # - env: INSTANCE=tomcat-install-centos-8-master-py3 diff --git a/.yamllint b/.yamllint index 61c747d35fb2f361182bdf7a678379cb28898c21..e80ebacdf03ceb17b2b6f6e7812548b691605d69 100644 --- a/.yamllint +++ b/.yamllint @@ -12,7 +12,7 @@ ignore: | node_modules/ test/**/states/**/*.sls .kitchen/ - tomcat/osmap.yaml + tomcat/osfamilymap.yaml yaml-files: # Default settings diff --git a/test/integration/tomcat_install/controls/packages_spec.rb b/test/integration/tomcat_install/controls/packages_spec.rb index a5190b70d8e8f97401284367c1ed9fff1382876f..2a93d78ea169c11a89929e6b58be60d703130864 100644 --- a/test/integration/tomcat_install/controls/packages_spec.rb +++ b/test/integration/tomcat_install/controls/packages_spec.rb @@ -7,7 +7,12 @@ control 'Tomcat packages' do packages = case platform[:family] when 'debian' - %w[tomcat8 haveged] + case platform[:release] + when /^10/ + %w[tomcat9 haveged] + else + %w[tomcat8 haveged] + end when 'redhat', 'fedora', 'suse' %w[tomcat] end diff --git a/test/integration/tomcat_install/controls/services_spec.rb b/test/integration/tomcat_install/controls/services_spec.rb index 088a70e63a4cb0fd90717259bfb752ee57a2a525..32b814de24a832fbbcd02f9eb36f9738d885a0f0 100644 --- a/test/integration/tomcat_install/controls/services_spec.rb +++ b/test/integration/tomcat_install/controls/services_spec.rb @@ -8,7 +8,12 @@ control 'Tomcat services' do services = case platform[:family] when 'debian' - %w[tomcat8 haveged] + case platform[:release] + when /^10/ + %w[tomcat9 haveged] + else + %w[tomcat8 haveged] + end when 'redhat', 'fedora', 'suse' %w[tomcat] end diff --git a/test/integration/tomcat_install/controls/yaml_dump_spec.rb b/test/integration/tomcat_install/controls/yaml_dump_spec.rb index b27838a2e3445c141f91c3bec3f526f29620c1c6..7723adda660b4212d269315e2e1612980d2b355c 100644 --- a/test/integration/tomcat_install/controls/yaml_dump_spec.rb +++ b/test/integration/tomcat_install/controls/yaml_dump_spec.rb @@ -7,7 +7,28 @@ control 'Tomcat `map.jinja` YAML dump' do yaml_dump += case platform[:family] when 'debian' + case platform[:release] + when /^10/ + conf_dir = '/etc/tomcat9' + group = 'tomcat' + main_config = '/etc/default/tomcat9' + manager_pkg = 'tomcat9-admin' + pkg = 'tomcat9' + service = 'tomcat9' + user = 'tomcat' + ver = 9 + else + conf_dir = '/etc/tomcat8' + group = 'tomcat8' + main_config = '/etc/default/tomcat8' + manager_pkg = 'tomcat8-admin' + pkg = 'tomcat8' + service = 'tomcat8' + user = 'tomcat8' + ver = 8 + end <<~YAML_DUMP.chomp + arch: amd64 authbind: 'no' catalina_base: /usr/share/tomcat catalina_home: /usr/share/tomcat @@ -15,7 +36,7 @@ control 'Tomcat `map.jinja` YAML dump' do catalina_tmpdir: /var/cache/tomcat/temp cluster: simple: true - conf_dir: /etc/tomcat8 + conf_dir: #{conf_dir} connectors: example_connector: port: 8443 @@ -72,7 +93,7 @@ control 'Tomcat `map.jinja` YAML dump' do global: simpleValue type: java.lang.Integer expires_when: 2 weeks - group: tomcat8 + group: #{group} haveged_enabled: true id: - example.com @@ -91,7 +112,7 @@ control 'Tomcat `map.jinja` YAML dump' do soft: 64000 logfile_compress: 1 logfile_days: 14 - main_config: /etc/default/tomcat8 + main_config: #{main_config} main_config_template: salt://tomcat/files/tomcat-default-Debian.template manager: roles: @@ -110,7 +131,7 @@ control 'Tomcat `map.jinja` YAML dump' do - manager-script - manager-jmx - manager-status - manager_pkg: tomcat8-admin + manager_pkg: #{manager_pkg} native_pkg: libtcnative-1 other_contexts: other-contexts: @@ -137,10 +158,10 @@ control 'Tomcat `map.jinja` YAML dump' do className: org.apache.catalina.webresources.DirResourceSet base: /var/lib/tomcat8/appconfig webAppMount: /WEB-INF/classes - pkg: tomcat8 + pkg: #{pkg} resources: {} security: 'no' - service: tomcat8 + service: #{service} service_enabled: true service_running: false sites: @@ -175,12 +196,13 @@ control 'Tomcat `map.jinja` YAML dump' do pattern: '%h %l %u %t "%m http://%v%U %H" %s %b "%{Referer}i" "%{User-Agent}i" %D' - className: org.apache.catalina.authenticator.SingleSignOn - user: tomcat8 - ver: 8 + user: #{user} + ver: #{ver} with_haveged: true YAML_DUMP when 'redhat', 'fedora' <<~YAML_DUMP.chomp + arch: amd64 authbind: 'no' catalina_base: /usr/share/tomcat catalina_home: /usr/share/tomcat @@ -354,6 +376,7 @@ control 'Tomcat `map.jinja` YAML dump' do YAML_DUMP when 'suse' <<~YAML_DUMP.chomp + arch: amd64 authbind: 'no' catalina_base: /usr/share/tomcat catalina_home: /usr/share/tomcat diff --git a/tomcat/codenamemap.yaml b/tomcat/codenamemap.yaml deleted file mode 100644 index 9e4d14980c9383aee49e7d16c506cdcd757e1398..0000000000000000000000000000000000000000 --- a/tomcat/codenamemap.yaml +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -# vim: ft=yaml ---- -trusty: - ver: 7 - pkg: tomcat7 - manager_pkg: tomcat7-admin - conf_dir: /etc/tomcat7 - main_config: /etc/default/tomcat7 - main_config_template: salt://tomcat/files/tomcat-default-Debian.template - service: tomcat7 - user: tomcat7 - group: tomcat7 -wheezy: - pkg: tomcat7 - manager_pkg: tomcat7-admin - conf_dir: /etc/tomcat7 - main_config: /etc/default/tomcat7 - main_config_template: salt://tomcat/files/tomcat-default-Debian.template - service: tomcat7 - user: tomcat7 - group: tomcat7 diff --git a/tomcat/map.jinja b/tomcat/map.jinja index 987ca2423532d87a274a7f4b0e5f3d0a628578f2..d1fcea567b2e63cd9220453fa0bf3a4534a59245 100644 --- a/tomcat/map.jinja +++ b/tomcat/map.jinja @@ -1,25 +1,49 @@ # -*- coding: utf-8 -*- # vim: ft=jinja -{% import_yaml "tomcat/defaults.yaml" as defaults %} -{% import_yaml "tomcat/osmap.yaml" as osmap %} -{% import_yaml "tomcat/codenamemap.yaml" as codemap %} +{#- Get the `tplroot` from `tpldir` #} +{%- set tplroot = tpldir.split('/')[0] %} +{#- Start imports as #} +{%- import_yaml tplroot ~ "/defaults.yaml" as default_settings %} +{%- import_yaml tplroot ~ "/osarchmap.yaml" as osarchmap %} +{%- import_yaml tplroot ~ "/osfamilymap.yaml" as osfamilymap %} +{%- import_yaml tplroot ~ "/osmap.yaml" as osmap %} +{%- import_yaml tplroot ~ "/osfingermap.yaml" as osfingermap %} -{# get the settings for the os_family grain #} -{% set osfam = salt['grains.filter_by'](osmap) or {} %} -{# get the settings for the oscodename grain, os_family data will override - oscodename data #} -{% set oscode = salt['grains.filter_by'](codemap, - grain='oscodename', - merge=osfam) or {} %} +{#- Retrieve the config dict only once #} +{%- set _config = salt['config.get'](tplroot, default={}) %} -{# merge the os family/codename specific data over the defaults #} -{% do defaults.tomcat.update(oscode) %} +{%- set defaults = salt['grains.filter_by']( + default_settings, + default=tplroot, + merge=salt['grains.filter_by']( + osarchmap, + grain='osarch', + merge=salt['grains.filter_by']( + osfamilymap, + grain='os_family', + merge=salt['grains.filter_by']( + osmap, + grain='os', + merge=salt['grains.filter_by']( + osfingermap, + grain='osfinger', + merge=salt['grains.filter_by']( + _config, + default='lookup' + ) + ) + ) + ) + ) + ) +%} -{# merge the pillar:lookup dict into the defaults/os specific dict #} -{% set lookup = salt['pillar.get']('tomcat:lookup', - default=defaults.tomcat, - merge=True) %} +{%- set config = salt['grains.filter_by']( + {'defaults': defaults}, + default='defaults', + merge=_config + ) +%} -{# merge the actual tomcat pillar into the above combined dict #} -{% set tomcat = salt['pillar.get']('tomcat', default=lookup, merge=True) %} +{%- set tomcat = config %} diff --git a/tomcat/osarchmap.yaml b/tomcat/osarchmap.yaml new file mode 100644 index 0000000000000000000000000000000000000000..ab3bc1f4b23ddbb5eecb9b2a9bc18102e1215227 --- /dev/null +++ b/tomcat/osarchmap.yaml @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +# vim: ft=yaml +# +# Setup variables using grains['osarch'] based logic. +# You just need to add the key:values for an `osarch` that differ +# from `defaults.yaml`. +# Only add an `osarch` which is/will be supported by the formula. +# +# If you do not need to provide defaults via the `osarch` grain, +# you will need to provide at least an empty dict in this file, e.g. +# osarch: {} +--- +amd64: + arch: amd64 + +x86_64: + arch: amd64 + +386: + arch: 386 + +arm64: + arch: arm64 + +armv6l: + arch: armv6l + +armv7l: + arch: armv7l + +ppc64le: + arch: ppc64le + +s390x: + arch: s390x diff --git a/tomcat/osfamilymap.yaml b/tomcat/osfamilymap.yaml new file mode 100644 index 0000000000000000000000000000000000000000..bdec0c6466ab473c54b234d7e26201c6a7cacada --- /dev/null +++ b/tomcat/osfamilymap.yaml @@ -0,0 +1,98 @@ +# -*- coding: utf-8 -*- +# vim: ft=yaml +--- +Debian: + ver: 8 + pkg: tomcat8 + native_pkg: libtcnative-1 + manager_pkg: tomcat8-admin + with_haveged: true + haveged_enabled: true + conf_dir: /etc/tomcat8 + main_config: /etc/default/tomcat8 + main_config_template: salt://tomcat/files/tomcat-default-Debian.template + service: tomcat8 + user: tomcat8 + group: tomcat8 + java_home: /usr/lib/jvm/default-java + +RedHat: + native_pkg: tomcat-native + manager_pkg: tomcat-admin-webapps + main_config_template: salt://tomcat/files/tomcat-default-CentOS.template + +Suse: + ver: 8 + native_pkg: libtcnative-1-0 + manager_pkg: tomcat-admin-webapps + main_config_template: salt://tomcat/files/tomcat-default-CentOS.template + +Gentoo: {} + +Arch: + pkg: tomcat8 + ver: 8 + service: tomcat8 + native_pkg: tomcat-native + conf_dir: /etc/tomcat8 + main_config: /usr/lib/systemd/system/tomcat8.service + main_config_template: salt://tomcat/files/tomcat-default-Arch.template + user: tomcat8 + group: tomcat8 + java_home: /usr/lib/jvm/default-runtime + jvm_tmp: /var/tmp/tomcat8/temp + catalina_pid: /var/run/tomcat8.pid + catalina_base: /usr/share/tomcat8 + catalina_home: /usr/share/tomcat8 + # Not used on Arch + manager_pkg: '' + +Alpine: {} + +FreeBSD: + native_pkg: tomcat-native + ini_config: /etc/rc.conf + java_home: /usr + +OpenBSD: {} + +Solaris: {} + +Windows: {} + +{%- if grains.os == 'MacOS' %} +{%- if salt['cmd.run']('/usr/libexec/java_home -F', output_loglevel="quiet") == 0 %} +{%- set darwin_javahome = salt['cmd.run']('/usr/libexec/java_home') %} +{%- else %} +{%- set darwin_javahome = "" %} +{%- endif %} +MacOS: + # yamllint disable rule:line-length + user: {{ salt['pillar.get']('tomcat:user', salt['cmd.run']("stat -f '%Su' /dev/console")) }} + group: {{ salt['pillar.get']('tomcat:group', salt['cmd.run']("stat -f '%Sg' /dev/console")) }} + # yamllint enable rule:line-length + + java_home: {{ darwin_javahome }} + service: homebrew.mxcl.tomcat + ver: 8 + pkg: tomcat + native_pkg: tomcat-native + conf_dir: /usr/local/opt/tomcat/libexec/conf + main_config: /usr/local/opt/tomcat/libexec/bin/setenv.sh + main_config_template: salt://tomcat/files/tomcat-default-CentOS.template + limits_prefix: /Library/LaunchAgents/maxfiles.plist + jvm_tmp: /usr/local/opt/tomcat/libexec/temp + catalina_base: /usr/local/opt/tomcat/libexec + catalina_home: /usr/local/opt/tomcat/libexec + catalina_tmpdir: /usr/local/opt/tomcat/libexec/temp + + # Not used on Darwin + manager_pkg: '' + with_haveged: false + haveged_enabled: false + + # Not verified on Darwin + cluster: + simple: false + +{%- endif %} diff --git a/tomcat/osfingermap.yaml b/tomcat/osfingermap.yaml new file mode 100644 index 0000000000000000000000000000000000000000..f1e70a6695d4317092d47cb2c94fb0ac71406bc2 --- /dev/null +++ b/tomcat/osfingermap.yaml @@ -0,0 +1,63 @@ +# -*- coding: utf-8 -*- +# vim: ft=yaml +--- +# os: Debian +Debian-10: + ver: 9 + pkg: tomcat9 + manager_pkg: tomcat9-admin + conf_dir: /etc/tomcat9 + main_config: /etc/default/tomcat9 + service: tomcat9 + user: tomcat + group: tomcat +Debian-9: {} +Debian-8: {} +Debian-7: + pkg: tomcat7 + manager_pkg: tomcat7-admin + conf_dir: /etc/tomcat7 + main_config: /etc/default/tomcat7 + main_config_template: salt://tomcat/files/tomcat-default-Debian.template + service: tomcat7 + user: tomcat7 + group: tomcat7 + +# os: Ubuntu +Ubuntu-18.04: {} +Ubuntu-16.04: {} +Ubuntu-14.04: + ver: 7 + pkg: tomcat7 + manager_pkg: tomcat7-admin + conf_dir: /etc/tomcat7 + main_config: /etc/default/tomcat7 + main_config_template: salt://tomcat/files/tomcat-default-Debian.template + service: tomcat7 + user: tomcat7 + group: tomcat7 + +# os: Fedora +Fedora-31: {} +Fedora-30: {} + +# os: CentOS +CentOS Linux-8: {} +CentOS Linux-7: {} +CentOS-6: {} + +# os: Amazon +Amazon Linux-2: {} +Amazon Linux AMI-2018: {} + +# os: SUSE +Leap-15: {} + +# os: FreeBSD +FreeBSD-12: {} + +# os: Windows +Windows-8.1: {} + +# os: Gentoo +Gentoo-2: {} diff --git a/tomcat/osmap.yaml b/tomcat/osmap.yaml index bc5bcd983540044fb1224970fb8d29a7afb96279..de11a67327c8df5c87f623d5f594bfd8ea414ed4 100644 --- a/tomcat/osmap.yaml +++ b/tomcat/osmap.yaml @@ -1,93 +1,33 @@ # -*- coding: utf-8 -*- # vim: ft=yaml +# +# Setup variables using grains['os'] based logic. +# You just need to add the key:values for an `os` that differ +# from `defaults.yaml` + `osarch.yaml` + `os_family.yaml`. +# Only add an `os` which is/will be supported by the formula. +# +# If you do not need to provide defaults via the `os` grain, +# you will need to provide at least an empty dict in this file, e.g. +# osmap: {} --- -Debian: - ver: 8 - pkg: tomcat8 - native_pkg: libtcnative-1 - manager_pkg: tomcat8-admin - with_haveged: true - haveged_enabled: true - conf_dir: /etc/tomcat8 - main_config: /etc/default/tomcat8 - main_config_template: salt://tomcat/files/tomcat-default-Debian.template - service: tomcat8 - user: tomcat8 - group: tomcat8 - java_home: /usr/lib/jvm/default-java -RedHat: - native_pkg: tomcat-native - manager_pkg: tomcat-admin-webapps - main_config_template: salt://tomcat/files/tomcat-default-CentOS.template -CentOS: - native_pkg: tomcat-native - manager_pkg: tomcat-admin-webapps - main_config_template: salt://tomcat/files/tomcat-default-CentOS.template -openSUSE: - ver: 8 - native_pkg: libtcnative-1-0 - manager_pkg: tomcat-admin-webapps - main_config_template: salt://tomcat/files/tomcat-default-CentOS.template -Suse: - ver: 8 - native_pkg: libtcnative-1-0 - manager_pkg: tomcat-admin-webapps - main_config_template: salt://tomcat/files/tomcat-default-CentOS.template -FreeBSD: - native_pkg: tomcat-native - ini_config: /etc/rc.conf - java_home: /usr -Arch: - pkg: tomcat8 - ver: 8 - service: tomcat8 - native_pkg: tomcat-native - conf_dir: /etc/tomcat8 - main_config: /usr/lib/systemd/system/tomcat8.service - main_config_template: salt://tomcat/files/tomcat-default-Arch.template - user: tomcat8 - group: tomcat8 - java_home: /usr/lib/jvm/default-runtime - jvm_tmp: /var/tmp/tomcat8/temp - catalina_pid: /var/run/tomcat8.pid - catalina_base: /usr/share/tomcat8 - catalina_home: /usr/share/tomcat8 - # Not used on Arch - manager_pkg: '' +# os_family: Debian +Ubuntu: {} +Raspbian: {} -{%- if grains.os == 'MacOS' %} -{%- if salt['cmd.run']('/usr/libexec/java_home -F', output_loglevel="quiet") == 0 %} -{%- set darwin_javahome = salt['cmd.run']('/usr/libexec/java_home') %} -{%- else %} -{%- set darwin_javahome = "" %} -{%- endif %} -MacOS: - # yamllint disable rule:line-length - user: {{ salt['pillar.get']('tomcat:user', salt['cmd.run']("stat -f '%Su' /dev/console")) }} - group: {{ salt['pillar.get']('tomcat:group', salt['cmd.run']("stat -f '%Sg' /dev/console")) }} - # yamllint enable rule:line-length +# os_family: RedHat +Fedora: {} +CentOS: {} +Amazon: {} - java_home: {{ darwin_javahome }} - service: homebrew.mxcl.tomcat - ver: 8 - pkg: tomcat - native_pkg: tomcat-native - conf_dir: /usr/local/opt/tomcat/libexec/conf - main_config: /usr/local/opt/tomcat/libexec/bin/setenv.sh - main_config_template: salt://tomcat/files/tomcat-default-CentOS.template - limits_prefix: /Library/LaunchAgents/maxfiles.plist - jvm_tmp: /usr/local/opt/tomcat/libexec/temp - catalina_base: /usr/local/opt/tomcat/libexec - catalina_home: /usr/local/opt/tomcat/libexec - catalina_tmpdir: /usr/local/opt/tomcat/libexec/temp +# os_family: Suse +SUSE: {} +openSUSE: {} - # Not used on Darwin - manager_pkg: '' - with_haveged: false - haveged_enabled: false +# os_family: Gentoo +Funtoo: {} - # Not verified on Darwin - cluster: - simple: false +# os_family: Arch +Manjaro: {} -{%- endif %} +# os_family: Solaris +SmartOS: {}