Skip to content

Instantly share code, notes, and snippets.

@renoirb
Last active March 30, 2023 03:15
Show Gist options
  • Save renoirb/6722890 to your computer and use it in GitHub Desktop.
Save renoirb/6722890 to your computer and use it in GitHub Desktop.
How to install Oracle Java from ppa webupd8team/java using Salt stack, in ONE state file
#
# How to install automatically Oracle Java 7 under Salt Stack
#
# Thanks Oracle for complicating things :(
#
# 1. Create a java/ folder in your salt master
# 2. Paste this file in init.sls
# 3. salt '*' state.sls java
#
# Source:
# * https://github.com/log0ymxm/salt-jvm/blob/master/init.sls
# * http://architects.dzone.com/articles/puppet-installing-oracle-java
#
oracle-ppa:
pkgrepo.managed:
- humanname: WebUpd8 Oracle Java PPA repository
- ppa: webupd8team/java
oracle-license-select:
cmd.run:
- unless: which java
- name: '/bin/echo /usr/bin/debconf shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections'
- require_in:
- pkg: oracle-java7-installer
- cmd: oracle-license-seen-lie
oracle-license-seen-lie:
cmd.run:
- name: '/bin/echo /usr/bin/debconf shared/accepted-oracle-license-v1-1 seen true | /usr/bin/debconf-set-selections'
- require_in:
- pkg: oracle-java7-installer
oracle-java7-installer:
pkg:
- installed
- require:
- pkgrepo: oracle-ppa
@JensRantil
Copy link

If you run into issues with the PPA not being picked up after upgrading to 2014.7.0, see here.

@JensRantil
Copy link

java-ppa:
  {% if grains['os'] == 'Ubuntu' %}
  pkgrepo.managed:
    - ppa: webupd8team/java
  {% elif grains['os'] == 'Debian' %}
  pkgrepo.managed:
    - humanname: webup8team
    - name: deb http://ppa.launchpad.net/webupd8team/java/ubuntu precise main
    - dist: precise
    - file: /etc/apt/sources.list.d/webup8team.list
    - keyid: EEA14886
    - keyserver: keyserver.ubuntu.com
  {% endif %}

@geekpete Is there any reason why you aren't simply skipping the Ubuntu case above? The Debian case should cover them both, right?

@JensRantil
Copy link

FYI, the Debian case seem to work also on Ubuntu.

@shofetim
Copy link

You might also need to install debconf-utils to get the debconf state. Also I prefer to require that all data comes from pillar, no defaults:

debconf-utils:
  pkg.installed

oracle-java{{ pillar['java_version'] }}-installer:
  pkgrepo.managed:
    - humanname: WebUp8Team Java Repository
    - name: "deb http://ppa.launchpad.net/webupd8team/java/ubuntu precise main"
    - dist: precise
    - file: /etc/apt/sources.list.d/webup8team.list
    - keyid: EEA14886
    - keyserver: keyserver.ubuntu.com
  pkg.installed:
    - require:
      - pkgrepo: oracle-java{{ pillar['java_version'] }}-installer
  debconf.set:
   - data:
       'shared/accepted-oracle-license-v1-1': {'type': 'boolean', 'value': True}
   - require_in:
       - pkg: oracle-java{{ pillar['java_version'] }}-installer

Tested on Debian Wheezy

@JJ
Copy link

JJ commented Oct 2, 2016

I seem to be getting an error here:

          ID: oracle-ppa
    Function: pkgrepo.managed
      Result: False
     Comment: Failed to examine repo 'oracle-ppa': Error: 'python-apt' package not installed

Do I need to install python-apt before?

@cprima
Copy link

cprima commented Dec 25, 2016

On http://www.webupd8.org/2014/03/how-to-install-oracle-java-8-in-debian.html ist says:

Update October 20, 2016:
...
So, if you want to set Oracle Java 8 as default, no matter what other Java versions are installed, make sure that you install the oracle-java8-set-default package

@vwal
Copy link

vwal commented Feb 3, 2017

@JJ You should have python-software-properties installed (it includes python-apt). From Salt docs:

On Ubuntu systems, the python-software-properties package should be installed for better support of PPA repositories.

@Bartuz
Copy link

Bartuz commented Feb 16, 2017

INFO    ] Completed state [git] at time 23:40:59.970228 duration_in_ms=322.06
local:
----------
          ID: git-deps
    Function: pkg.installed
        Name: git
      Result: False
     Comment: Failed to get virtual package information (E:Type 'oracle-ppa' is not known on line 16 in source list /etc/apt/sources.list)
     Started: 23:40:59.648168
    Duration: 322.06 ms
     Changes:

Summary for local
------------
Succeeded: 0
Failed:    1
------------
Total states run:     1
Total run time: 322.060 ms
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!

salt-call state.highstate --retcode-passthrough  --log-level=info --force-color

Stdout from the command:

local:
----------
          ID: git-deps
    Function: pkg.installed
        Name: git
      Result: False
     Comment: Failed to get virtual package information (E:Type 'oracle-ppa' is not known on line 16 in source list /etc/apt/sources.list)
     Started: 23:40:59.648168
    Duration: 322.06 ms
     Changes:

Summary for local

@cr0ss
Copy link

cr0ss commented Jun 1, 2017

In my case keyserver has been unavailable so I've used - keyserver: hkp://keyserver.ubuntu.com:80 which seems to got a problem fixed.

@felixhummel
Copy link

You might want to consider using prereq, so the debconf selects only run when pkg.installed is triggered, e.g.

https://github.com/felixhummel/saltstates/blob/master/java/oracle.sls

Thanks for sharing!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment