Installing Ignition using apt-get

Installing using apt-get seems to be much more user friendly in most respects, so here are some instructions.

  1. Install Linux. (For Ubuntu I also install OpenSSH and the LAMP stack at install time)

  2. Download and add the signing key for the repository.

wget http://archive.inductiveautomation.com/ia.public.key
sudo apt-key add ia.public.key
  1. Add Inductive’s repositories to the sources list
sudo echo "# Inductive Automation - Ignition" >> /etc/apt/sources.list
sudo echo "deb http://archive.inductiveautomation.com/apt ignition non-free" >> /etc/apt/sources.list
sudo echo "deb http://archive.inductiveautomation.com/apt ignition-beta non-free" >> /etc/apt/sources.list
  1. Refresh the apt cache and perform the install
sudo apt-get update
sudo apt-get install ignition

Optionally, you could install the beta/release candidate versions using:

sudo apt-get install ignition-beta
  1. You should be done.

How do you feel about the reliability of installing Ignition via apt-get? Some people have had problems here and there, and we are debating about whether or not to keep the repositories for 7.5 (and telling people to use the Linux downloadable installer).

I’d much prefer the apt repositories than the current install situation for the Linux version. It takes care of grabbing the right files and libraries you need including Java, and handles configuration as a service very nicely. It really simplifies or eliminates a lot of the headaches involved. I think more kinks would be worked if more people actually used apt instead of the scripted installer.

The biggest hurdle, in my opinion, is getting people familiarized with the Linux ecosystem itself. People aren’t sure if they should use OpenJDK or sun-jre-6, and it seems that Ubuntu and Debian’s repositories are in a state of flux in that regards right now too. Also, creating the symbolic links is a black box many people have never encountered before.

My final word is either keep the apt repository, or offer ignition packaged as deb and rpm packages. I’m not totally familiar with the requirements of hosting such a repository, but I’d concentrate on the LTS versions of Ubuntu and Debian Squeeze at the very least.

Cool, thanks for the input. If anything, we would keep the repositories in place so that people wouldn’t have to switch to downloading deb files to accomplish the same thing as what they are doing now.

The repositories get my vote.

Improved script for my own use… (can be copy/pasted directly, doesn’t pollute the working directory with ia.public.key, won’t add multiple ignition entries to sources.list). Run ‘sudo su’ to get a root shell first.

file=/etc/apt/sources.list
wget http://archive.inductiveautomation.com/ia.public.key -O /tmp/ia.public.key
apt-key add /tmp/ia.public.key
grep -q ignition $file || {
    echo >> $file
    echo "# Inductive Automation - Ignition" >> $file
    echo "deb http://archive.inductiveautomation.com/apt ignition non-free" >> $file
    echo "deb http://archive.inductiveautomation.com/apt ignition-beta non-free" >> $file
}
apt-get update
apt-get install ignition

Keeping the repositories gets my vote also.

I’ve been using Synaptic Package Manager and/or Update Manager on Ubuntu 11.10 to do Ignition updates with good success. Makes updating very simple.

I vote for the run file. Lets you set the service user, so its more secure. Also, an apt-get upgrade wont touch the ignition install, which i prefer after the 7.3.0 deb package issue.

Sorry for reviving this thread.

Will v7.8.3 make it to the repository, or is the repository as dead as this thread was until I came along? :slight_smile:

[attachment=0]thread-necromancy.png[/attachment]

I think we decided to stop distributing via apt

Well… rats.

Fortunately, installing ignition on Linux is ridiculously easy.

Yes, but the apt install put things in a different location than the script does. This adds complexity when trying to upgrade through the .run script without re-entering information of making a bunch of symlinks.

Since I have everything on VM’s it’s not a big deal, and I can make another one. It’s just that I’m lazy, and didn’t want to do it if I didn’t have to.

Also want to point out I’m using Ubuntu Server and not Desktop. The video didn’t really apply, then. :wink:

I’ve been installing Ubuntu server via kickstart with a custom follow-up script. I’ve stripped some items for posting, but here’s the kickstart.cfg:[code]lang en_US
langsupport en_US
keyboard us
mouse
timezone UTC
rootpw --disabled
#Initial user

generate crypted password with python:

import crypt

print(crypt.crypt(“My Password”, “$6$My Salt”))

user ignition --fullname “Ignition SCADA Server” --iscrypted --password xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
reboot
text
install
cdrom
#System bootloader configuration
bootloader --location=mbr locale=en_US console-setup/ask_detect=false keyboard-configuration/layoutcode=us
#Clear the Master Boot Record
zerombr yes
#Partition clearing information
clearpart --all --initlabel
#Partitioning
part / --fstype ext4 --size 1 --grow --asprimary --label=Root
#System authorization infomation
auth --useshadow --enablemd5
#Network configuration
network --bootproto=static --device=eth0 --ip=192.168.0.xxx/24 --gateway=192.168.0.1 --nameserver=192.168.0.1 --hostname=ign778
#Firewall configuration
firewall --disabled
#Do not configure the X Window System
skipx

Other debian installer customizations (owner is “d-i” by default)

preseed partman-auto/choose_recipe select atomic
preseed partman-lvm/device_remove_lvm boolean true
preseed partman-lvm/confirm boolean true
preseed partman-lvm/confirm_nooverwrite boolean true
preseed partman-md/device_remove_md boolean true
preseed partman-md/confirm boolean true
preseed partman-md/confirm_nooverwrite boolean true
preseed partman-partitioning/confirm_write_new_label boolean true
preseed partman/confirm_write_new_label boolean true
preseed partman/choose_partition select “Finish partitioning and write changes to disk”
preseed partman/confirm boolean true
preseed partman/confirm_nooverwrite boolean true
preseed pkgsel/update-policy select unattended-upgrades
preseed --owner partman-basicfilesystems partman-basicfilesystems/no_swap boolean false
#custom packages for installation
%packages
@ ubuntu-server
openssh-server
unzip
xfce4
xfce4-session
xvfb
zip
xmlstarlet
%post
mkdir -p /root/.ssh
umask 022
echo “ssh-rsa AAAAB3Nzaxxxxxxxxxxxxxxxxxxxxxxxxxx user@host” >/root/.ssh/authorized_keys
mkdir -p /home/ignition/.ssh
echo “ssh-rsa AAAAB3Nzaxxxxxxxxxxxxxxxxxxxxxxxxxx user@host” >/home/ignition/.ssh/authorized_keys
chown -R ignition:ignition /home/ignition
add-apt-repository ppa:webupd8team/java
apt-get update
apt-get --yes --ignore-missing --with-new-pkgs upgrade
debconf-set-selections <<debconf-EOF
oracle-java7-installer shared/accepted-oracle-license-v1-1 select true
oracle-java8-installer shared/accepted-oracle-license-v1-1 select true
debconf-EOF
apt-get --yes install oracle-java7-installer oracle-java8-installer
update-java-alternatives -s java-8-oracle
cd /home/ignition
wget --no-verbose ‘http://ks.automation-pros.com/ia/ia-install.sh
wget --no-verbose ‘http://ks.automation-pros.com/ia/ignition-build7.7.8-linux-x64.zip
md5sum -c <<md5sum-EOF
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ia-install.sh
379ed4faf188be274bbcea4260ded5f3 ignition-build7.7.8-linux-x64.zip
md5sum-EOF
if test $? -eq 0 ; then
chmod +x ia-install.sh
./ia-install.sh
else
echo "Install aborted - bad download(s) " >badinstall.txt
date >>badinstall.txt
fi[/code]The separate shell script ia-install.sh does the rest:[code]#! /bin/bash

Kickstart post-process to install downloaded ignition zip file and

modules.

tgt="/usr/share/ignition"

cd /home/ignition

rm -rf /etc/ignition /var/log/ignition
mkdir -p “${tgt}” /etc/ignition /var/log/ignition
unzip ?gnition*.zip -d “${tgt}”
for x in .modl ; do if test -f “$x” ; then mv “$x” “${tgt}/user-lib/modules” ; fi ; done
cd “${tgt}/data”
mv gateway.
log4j.* /etc/ignition
awk -f - ignition.conf >/etc/ignition/ignition.conf <<-conf-EOF
BEGIN { copyflag=1; printflag=1 }
/^#?wrapper.java.additional/ {
copyflag=0;
if (printflag>0) {
print “wrapper.java.additional.1=-XX:+UseG1GC”;
print “wrapper.java.additional.2=-XX:MaxGCPauseMillis=100”;
print “wrapper.java.additional.3=-Xloggc:/var/log/ignition/javagc-%WRAPPER_TIME_YYYYMMDDHHIISS%.log”;
print “wrapper.java.additional.4=-Ddata.dir=${tgt}/data”;
print “wrapper.java.additional.5=-Dorg.apache.catalina.loader.WebappClassLoader.ENABLE_CLEAR_REFERENCES=false”;
print “wrapper.java.additional.6=-XX:+PrintGCDetails”;
print “wrapper.java.additional.7=-XX:+PrintGCTimeStamps”;
print “wrapper.java.additional.8=-XX:+PrintGCDateStamps”;
printflag=0;
} }
! /^#?wrapper.java.additional/ { copyflag=1 }
/^wrapper.logfile=/ { copyflag=0; print “wrapper.logfile=/var/log/ignition/wrapper.log” }
copyflag>0 { print }
conf-EOF
mv ignition.conf /etc/ignition/ignition.conf.orig
for x in /etc/ignition/* ; do ln -s “$x” . ; done
cd “$tgt”
chmod +x .sh
xml="$(readlink -f "$(find -path '
/main/*/web.xml’)")"
if test -f “${xml}” ; then
xmlstarlet ed -L
-u “/:web-app/:context-param[:param-name=‘logs.dir’]/:param-value”
-v “/var/log/ignition/”
-u “/:web-app/:context-param[:param-name=‘etc.dir’]/:param-value”
-v “/etc/ignition/”
“$xml”
fi
chown -R ignition:ignition “$tgt” /etc/ignition /var/log/ignition
cd /etc/init.d
rm -f ignition
ln -s “${tgt}/ignition.sh” ignition
update-rc.d ignition defaults[/code]You’ll have to fix up various parts for your situation, but I’ve been pleased. I modified the install ISO’s boot menu to have a default entry that launches the kickstart. It’s basically hands-free once started. Total deployment time from VM allocation in virt-manager to running Ignition is about ten minutes.

1 Like

Ah, yeah that makes sense. I was only thinking of a fresh install :slight_smile:

1 Like