mirror of
https://github.com/Adam-Ant/DroneAgentBuilder
synced 2024-12-20 09:24:35 +00:00
Initial Commit
This commit is contained in:
commit
b3835c64ea
66
AlpineBaseNotes.md
Normal file
66
AlpineBaseNotes.md
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
# To create an alpine base image:
|
||||||
|
|
||||||
|
Spin up a new VM:
|
||||||
|
- 512MB RAW Disk image (hence called alpine.img)
|
||||||
|
- Virtio Network bridge
|
||||||
|
- ISO of Alpine Virtual ed. attached
|
||||||
|
|
||||||
|
Inside the VM:
|
||||||
|
- Add the following to /etc/network/interfaces:
|
||||||
|
|
||||||
|
|
||||||
|
auto lo
|
||||||
|
iface lo inet loopback
|
||||||
|
|
||||||
|
auto eth0
|
||||||
|
iface eth0 inet dhcp
|
||||||
|
hostname alpine
|
||||||
|
|
||||||
|
- `/etc/init.d/networking restart`
|
||||||
|
- Run `setup-alpine`:
|
||||||
|
- gb
|
||||||
|
- gb
|
||||||
|
- alpine
|
||||||
|
- eth0
|
||||||
|
- dhcp
|
||||||
|
- no
|
||||||
|
- [Enter twice]
|
||||||
|
- UTC
|
||||||
|
- none
|
||||||
|
- 1
|
||||||
|
- openssh
|
||||||
|
- busybox
|
||||||
|
- sda
|
||||||
|
- sys
|
||||||
|
- y
|
||||||
|
|
||||||
|
|
||||||
|
- `passwd -d root`
|
||||||
|
- `poweroff`
|
||||||
|
|
||||||
|
Make sure the VM is stopped.
|
||||||
|
|
||||||
|
Run `virt-sysprep -a alpine.img`
|
||||||
|
|
||||||
|
Run `xz -k -verbose -T4 --best --block-size=16777216 alpine.img`
|
||||||
|
|
||||||
|
Create the index file as below. <> Shows commands to generate the required data. Replace version as needed.
|
||||||
|
|
||||||
|
```
|
||||||
|
[alpine-37]
|
||||||
|
name=Alpine 3.7
|
||||||
|
osinfo=alpine
|
||||||
|
arch=x86_64
|
||||||
|
file=alpine.img.xz
|
||||||
|
checksum=<sha512sum alpine.img.xz>
|
||||||
|
format=raw
|
||||||
|
size=<du -s alpine.img>
|
||||||
|
compressed_size=<du -s alpine.img.xz>
|
||||||
|
expand=/dev/sda3
|
||||||
|
```
|
||||||
|
|
||||||
|
Sign the index file:
|
||||||
|
`gpg --clearsign --armor index`
|
||||||
|
|
||||||
|
|
||||||
|
Upload the generated `index.asc` and `alpine.img.xz` files to a web server.
|
8
Readme.md
Normal file
8
Readme.md
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
# Alpine Drone Agent builder
|
||||||
|
|
||||||
|
Create a VM for setting a drone build agent.
|
||||||
|
|
||||||
|
Put alpinelinux.\* into /etc/xdg/virt-builder/repos.d/
|
||||||
|
|
||||||
|
Put your credentials into dronecfg, then
|
||||||
|
Run with `virt-builder --size 10G --format qcow2 --commands-from-file builder-commands`
|
5
alpinelinux.conf
Normal file
5
alpinelinux.conf
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# Put this file in /etc/xdg/virt-builder/repos.d to use the Alpine base images
|
||||||
|
|
||||||
|
[Alpine]
|
||||||
|
uri=https://adam-ant.co.uk/builder/index.asc
|
||||||
|
gpgkey=file:///etc/xdg/virt-builder/repos.d/alpinelinux.gp
|
53
alpinelinux.gpg
Normal file
53
alpinelinux.gpg
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
# Put this file in /etc/xdg/virt-builder/repos.d to use the Alpine base images
|
||||||
|
|
||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
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
|
||||||
|
3ya6/GAAIAeCGnw=
|
||||||
|
=jF2v
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
37
builder_commands
Normal file
37
builder_commands
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
# Enable the community repo
|
||||||
|
edit /etc/apk/repositories:'s/^#\(.*community\)/\1/g'
|
||||||
|
|
||||||
|
# Setup the new MOTD
|
||||||
|
run motd.sh
|
||||||
|
|
||||||
|
# Disallow root login
|
||||||
|
root-password disabled
|
||||||
|
edit /etc/ssh/sshd_config:'/^PermitRootLogin yes/d'
|
||||||
|
|
||||||
|
# Set up the docker user
|
||||||
|
update
|
||||||
|
install docker
|
||||||
|
install sudo
|
||||||
|
install shadow
|
||||||
|
run-command adduser -D -G docker docker
|
||||||
|
run-command { echo changeme; echo changeme; } | passwd docker
|
||||||
|
run-command echo changeme | chage -d 0 docker
|
||||||
|
run-command echo 'docker ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers.d/docker-nopasswd
|
||||||
|
chmod 0640:/etc/sudoers.d/*
|
||||||
|
|
||||||
|
# Install docker
|
||||||
|
install docker
|
||||||
|
run-command rc-update add docker boot
|
||||||
|
run-command service docker start
|
||||||
|
|
||||||
|
# Install docker-compose
|
||||||
|
install python
|
||||||
|
install py-pip
|
||||||
|
run-command pip install docker-compose
|
||||||
|
uninstall py-pip
|
||||||
|
|
||||||
|
# Set up pruning docker every 15 minutes. Useful for build agents
|
||||||
|
run-command rc-update add crond
|
||||||
|
run-command echo '*/15 * * * * docker system prune -a -f --filter until=10m' | crontab -u docker -
|
||||||
|
|
||||||
|
# Install the drone-agent starters
|
2
drone-agent.start
Normal file
2
drone-agent.start
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
docker-compose -f /etc/drone-compose.yml up --force-recreate -d
|
14
drone-compose.yml
Normal file
14
drone-compose.yml
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
version: '3.1'
|
||||||
|
|
||||||
|
# Run this on a dedicated box only!
|
||||||
|
# It WILL make a mess of the docker daemon
|
||||||
|
|
||||||
|
services:
|
||||||
|
agent:
|
||||||
|
image: drone/agent:0.8.4
|
||||||
|
container_name: drone-agent
|
||||||
|
command: agent
|
||||||
|
restart: always
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
env_file: /etc/dronecfg
|
18
motd.sh
Normal file
18
motd.sh
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
source /etc/os-release
|
||||||
|
|
||||||
|
cat << EOF > /etc/motd
|
||||||
|
|
||||||
|
$PRETTY_NAME ($VERSION_ID) Docker Host
|
||||||
|
|
||||||
|
Built as a CI runner for Docker-based CI platforms
|
||||||
|
such as Drone-CI https://github.com/drone/drone
|
||||||
|
|
||||||
|
See the Alpine Wiki for how-to guides and
|
||||||
|
general information about administrating
|
||||||
|
Alpine systems and development.
|
||||||
|
See <http://wiki.alpinelinux.org>
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
Loading…
Reference in New Issue
Block a user