ci: add do image build via packer
This commit is contained in:
		
							
								
								
									
										15
									
								
								dev/packer/scripts/001-onboot.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								dev/packer/scripts/001-onboot.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| #!/bin/bash | ||||
|  | ||||
| # Scripts in this directory will be executed by cloud-init on the first boot of droplets | ||||
| # created from your image.  Things ike generating passwords, configuration requiring IP address | ||||
| # or other items that will be unique to each instance should be done in scripts here. | ||||
|  | ||||
| openssl rand -base64 32 > /etc/wiki/.db-secret | ||||
|  | ||||
| if [[ -z $DATABASE_URL ]]; then | ||||
|   docker start db | ||||
| fi | ||||
| docker start wiki | ||||
| docker start wiki-update-companion | ||||
| # docker start nginx-proxy | ||||
| # docker start watchtower | ||||
							
								
								
									
										19
									
								
								dev/packer/scripts/010-docker.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								dev/packer/scripts/010-docker.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | ||||
| #!/bin/bash | ||||
|  | ||||
| curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - | ||||
| sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | ||||
| apt -qqy update | ||||
| apt -qqy -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' install docker-ce docker-ce-cli containerd.io | ||||
|  | ||||
| systemctl enable docker | ||||
| systemctl start docker | ||||
|  | ||||
| mkdir -p /etc/wiki | ||||
|  | ||||
| docker network create wikinet | ||||
| docker volume create pgdata | ||||
| docker create --name=db -e POSTGRES_DB=wiki -e POSTGRES_USER=wiki -e POSTGRES_PASSWORD_FILE=/etc/wiki/.db-secret -v /etc/wiki/.db-secret:/etc/wiki/.db-secret:ro -v pgdata:/var/lib/postgresql/data --restart=unless-stopped -h db --network=wikinet postgres:11 | ||||
| docker create --name=wiki -e DB_TYPE=postgres -e DB_HOST=db -e DB_PORT=5432 -e DB_PASS_FILE=/etc/wiki/.db-secret -v /etc/wiki/.db-secret:/etc/wiki/.db-secret:ro -e DB_USER=wiki -e DB_NAME=wiki -e UPGRADE_COMPANION=1 --restart=unless-stopped -h wiki --network=wikinet -p 80:3000 -p 443:3443 ghcr.io/requarks/wiki:2 | ||||
| docker create --name=wiki-update-companion -v /var/run/docker.sock:/var/run/docker.sock:ro --restart=unless-stopped -h wiki-update-companion --network=wikinet requarks/wiki-update-companion:latest | ||||
| # docker create --name=nginx-proxy -p 80:80 -p 443:443 -e DEFAULT_HOST=wiki.local --network=wikinet -v /var/run/docker.sock:/tmp/docker.sock:ro --restart=unless-stopped jwilder/nginx-proxy | ||||
| # docker create --name=watchtower --network=wikinet -v /var/run/docker.sock:/var/run/docker.sock --restart=unless-stopped containrrr/watchtower --cleanup --schedule="0 2 * * 6" wiki | ||||
							
								
								
									
										4
									
								
								dev/packer/scripts/011-docker-compose.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								dev/packer/scripts/011-docker-compose.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| #!/bin/sh | ||||
|  | ||||
| sudo curl -L "https://github.com/docker/compose/releases/download/${docker_compose_version}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose; | ||||
| chmod +x /usr/local/bin/docker-compose; | ||||
							
								
								
									
										6
									
								
								dev/packer/scripts/012-grub-opts.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								dev/packer/scripts/012-grub-opts.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| #!/bin/sh | ||||
|  | ||||
| sed -e 's|GRUB_CMDLINE_LINUX="|GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1|g' \ | ||||
|     -i /etc/default/grub | ||||
|  | ||||
| update-grub | ||||
							
								
								
									
										4
									
								
								dev/packer/scripts/013-docker-dns.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								dev/packer/scripts/013-docker-dns.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| #!/bin/sh | ||||
|  | ||||
| sed -e 's|#DOCKER_OPTS|DOCKER_OPTS|g' \ | ||||
|     -i /etc/default/docker | ||||
							
								
								
									
										9
									
								
								dev/packer/scripts/014-ufw-docker.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								dev/packer/scripts/014-ufw-docker.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | ||||
| #!/bin/bash | ||||
|  | ||||
| sudo ufw allow ssh | ||||
| sudo ufw allow http | ||||
| sudo ufw allow https | ||||
|  | ||||
| sudo ufw --force enable | ||||
|  | ||||
| cat /dev/null > /var/log/ufw.log | ||||
							
								
								
									
										25
									
								
								dev/packer/scripts/020-application-tag.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								dev/packer/scripts/020-application-tag.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | ||||
| #!/bin/sh | ||||
|  | ||||
| ################################ | ||||
| ## PART: Write the application tag | ||||
| ## | ||||
| ## vi: syntax=sh expandtab ts=4 | ||||
|  | ||||
| build_date=$(date +%Y-%m-%d) | ||||
| distro="$(lsb_release -s  -i)" | ||||
| distro_release="$(lsb_release -s  -r)" | ||||
| distro_codename="$(lsb_release -s -c)" | ||||
| distro_arch="$(uname -m)" | ||||
|  | ||||
| mkdip -p /var/lib/digitalocean | ||||
| touch /var/lib/digitalocean/application.info | ||||
|  | ||||
| cat >> /var/lib/digitalocean/application.info <<EOM | ||||
| application_name="${application_name}" | ||||
| build_date="${build_date}" | ||||
| distro="${distro}" | ||||
| distro_release="${distro_release}" | ||||
| distro_codename="${distro_codename}" | ||||
| distro_arch="${distro_arch}" | ||||
| application_version="${application_version}" | ||||
| EOM | ||||
							
								
								
									
										21
									
								
								dev/packer/scripts/099-one-click
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								dev/packer/scripts/099-one-click
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| #!/bin/sh | ||||
| # | ||||
| # Configured as part of the DigitalOcean 1-Click Image build process | ||||
|  | ||||
| myip=$(hostname -I | awk '{print$1}') | ||||
| cat <<EOF | ||||
| ******************************************************************************** | ||||
| Welcome to DigitalOcean's 1-Click Docker Droplet. | ||||
| To keep this Droplet secure, the UFW firewall is enabled. | ||||
| All ports are BLOCKED except 22 (SSH), 80 (Docker) and 443 (Docker). | ||||
| * The Docker 1-Click Quickstart guide is available at: | ||||
|   https://docs.requarks.io/install/digitalocean | ||||
| * You can SSH to this Droplet in a terminal as root: ssh root@$myip | ||||
| * Docker is installed and configured per Docker's recommendations: | ||||
|   https://docs.docker.com/install/linux/docker-ce/ubuntu/ | ||||
| * Docker Compose is installed and configured per Docker's recommendations: | ||||
|   https://docs.docker.com/compose/install/#install-compose | ||||
| For more information, visit https://docs.requarks.io/install/digitalocean | ||||
| ******************************************************************************** | ||||
| To delete this message of the day: rm -rf $(readlink -f ${0}) | ||||
| EOF | ||||
							
								
								
									
										44
									
								
								dev/packer/scripts/900-cleanup.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								dev/packer/scripts/900-cleanup.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,44 @@ | ||||
| #!/bin/bash | ||||
|  | ||||
| # Ensure /tmp exists and has the proper permissions before | ||||
| # checking for security updates | ||||
| # https://github.com/digitalocean/marketplace-partners/issues/94 | ||||
| if [[ ! -d /tmp ]]; then | ||||
|   mkdir /tmp | ||||
| fi | ||||
| chmod 1777 /tmp | ||||
|  | ||||
| apt-get -y update | ||||
| apt-get -y upgrade | ||||
| rm -rf /tmp/* /var/tmp/* | ||||
| history -c | ||||
| cat /dev/null > /root/.bash_history | ||||
| unset HISTFILE | ||||
| apt-get -y autoremove | ||||
| apt-get -y autoclean | ||||
| find /var/log -mtime -1 -type f -exec truncate -s 0 {} \; | ||||
| rm -rf /var/log/*.gz /var/log/*.[0-9] /var/log/*-???????? | ||||
| rm -rf /var/lib/cloud/instances/* | ||||
| rm -f /root/.ssh/authorized_keys /etc/ssh/*key* | ||||
| touch /etc/ssh/revoked_keys | ||||
| chmod 600 /etc/ssh/revoked_keys | ||||
|  | ||||
| # Securely erase the unused portion of the filesystem | ||||
| GREEN='\033[0;32m' | ||||
| NC='\033[0m' | ||||
| printf "\n${GREEN}Writing zeros to the remaining disk space to securely | ||||
| erase the unused portion of the file system. | ||||
| Depending on your disk size this may take several minutes. | ||||
| The secure erase will complete successfully when you see:${NC} | ||||
|     dd: writing to '/zerofile': No space left on device\n | ||||
| Beginning secure erase now\n" | ||||
|  | ||||
| dd if=/dev/zero of=/zerofile & | ||||
|   PID=$! | ||||
|   while [ -d /proc/$PID ] | ||||
|     do | ||||
|       printf "." | ||||
|       sleep 5 | ||||
|     done | ||||
| sync; rm /zerofile; sync | ||||
| cat /dev/null > /var/log/lastlog; cat /dev/null > /var/log/wtmp | ||||
		Reference in New Issue
	
	Block a user