-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Build an AMI #4
Build an AMI #4
Changes from 6 commits
6855c58
d0764bb
e71a6fe
30be5f7
f18b917
cc3a3b1
370df02
e7239ad
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,11 @@ | ||
**/.cpcache | ||
**/.nrepl-port | ||
**/target | ||
*.box | ||
*.deb | ||
*.pem | ||
*.tar.* | ||
*.tfstate | ||
*.tfstate.backup | ||
/share/**/.SRCINFO | ||
/share/**/pkg | ||
/share/**/src | ||
/terraform/.terraform | ||
/terraform/proposed.plan |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,16 @@ | ||
.PHONY: all debug | ||
|
||
COMMIT_REF=$(shell git rev-parse --short HEAD) | ||
|
||
all: | ||
packer build \ | ||
arch.json | ||
-var "commit_ref=$(COMMIT_REF)" \ | ||
rock.json | ||
|
||
debug: | ||
packer build -debug \ | ||
-var "commit_ref=$(COMMIT_REF)" \ | ||
rock.json | ||
|
||
test: | ||
shellcheck **/*.sh |
This file was deleted.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,147 @@ | ||
# | ||
# /etc/makepkg.conf | ||
# | ||
|
||
######################################################################### | ||
# SOURCE ACQUISITION | ||
######################################################################### | ||
# | ||
#-- The download utilities that makepkg should use to acquire sources | ||
# Format: 'protocol::agent' | ||
DLAGENTS=('ftp::/usr/bin/curl -fC - --ftp-pasv --retry 3 --retry-delay 3 -o %o %u' | ||
'http::/usr/bin/curl -fLC - --retry 3 --retry-delay 3 -o %o %u' | ||
'https::/usr/bin/curl -fLC - --retry 3 --retry-delay 3 -o %o %u' | ||
'rsync::/usr/bin/rsync --no-motd -z %u %o' | ||
'scp::/usr/bin/scp -C %u %o') | ||
|
||
# Other common tools: | ||
# /usr/bin/snarf | ||
# /usr/bin/lftpget -c | ||
# /usr/bin/wget | ||
|
||
#-- The package required by makepkg to download VCS sources | ||
# Format: 'protocol::package' | ||
VCSCLIENTS=('bzr::bzr' | ||
'git::git' | ||
'hg::mercurial' | ||
'svn::subversion') | ||
|
||
######################################################################### | ||
# ARCHITECTURE, COMPILE FLAGS | ||
######################################################################### | ||
# | ||
CARCH="x86_64" | ||
CHOST="x86_64-pc-linux-gnu" | ||
|
||
#-- Compiler and Linker Flags | ||
# -march (or -mcpu) builds exclusively for an architecture | ||
# -mtune optimizes for an architecture, but builds for whole processor family | ||
CPPFLAGS="-D_FORTIFY_SOURCE=2" | ||
CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt" | ||
CXXFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt" | ||
LDFLAGS="-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now" | ||
#-- Make Flags: change this for DistCC/SMP systems | ||
#MAKEFLAGS="-j2" | ||
#-- Debugging flags | ||
DEBUG_CFLAGS="-g -fvar-tracking-assignments" | ||
DEBUG_CXXFLAGS="-g -fvar-tracking-assignments" | ||
|
||
######################################################################### | ||
# BUILD ENVIRONMENT | ||
######################################################################### | ||
# | ||
# Defaults: BUILDENV=(!distcc color !ccache check !sign) | ||
# A negated environment option will do the opposite of the comments below. | ||
# | ||
#-- distcc: Use the Distributed C/C++/ObjC compiler | ||
#-- color: Colorize output messages | ||
#-- ccache: Use ccache to cache compilation | ||
#-- check: Run the check() function if present in the PKGBUILD | ||
#-- sign: Generate PGP signature file | ||
# | ||
BUILDENV=(!distcc color !ccache check !sign) | ||
# | ||
#-- If using DistCC, your MAKEFLAGS will also need modification. In addition, | ||
#-- specify a space-delimited list of hosts running in the DistCC cluster. | ||
#DISTCC_HOSTS="" | ||
# | ||
#-- Specify a directory for package building. | ||
#BUILDDIR=/tmp/makepkg | ||
|
||
######################################################################### | ||
# GLOBAL PACKAGE OPTIONS | ||
# These are default values for the options=() settings | ||
######################################################################### | ||
# | ||
# Default: OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !optipng !upx !debug) | ||
# A negated option will do the opposite of the comments below. | ||
# | ||
#-- strip: Strip symbols from binaries/libraries | ||
#-- docs: Save doc directories specified by DOC_DIRS | ||
#-- libtool: Leave libtool (.la) files in packages | ||
#-- staticlibs: Leave static library (.a) files in packages | ||
#-- emptydirs: Leave empty directories in packages | ||
#-- zipman: Compress manual (man and info) pages in MAN_DIRS with gzip | ||
#-- purge: Remove files specified by PURGE_TARGETS | ||
#-- upx: Compress binary executable files using UPX | ||
#-- optipng: Optimize PNG images with optipng | ||
#-- debug: Add debugging flags as specified in DEBUG_* variables | ||
# | ||
OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !optipng !upx !debug) | ||
|
||
#-- File integrity checks to use. Valid: md5, sha1, sha256, sha384, sha512 | ||
INTEGRITY_CHECK=(md5) | ||
#-- Options to be used when stripping binaries. See `man strip' for details. | ||
STRIP_BINARIES="--strip-all" | ||
#-- Options to be used when stripping shared libraries. See `man strip' for details. | ||
STRIP_SHARED="--strip-unneeded" | ||
#-- Options to be used when stripping static libraries. See `man strip' for details. | ||
STRIP_STATIC="--strip-debug" | ||
#-- Manual (man and info) directories to compress (if zipman is specified) | ||
MAN_DIRS=({usr{,/local}{,/share},opt/*}/{man,info}) | ||
#-- Doc directories to remove (if !docs is specified) | ||
DOC_DIRS=(usr/{,local/}{,share/}{doc,gtk-doc} opt/*/{doc,gtk-doc}) | ||
#-- Files to be removed from all packages (if purge is specified) | ||
PURGE_TARGETS=(usr/{,share}/info/dir .packlist *.pod) | ||
|
||
######################################################################### | ||
# PACKAGE OUTPUT | ||
######################################################################### | ||
# | ||
# Default: put built package and cached source in build directory | ||
# | ||
#-- Destination: specify a fixed directory where all packages will be placed | ||
PKGDEST=/var/cache/pacman/juxt | ||
#-- Source cache: specify a fixed directory where source files will be cached | ||
#SRCDEST=/home/sources | ||
#-- Source packages: specify a fixed directory where all src packages will be placed | ||
#SRCPKGDEST=/home/srcpackages | ||
#-- Log files: specify a fixed directory where all log files will be placed | ||
#LOGDEST=/home/makepkglogs | ||
#-- Packager: name/email of the person or organization building packages | ||
#PACKAGER="John Doe <[email protected]>" | ||
#-- Specify a key to use for package signing | ||
#GPGKEY="" | ||
|
||
######################################################################### | ||
# COMPRESSION DEFAULTS | ||
######################################################################### | ||
# | ||
COMPRESSGZ=(gzip -c -f -n) | ||
COMPRESSBZ2=(bzip2 -c -f) | ||
COMPRESSXZ=(xz -c -z -) | ||
COMPRESSLRZ=(lrzip -q) | ||
COMPRESSLZO=(lzop -q) | ||
COMPRESSZ=(compress -c -f) | ||
|
||
######################################################################### | ||
# EXTENSION DEFAULTS | ||
######################################################################### | ||
# | ||
# WARNING: Do NOT modify these variables unless you know what you are | ||
# doing. | ||
# | ||
PKGEXT='.pkg.tar.xz' | ||
SRCEXT='.src.tar.gz' | ||
|
||
# vim: set ft=sh ts=2 sw=2 et: |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
## sudoers file. | ||
## | ||
## This file MUST be edited with the 'visudo' command as root. | ||
## Failure to use 'visudo' may result in syntax or file permission errors | ||
## that prevent sudo from running. | ||
## | ||
## See the sudoers man page for the details on how to write a sudoers file. | ||
## | ||
|
||
## | ||
## Host alias specification | ||
## | ||
## Groups of machines. These may include host names (optionally with wildcards), | ||
## IP addresses, network numbers or netgroups. | ||
# Host_Alias WEBSERVERS = www1, www2, www3 | ||
|
||
## | ||
## User alias specification | ||
## | ||
## Groups of users. These may consist of user names, uids, Unix groups, | ||
## or netgroups. | ||
# User_Alias ADMINS = millert, dowdy, mikef | ||
|
||
## | ||
## Cmnd alias specification | ||
## | ||
## Groups of commands. Often used to group related commands together. | ||
# Cmnd_Alias PROCESSES = /usr/bin/nice, /bin/kill, /usr/bin/renice, \ | ||
# /usr/bin/pkill, /usr/bin/top | ||
# Cmnd_Alias REBOOT = /sbin/halt, /sbin/reboot, /sbin/poweroff | ||
|
||
## | ||
## Defaults specification | ||
## | ||
## You may wish to keep some of the following environment variables | ||
## when running commands via sudo. | ||
## | ||
## Locale settings | ||
# Defaults env_keep += "LANG LANGUAGE LINGUAS LC_* _XKB_CHARSET" | ||
## | ||
## Run X applications through sudo; HOME is used to find the | ||
## .Xauthority file. Note that other programs use HOME to find | ||
## configuration files and this may lead to privilege escalation! | ||
# Defaults env_keep += "HOME" | ||
## | ||
## X11 resource path settings | ||
# Defaults env_keep += "XAPPLRESDIR XFILESEARCHPATH XUSERFILESEARCHPATH" | ||
## | ||
## Desktop path settings | ||
# Defaults env_keep += "QTDIR KDEDIR" | ||
## | ||
## Allow sudo-run commands to inherit the callers' ConsoleKit session | ||
# Defaults env_keep += "XDG_SESSION_COOKIE" | ||
## | ||
## Uncomment to enable special input methods. Care should be taken as | ||
## this may allow users to subvert the command being run via sudo. | ||
# Defaults env_keep += "XMODIFIERS GTK_IM_MODULE QT_IM_MODULE QT_IM_SWITCHER" | ||
## | ||
## Uncomment to use a hard-coded PATH instead of the user's to find commands | ||
# Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" | ||
## | ||
## Uncomment to send mail if the user does not enter the correct password. | ||
# Defaults mail_badpass | ||
## | ||
## Uncomment to enable logging of a command's output, except for | ||
## sudoreplay and reboot. Use sudoreplay to play back logged sessions. | ||
# Defaults log_output | ||
# Defaults!/usr/bin/sudoreplay !log_output | ||
# Defaults!/usr/local/bin/sudoreplay !log_output | ||
# Defaults!REBOOT !log_output | ||
|
||
## | ||
## Runas alias specification | ||
## | ||
|
||
## | ||
## User privilege specification | ||
## | ||
root ALL=(ALL) ALL | ||
|
||
## Uncomment to allow members of group wheel to execute any command | ||
# %wheel ALL=(ALL) ALL | ||
|
||
## Same thing without a password | ||
%wheel ALL=(ALL) NOPASSWD: ALL | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Passwordless sudo so we can install things more easily during deployment. Getting |
||
|
||
## Uncomment to allow members of group sudo to execute any command | ||
# %sudo ALL=(ALL) ALL | ||
|
||
## Uncomment to allow any user to run sudo if they know the password | ||
## of the user they are running the command as (root by default). | ||
# Defaults targetpw # Ask for the password of the target user | ||
# ALL ALL=(ALL) ALL # WARNING: only use this together with 'Defaults targetpw' | ||
|
||
## Read drop-in files from /etc/sudoers.d | ||
## (the '#' here does not indicate a comment) | ||
#includedir /etc/sudoers.d |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
{ | ||
"_comment": "Keys prefixed with an underscore are comments.", | ||
"variables": { | ||
"commit_ref": "none", | ||
"juxt_pkg_dir": "/var/lib/juxt-pkgbuilds", | ||
"juxt_repo_dir": "/var/cache/pacman/juxt" | ||
}, | ||
"builders": [ | ||
{ | ||
"type": "amazon-ebs", | ||
"region": "eu-west-1", | ||
"source_ami": "ami-0b8ec472", | ||
"instance_type": "t2.small", | ||
"ssh_username": "root", | ||
"ami_name": "juxt-rock-{{user `commit_ref`}}-{{timestamp}}" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. To make the AMI public you need to add |
||
} | ||
], | ||
"provisioners": [ | ||
{ | ||
"type": "shell", | ||
"script": "scripts/remove-llmnr.sh" | ||
}, | ||
{ | ||
"type": "file", | ||
"source": "etc/timesyncd.conf", | ||
"destination": "/etc/timesyncd.conf" | ||
}, | ||
{ | ||
"type": "file", | ||
"source": "etc/sudoers", | ||
"destination": "/etc/sudoers" | ||
}, | ||
{ | ||
"type": "file", | ||
"source": "etc/makepkg.conf", | ||
"destination": "/etc/makepkg.conf" | ||
}, | ||
{ | ||
"type": "shell", | ||
"script": "scripts/install-base.sh", | ||
"environment_vars": [ | ||
"PKG_DIR={{user `juxt_pkg_dir`}}", | ||
"REPO_DIR={{user `juxt_repo_dir`}}" | ||
] | ||
}, | ||
{ | ||
"type": "file", | ||
"source": "share/", | ||
"destination": "{{user `juxt_pkg_dir`}}" | ||
}, | ||
{ | ||
"type": "shell", | ||
"script": "scripts/install-custom.sh", | ||
"environment_vars": [ | ||
"PKG_DIR={{user `juxt_pkg_dir`}}", | ||
"REPO_DIR={{user `juxt_repo_dir`}}" | ||
] | ||
}, | ||
{ | ||
"type": "shell", | ||
"script": "scripts/install-clojure.sh" | ||
} | ||
], | ||
"post-processors": [ | ||
"vagrant" | ||
] | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This file is in here so I can point
makepkg
at the new Pacman cache dir where localPKGBUILD
and anything from AUR will end up.You can query packages not in 'core' Arch repos like so: