mirror of
https://github.com/GNS3/gns3-registry.git
synced 2024-12-23 22:52:24 +00:00
Merge pull request #532 from b-ehlers/alpine-ostinato
Alpine ostinato packer script
This commit is contained in:
commit
7888599481
@ -15,7 +15,7 @@ The only added packages are:
|
||||
|
||||
.. code:: bash
|
||||
|
||||
packer build alpine_cli.json
|
||||
packer build alpine.json
|
||||
|
||||
|
||||
FRR
|
||||
@ -25,7 +25,7 @@ A build of Alpine with FRRouting preinstalled.
|
||||
|
||||
.. code:: bash
|
||||
|
||||
packer build -var-file=frr.json alpine_cli.json
|
||||
packer build -var-file=frr.json alpine.json
|
||||
|
||||
|
||||
Alpine GUI installation
|
||||
@ -35,5 +35,15 @@ The GUI version has XFCE4 installed.
|
||||
|
||||
.. code:: bash
|
||||
|
||||
packer build alpine_gui.json
|
||||
packer build -var-file=gui.json alpine.json
|
||||
|
||||
|
||||
Ostinato
|
||||
'''''''''
|
||||
|
||||
A build of Alpine with Ostinato GUI and drone preinstalled.
|
||||
|
||||
.. code:: bash
|
||||
|
||||
packer build -var-file=ostinato.json alpine.json
|
||||
|
||||
|
@ -2,7 +2,9 @@
|
||||
"variables": {
|
||||
"iso_url": "http://dl-cdn.alpinelinux.org/alpine/v3.12/releases/x86_64/alpine-virt-3.12.0-x86_64.iso",
|
||||
"iso_checksum": "fe694a34c0e2d30b9e5dea7e2c1a3892c1f14cb474b69cc5c557a52970071da5",
|
||||
"ui_mode": "cli",
|
||||
"vm_name": "alpine_cli.qcow2",
|
||||
"file_source": "README.rst",
|
||||
"setup_script": "setup.sh",
|
||||
"disk_size": "500"
|
||||
},
|
||||
@ -49,12 +51,18 @@
|
||||
"type": "shell",
|
||||
"pause_before": "20s",
|
||||
"inline": [
|
||||
"apk upgrade --update-cache"
|
||||
"apk upgrade --update-cache",
|
||||
"mkdir -p /tmp/uploads"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"script": "scripts/serial.sh"
|
||||
"script": "scripts/{{user `ui_mode`}}.sh"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"source": "files/{{user `file_source`}}",
|
||||
"destination": "/tmp/uploads/"
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
@ -1,68 +0,0 @@
|
||||
{
|
||||
"variables": {
|
||||
"iso_url": "http://dl-cdn.alpinelinux.org/alpine/v3.12/releases/x86_64/alpine-virt-3.12.0-x86_64.iso",
|
||||
"iso_checksum": "fe694a34c0e2d30b9e5dea7e2c1a3892c1f14cb474b69cc5c557a52970071da5",
|
||||
"vm_name": "alpine_gui.qcow2",
|
||||
"setup_script": "setup.sh",
|
||||
"disk_size": "1000"
|
||||
},
|
||||
"builders": [
|
||||
{
|
||||
"type": "qemu",
|
||||
"iso_url": "{{user `iso_url`}}",
|
||||
"iso_checksum": "{{user `iso_checksum`}}",
|
||||
"iso_checksum_type": "sha256",
|
||||
"shutdown_command": "poweroff",
|
||||
"headless": true,
|
||||
"ssh_username": "root",
|
||||
"ssh_password": "root",
|
||||
"vm_name": "{{user `vm_name`}}",
|
||||
"disk_interface": "ide",
|
||||
"disk_compression": true,
|
||||
"net_device": "e1000",
|
||||
"disk_size": "{{user `disk_size`}}",
|
||||
"boot_wait": "20s",
|
||||
"ssh_wait_timeout": "60s",
|
||||
"boot_command": [
|
||||
"root<enter><wait>",
|
||||
"echo 'root:root' | chpasswd<enter>",
|
||||
"ifconfig lo up<enter>",
|
||||
"ifconfig eth0 up && udhcpc -i eth0<enter><wait10>",
|
||||
"setup-sshd -c openssh<enter><wait>",
|
||||
"sed -i.orig '$aPermitRootLogin yes' /etc/ssh/sshd_config<enter>",
|
||||
"service sshd restart<enter><wait>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"provisioners": [
|
||||
{
|
||||
"type": "shell",
|
||||
"script": "scripts/install.sh"
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"inline": [
|
||||
"reboot"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"pause_before": "20s",
|
||||
"inline": [
|
||||
"apk upgrade --update-cache"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"script": "scripts/gui.sh"
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"script": "scripts/{{user `setup_script`}}"
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"script": "scripts/post_setup.sh"
|
||||
}
|
||||
]
|
||||
}
|
5
packer/alpine-linux/files/README.rst
Normal file
5
packer/alpine-linux/files/README.rst
Normal file
@ -0,0 +1,5 @@
|
||||
Upload directory
|
||||
================
|
||||
|
||||
A file/directory from this folder can be uploaded to the VM
|
||||
by entering it in the variable "file_source".
|
BIN
packer/alpine-linux/files/ostinato/3.12/ostinato-1.1-r0.apk
Normal file
BIN
packer/alpine-linux/files/ostinato/3.12/ostinato-1.1-r0.apk
Normal file
Binary file not shown.
Binary file not shown.
BIN
packer/alpine-linux/files/ostinato/3.12/ostinato-gui-1.1-r0.apk
Normal file
BIN
packer/alpine-linux/files/ostinato/3.12/ostinato-gui-1.1-r0.apk
Normal file
Binary file not shown.
20
packer/alpine-linux/files/ostinato/build-package
Executable file
20
packer/alpine-linux/files/ostinato/build-package
Executable file
@ -0,0 +1,20 @@
|
||||
#!/bin/sh
|
||||
|
||||
alpine_version=3.12
|
||||
|
||||
mkdir -p "$alpine_version"
|
||||
docker run --rm -i -v "$PWD/$alpine_version:/package" alpine:$alpine_version << 'EOF'
|
||||
cd
|
||||
apk add alpine-sdk
|
||||
mkdir -p .abuild
|
||||
echo 'PACKAGER="GNS3 Packer <packer@gns3-registry>"' > .abuild/abuild.conf
|
||||
abuild-keygen -a -n -q
|
||||
|
||||
git clone --depth 1 git://git.alpinelinux.org/aports
|
||||
cd aports/*/ostinato
|
||||
abuild -F -r
|
||||
cd
|
||||
|
||||
find packages -name "*.apk" -type f -exec cp -p {} /package \;
|
||||
chown $(stat -c '%u:%g' /package) /package/*
|
||||
EOF
|
BIN
packer/alpine-linux/files/ostinato/logo_256x256.png
Normal file
BIN
packer/alpine-linux/files/ostinato/logo_256x256.png
Normal file
Binary file not shown.
After (image error) Size: 5.3 KiB |
5
packer/alpine-linux/gui.json
Normal file
5
packer/alpine-linux/gui.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"ui_mode": "gui",
|
||||
"vm_name": "alpine_gui.qcow2",
|
||||
"disk_size": "1000"
|
||||
}
|
7
packer/alpine-linux/ostinato.json
Normal file
7
packer/alpine-linux/ostinato.json
Normal file
@ -0,0 +1,7 @@
|
||||
{
|
||||
"ui_mode": "gui",
|
||||
"vm_name": "ostinato.qcow2",
|
||||
"file_source": "ostinato",
|
||||
"setup_script": "ostinato.sh",
|
||||
"disk_size": "1000"
|
||||
}
|
@ -69,6 +69,7 @@ cat > /etc/network/interfaces << EOF
|
||||
# Loopback interface
|
||||
auto lo
|
||||
iface lo inet loopback
|
||||
|
||||
# Static config for eth0
|
||||
#auto eth0
|
||||
#iface eth0 inet static
|
||||
|
112
packer/alpine-linux/scripts/ostinato.sh
Normal file
112
packer/alpine-linux/scripts/ostinato.sh
Normal file
@ -0,0 +1,112 @@
|
||||
# install packages
|
||||
alpine_version=$(cat /etc/alpine-release)
|
||||
alpine_version=${alpine_version%.*}
|
||||
apk add nano mousepad
|
||||
apk add --allow-untrusted \
|
||||
/tmp/uploads/ostinato/$alpine_version/ostinato-drone*.apk \
|
||||
/tmp/uploads/ostinato/$alpine_version/ostinato-gui*.apk
|
||||
apk add tshark wireshark
|
||||
|
||||
# desktop integration
|
||||
cat > /usr/share/applications/ostinato.desktop << 'EOF'
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Ostinato
|
||||
Icon=ostinato
|
||||
Exec=sh -c 'ostinato > /tmp/ostinato.log 2>&1'
|
||||
Categories=Network;Monitor;Qt;
|
||||
EOF
|
||||
cp -p /tmp/uploads/ostinato/logo_256x256.png /usr/share/icons/hicolor/256x256/apps/ostinato.png
|
||||
gtk-update-icon-cache -f /usr/share/icons/hicolor
|
||||
|
||||
# change hostname
|
||||
sed -i -e "s/^127\.0\.0\.1.*/127.0.0.1\tostinato.$(hostname -d) ostinato localhost.localdomain localhost/" /etc/hosts
|
||||
echo ostinato > /etc/hostname
|
||||
hostname ostinato
|
||||
|
||||
# configure ostinato
|
||||
mkdir -p /etc/xdg/Ostinato
|
||||
printf '[General]\nRateAccuracy=Low\n[PortList]\nExclude=any,lo*\n' > /etc/xdg/Ostinato/drone.ini
|
||||
|
||||
# allow ostinato group to run drone
|
||||
addgroup -S ostinato
|
||||
chgrp ostinato /usr/bin/drone
|
||||
chmod 750 /usr/bin/drone
|
||||
setcap cap_net_admin,cap_net_raw=eip /usr/bin/drone
|
||||
|
||||
# add user to ostinato and wireshark group
|
||||
addgroup user ostinato
|
||||
addgroup user wireshark
|
||||
|
||||
# create .profile
|
||||
cat > /root/.profile << 'EOF'
|
||||
# ~/.profile: executed by Bourne-compatible login shells.
|
||||
|
||||
# reset terminal modes
|
||||
[ -t 1 ] && printf '\e[?5l\e[?7h\e[?8h'
|
||||
|
||||
if [ "$BASH" ]; then
|
||||
if [ -f ~/.bashrc ]; then
|
||||
. ~/.bashrc
|
||||
fi
|
||||
fi
|
||||
|
||||
mesg n || true
|
||||
EOF
|
||||
|
||||
find /home -type d -mindepth 1 -maxdepth 1 | while read -r home; do
|
||||
cp -p /root/.profile "$home/"
|
||||
chown $(stat -c '%u:%g' "$home") "$home/.profile"
|
||||
done
|
||||
|
||||
# network configuration
|
||||
cat > /etc/network/interfaces << EOF
|
||||
#
|
||||
# This is a sample network config, uncomment lines to configure the network
|
||||
#
|
||||
# Loopback interface
|
||||
auto lo
|
||||
iface lo inet loopback
|
||||
|
||||
# Static config for eth0
|
||||
#auto eth0
|
||||
#iface eth0 inet static
|
||||
# address 192.168.0.2
|
||||
# netmask 255.255.255.0
|
||||
# gateway 192.168.0.1
|
||||
# up echo nameserver 192.168.0.1 > /etc/resolv.conf
|
||||
|
||||
# DHCP config for eth0
|
||||
#auto eth0
|
||||
#iface eth0 inet dhcp
|
||||
# hostname $(hostname)
|
||||
|
||||
# Minimal configuration for ethernet interfaces
|
||||
# If static IP or DHCP is enabled for eth0, comment the config for eth0
|
||||
auto eth0
|
||||
iface eth0 inet manual
|
||||
pre-up sysctl -q -w net.ipv6.conf.\$IFACE.disable_ipv6=1
|
||||
up ip link set dev \$IFACE mtu 9000 up
|
||||
down ip link set dev \$IFACE down
|
||||
|
||||
auto eth1
|
||||
iface eth1 inet manual
|
||||
pre-up sysctl -q -w net.ipv6.conf.\$IFACE.disable_ipv6=1
|
||||
up ip link set dev \$IFACE mtu 9000 up
|
||||
down ip link set dev \$IFACE down
|
||||
|
||||
auto eth2
|
||||
iface eth2 inet manual
|
||||
pre-up sysctl -q -w net.ipv6.conf.\$IFACE.disable_ipv6=1
|
||||
up ip link set dev \$IFACE mtu 9000 up
|
||||
down ip link set dev \$IFACE down
|
||||
|
||||
auto eth3
|
||||
iface eth3 inet manual
|
||||
pre-up sysctl -q -w net.ipv6.conf.\$IFACE.disable_ipv6=1
|
||||
up ip link set dev \$IFACE mtu 9000 up
|
||||
down ip link set dev \$IFACE down
|
||||
EOF
|
||||
|
||||
cat > /etc/resolv.conf << EOF
|
||||
EOF
|
@ -4,5 +4,8 @@ mv /etc/ssh/sshd_config.orig /etc/ssh/sshd_config
|
||||
# clear cache
|
||||
rm -rf /var/cache/apk/*
|
||||
|
||||
# clear uploads
|
||||
rm -rf /tmp/uploads
|
||||
|
||||
# Write 0
|
||||
dd if=/dev/zero bs=1M of=/zero ; rm -f /zero
|
||||
|
Loading…
Reference in New Issue
Block a user