feat(suse): support packaged installations
- add all components available in the default openSUSE Leap (OSS) repository to osfamilymap - introduce global manage_user_group toggle to prevent the formula from changing users and groups managed by system packages - allow configuration file override using pkg:component:<component>:config_file Signed-off-by: Georg Pfuetzenreuter <mail@georg-pfuetzenreuter.net>
This commit is contained in:
		
							parent
							
								
									d5cfeb0d80
								
							
						
					
					
						commit
						dcd585b322
					
				@ -31,7 +31,12 @@ prometheus-config-file-etc-file-directory:
 | 
			
		||||
 | 
			
		||||
prometheus-config-file-{{ name }}-file-managed:
 | 
			
		||||
  file.managed:
 | 
			
		||||
    - name: {{ p.dir.etc }}{{ p.div }}{{ name }}.yml
 | 
			
		||||
        {%- if 'config_file' in p.pkg.component[name] %}
 | 
			
		||||
        {%- set config_file = p.pkg.component[name]['config_file'] %}
 | 
			
		||||
        {%- else %}
 | 
			
		||||
        {%- set config_file = p.dir.etc ~ p.div ~ name ~ '.yml' %}
 | 
			
		||||
        {%- endif %}
 | 
			
		||||
    - name: {{ config_file }}
 | 
			
		||||
    - source: {{ files_switch(['config.yml.jinja'],
 | 
			
		||||
                              lookup='prometheus-config-file-' ~ name ~ '-file-managed'
 | 
			
		||||
                 )
 | 
			
		||||
@ -40,15 +45,19 @@ prometheus-config-file-{{ name }}-file-managed:
 | 
			
		||||
    - template: jinja
 | 
			
		||||
            {%- if grains.os != 'Windows' %}
 | 
			
		||||
    - mode: 644
 | 
			
		||||
            {%- if p.manage_user_group %}
 | 
			
		||||
    - user: {{ name }}
 | 
			
		||||
    - group: {{ name }}
 | 
			
		||||
            {%- endif %}
 | 
			
		||||
            {%- endif %}
 | 
			
		||||
    - context:
 | 
			
		||||
        config: {{ p.pkg.component[name]['config']|json }}
 | 
			
		||||
    - require:
 | 
			
		||||
      - file: prometheus-config-file-etc-file-directory
 | 
			
		||||
            {%- if p.manage_user_group %}
 | 
			
		||||
      - user: prometheus-config-users-install-{{ name }}-user-present
 | 
			
		||||
      - group: prometheus-config-users-install-{{ name }}-group-present
 | 
			
		||||
            {%- endif %}
 | 
			
		||||
    - watch_in:
 | 
			
		||||
      - service: prometheus-service-running-{{ name }}
 | 
			
		||||
 | 
			
		||||
@ -71,15 +80,19 @@ prometheus-config-file-{{ ef }}-file-managed:
 | 
			
		||||
    - template: jinja
 | 
			
		||||
            {%- if grains.os != 'Windows' %}
 | 
			
		||||
    - mode: 644
 | 
			
		||||
            {%- if p.manage_user_group %}
 | 
			
		||||
    - user: {{ component }}
 | 
			
		||||
    - group: {{ component }}
 | 
			
		||||
            {%- endif %}
 | 
			
		||||
            {%- endif %}
 | 
			
		||||
    - context:
 | 
			
		||||
        config: {{ p.extra_files[ef]['config'] }}
 | 
			
		||||
    - require:
 | 
			
		||||
      - file: prometheus-config-file-etc-file-directory
 | 
			
		||||
            {%- if p.manage_user_group %}
 | 
			
		||||
      - user: prometheus-config-users-install-{{ component }}-user-present
 | 
			
		||||
      - group: prometheus-config-users-install-{{ component }}-group-present
 | 
			
		||||
            {%- endif %}
 | 
			
		||||
    - watch_in:
 | 
			
		||||
      - service: prometheus-service-running-{{ component }}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -24,9 +24,11 @@ prometheus-service-args-{{ name }}-data-dir:
 | 
			
		||||
    - makedirs: True
 | 
			
		||||
    - watch_in:
 | 
			
		||||
      - service: prometheus-service-running-{{ name }}
 | 
			
		||||
            {%- if p.manage_user_group %}
 | 
			
		||||
    - require:
 | 
			
		||||
      - user: prometheus-config-users-install-{{ name }}-user-present
 | 
			
		||||
      - group: prometheus-config-users-install-{{ name }}-group-present
 | 
			
		||||
            {%- endif %}
 | 
			
		||||
 | 
			
		||||
            {%- endif %}
 | 
			
		||||
        {% endif %}
 | 
			
		||||
 | 
			
		||||
@ -4,6 +4,7 @@
 | 
			
		||||
{%- set tplroot = tpldir.split('/')[0] %}
 | 
			
		||||
{%- from tplroot ~ "/map.jinja" import prometheus as p with context %}
 | 
			
		||||
 | 
			
		||||
  {%- if p.manage_user_group or p.pkg.use_upstream_archive %}
 | 
			
		||||
  {%- for name in p.wanted.component %}
 | 
			
		||||
 | 
			
		||||
prometheus-config-users-install-{{ name }}-group-present:
 | 
			
		||||
@ -29,3 +30,4 @@ prometheus-config-users-install-{{ name }}-user-present:
 | 
			
		||||
              {%- endif %}
 | 
			
		||||
 | 
			
		||||
  {%- endfor %}
 | 
			
		||||
  {%- endif %}
 | 
			
		||||
 | 
			
		||||
@ -23,6 +23,8 @@ prometheus:
 | 
			
		||||
    tmp: /tmp/prometheus
 | 
			
		||||
    var: /var/lib/prometheus
 | 
			
		||||
 | 
			
		||||
  manage_user_group: true
 | 
			
		||||
 | 
			
		||||
  pkg:
 | 
			
		||||
    uri: https://github.com/prometheus
 | 
			
		||||
    use_upstream_repo: false
 | 
			
		||||
 | 
			
		||||
@ -22,9 +22,11 @@ prometheus-exporters-{{ name }}-collector-textfile-dir:
 | 
			
		||||
    - group: {{ name }}
 | 
			
		||||
        {%- endif %}
 | 
			
		||||
    - makedirs: True
 | 
			
		||||
            {%- if p.manage_user_group %}
 | 
			
		||||
    - require:
 | 
			
		||||
      - user: prometheus-config-users-install-{{ name }}-user-present
 | 
			
		||||
      - group: prometheus-config-users-install-{{ name }}-group-present
 | 
			
		||||
            {%- endif %}
 | 
			
		||||
    {%- endif %}
 | 
			
		||||
 | 
			
		||||
{%- for k, v in p.get('exporters', {}).get(name, {}).get('textfile_collectors', {}).items() %}
 | 
			
		||||
 | 
			
		||||
@ -219,7 +219,66 @@ RedHat:
 | 
			
		||||
      sslcacert: /etc/pki/tls/certs/ca-bundle.crt
 | 
			
		||||
      metadata_expire: 300
 | 
			
		||||
 | 
			
		||||
Suse: {}
 | 
			
		||||
Suse:
 | 
			
		||||
  manage_user_group: false
 | 
			
		||||
  pkg:
 | 
			
		||||
    use_upstream_repo: false
 | 
			
		||||
    use_upstream_package: false
 | 
			
		||||
    use_upstream_archive: false
 | 
			
		||||
    component:
 | 
			
		||||
      alertmanager:
 | 
			
		||||
        name: golang-github-prometheus-alertmanager
 | 
			
		||||
        service:
 | 
			
		||||
          name: prometheus-alertmanager
 | 
			
		||||
        environ_file: /etc/sysconfig/prometheus-alertmanager
 | 
			
		||||
        args:
 | 
			
		||||
            config.file: /etc/prometheus/alertmanager.yml
 | 
			
		||||
        config_file: /etc/prometheus/alertmanager.yml
 | 
			
		||||
      prometheus:
 | 
			
		||||
        name: golang-github-prometheus-prometheus
 | 
			
		||||
        service:
 | 
			
		||||
          name: prometheus
 | 
			
		||||
        environ_file: /etc/sysconfig/prometheus
 | 
			
		||||
        environ:
 | 
			
		||||
          environ_arg_name: ARGS
 | 
			
		||||
        config_file: /etc/prometheus/prometheus.yml
 | 
			
		||||
      blackbox_exporter:
 | 
			
		||||
        name: prometheus-blackbox_exporter
 | 
			
		||||
        config_file: /etc/prometheus/blackbox.yml
 | 
			
		||||
        service:
 | 
			
		||||
          name: prometheus-blackbox_exporter
 | 
			
		||||
      hacluster_exporter:
 | 
			
		||||
        name: prometheus-ha_cluster_exporter
 | 
			
		||||
        environ_file: /etc/sysconfig/prometheus-ha_cluster_exporter
 | 
			
		||||
        environ:
 | 
			
		||||
          environ_arg_name: ARGS
 | 
			
		||||
        service:
 | 
			
		||||
          name: prometheus-ha_cluster_exporter
 | 
			
		||||
      node_exporter:
 | 
			
		||||
        name: golang-github-prometheus-node_exporter
 | 
			
		||||
        service:
 | 
			
		||||
          name: prometheus-node_exporter
 | 
			
		||||
        environ_file: /etc/sysconfig/prometheus-node_exporter
 | 
			
		||||
        environ:
 | 
			
		||||
          environ_arg_name: ARGS
 | 
			
		||||
      postgres_exporter:
 | 
			
		||||
        name: prometheus-postgres_exporter
 | 
			
		||||
        service:
 | 
			
		||||
          name: prometheus-postgres_exporter
 | 
			
		||||
        environ_file: /etc/sysconfig/prometheus-postgres_exporter
 | 
			
		||||
        environ:
 | 
			
		||||
          environ_arg_name: POSTGRES_EXPORTER_PARAMS
 | 
			
		||||
      saptune_exporter:
 | 
			
		||||
        name: prometheus-saptune_exporter
 | 
			
		||||
        service:
 | 
			
		||||
          name: prometheus-saptune_exporter
 | 
			
		||||
      webhook_snmp:
 | 
			
		||||
        name: prometheus-webhook-snmp
 | 
			
		||||
        service:
 | 
			
		||||
          name: prometheus-webhook-snmp
 | 
			
		||||
        environ_file: /etc/default/prometheus-webhook-snmp
 | 
			
		||||
        environ:
 | 
			
		||||
          environ_arg_name: PROMETHEUS_WEBHOOK_SNMP_OPTIONS
 | 
			
		||||
 | 
			
		||||
Gentoo:
 | 
			
		||||
  pkg:
 | 
			
		||||
 | 
			
		||||
@ -30,9 +30,11 @@ prometheus-service-args-{{ name }}-data-dir:
 | 
			
		||||
    - makedirs: True
 | 
			
		||||
    - watch_in:
 | 
			
		||||
      - service: prometheus-service-running-{{ name }}
 | 
			
		||||
            {%- if p.manage_user_group %}
 | 
			
		||||
    - require:
 | 
			
		||||
      - user: prometheus-config-users-install-{{ name }}-user-present
 | 
			
		||||
      - group: prometheus-config-users-install-{{ name }}-group-present
 | 
			
		||||
            {%- endif %}
 | 
			
		||||
 | 
			
		||||
            {%- endif %}
 | 
			
		||||
            {%- if grains.os_family == 'FreeBSD' %}
 | 
			
		||||
 | 
			
		||||
@ -13,6 +13,12 @@ prometheus:
 | 
			
		||||
      - alertmanager
 | 
			
		||||
      - node_exporter
 | 
			
		||||
      - blackbox_exporter
 | 
			
		||||
      {%- if grains.os == 'SUSE' %}
 | 
			
		||||
      - hacluster_exporter
 | 
			
		||||
      - postgres_exporter
 | 
			
		||||
      - saptune_exporter
 | 
			
		||||
      - webhook_snmp
 | 
			
		||||
      {%- endif %}
 | 
			
		||||
 | 
			
		||||
  exporters:
 | 
			
		||||
    node_exporter:
 | 
			
		||||
@ -31,7 +37,7 @@ prometheus:
 | 
			
		||||
 | 
			
		||||
  pkg:
 | 
			
		||||
    # yamllint disable-line rule:braces rule:commas
 | 
			
		||||
    use_upstream_repo: {{ false if grains.os_family|lower in ('debian',) else true }}
 | 
			
		||||
    use_upstream_repo: {{ false if grains.os_family|lower in ('debian','suse',) else true }}
 | 
			
		||||
    use_upstream_archive: false
 | 
			
		||||
 | 
			
		||||
    clientlibs:
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user