-
Notifications
You must be signed in to change notification settings - Fork 92
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Squashed 'tools/' changes from 9857568..41c5622
41c5622 Merge pull request #90 from weaveworks/build-golang-service-conf e8ebdd5 broaden imagetag regex to fix haskell build image ba3fbfa Merge pull request #89 from weaveworks/build-golang-service-conf e506f1b Fix up test script for updated shfmt 9216db8 Add stuff for service-conf build to build-goland image 66a9a93 Merge pull request #88 from weaveworks/haskell-image cb3e3a2 shfmt 74a5239 Haskell build image 4ccd42b Trying circle quay login b2c295f Merge branch 'common-build' 0ac746f Trim quay prefix in circle script c405b31 Merge pull request #87 from weaveworks/common-build 9672d7c Push build images to quay as they have sane robot accounts a2bf112 Review feedback fef9b7d Add protobuf tools 10a77ea Update readme 254f266 Don't need the image name in ffb59fc Adding a weaveworks/build-golang image with tags b817368 Update min Weave Net docker version cf87ca3 Merge pull request #86 from weaveworks/lock-kubeadm-version 3ae6919 Add example of custom SSH private key to tf_ssh's usage. cf8bd8a Add example of custom SSH private key to tf_ansi's usage. c7d3370 Lock kubeadm's Kubernetes version. faaaa6f Merge pull request #84 from weaveworks/centos-rhel ef552e7 Select weave-kube YAML URL based on K8S version. b4c1198 Upgrade default kubernetes_version to 1.6.1. b82805e Use a fixed version of kubeadm. f33888b Factorise and make kubeconfig option optional. f7b8b89 Install EPEL repo for CentOS. 615917a Fix error in decrypting AWS access key and secret. 86f97b4 Add CentOS 7 AMI and username for AWS via Terraform. eafd810 Add tf_ansi example with Ansible variables. 2b05787 Skip setup of Docker over TCP for CentOS/RHEL. 84c420b Add docker-ce role for CentOS/RHEL. 00a820c Add setup_weave-net_debug.yml playbook for user issues' debugging. 3eae480 Upgrade default kubernetes_version to 1.5.4. 753921c Allow injection of Docker installation role. e1ff90d Fix kubectl taint command for 1.5. b989e97 Fix typo in kubectl taint for single node K8S cluster. 541f58d Remove 'install_recommends: no' for ethtool. c3f9711 Make Ansible role docker-from-get.docker.com work on RHEL/CentOS. 038c0ae Add frequently used OS images, for convenience. d30649f Add --insecure-registry to docker.conf 1dd9218 shfmt -i 4 -w push-images 6de96ac Add option to not push docker hub images 310f53d Add push-images script from cortex 8641381 Add port 6443 to kubeadm join commands for K8S 1.6+. 50bf0bc Force type of K8S token to string. 08ab1c0 Remove trailing whitespaces. ae9efb8 Enable testing against K8S release candidates. 9e32194 Secure GCP servers for Scope: open port 80. a22536a Secure GCP servers for Scope. 89c3a29 Merge pull request #78 from weaveworks/lint-merge-rebase-issue-in-docs 73ad56d Add linter function to avoid bad merge/rebase artefact 52d695c Merge pull request #77 from kinvolk/schu/fix-relative-weave-path 77aed01 Merge pull request #73 from weaveworks/mike/sched/fix-unicode-issue 7c080f4 integration/sanity_check: disable SC1090 d6d360a integration/gce.sh: update gcloud command e8def2c provisioning/setup: fix shellcheck SC2140 cc02224 integration/config: fix weave path 9c0d6a5 Fix config_management/README.md 334708c Merge pull request #75 from kinvolk/alban/external-build-1 da2505d gce.sh: template: print creation date e676854 integration tests: fix user account 8530836 host nameing: add repo name b556c0a gce.sh: fix deletion of gce instances 2ecd1c2 integration: fix GCE --zones/--zone parameter 3e863df sched: Fix unicode encoding issues 51785b5 Use rm -f and set current dir using BASH_SOURCE. f5c6d68 Merge pull request #71 from kinvolk/schu/fix-linter-warnings 0269628 Document requirement for `lint_sh` 9a3f09e Fix linter warnings efcf9d2 Merge pull request #53 from weaveworks/2647-testing-mvp d31ea57 Weave Kube playbook now works with multiple nodes. 27868dd Add GCP firewall rule for FastDP crypto. edc8bb3 Differentiated name of dev and test playbooks, to avoid confusion. efa3df7 Moved utility Ansible Yaml to library directory. fcd2769 Add shorthands to run Ansible playbooks against Terraform-provisioned virtual machines. f7946fb Add shorthands to SSH into Terraform-provisioned virtual machines. aad5c6f Mention Terraform and Ansible in README.md. dddabf0 Add Terraform output required for templates' creation. dcc7d02 Add Ansible configuration playbooks for development environments. f86481c Add Ansible configuration playbooks for Docker, K8S and Weave-Net. efedd25 Git-ignore Ansible retry files. 765c4ca Add helper functions to setup Terraform programmatically. 801dd1d Add Terraform cloud provisioning scripts. b8017e1 Install hclfmt on CircleCI. 4815e19 Git-ignore Terraform state files. 0aaebc7 Add script to generate cartesian product of dependencies of cross-version testing. 007d90a Add script to list OS images from GCP, AWS and DO. ca65cc0 Add script to list relevant versions of Go, Docker and Kubernetes. aa66f44 Scripts now source dependencies using absolute path (previously breaking make depending on current directory). 7865e86 Add -p option to parallelise lint. 36c1835 Merge pull request #69 from weaveworks/mflag git-subtree-dir: tools git-subtree-split: 41c562219dcc03a70dfdd9b1353cd4cd4f1cab46
- Loading branch information
Showing
69 changed files
with
3,210 additions
and
29 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -4,3 +4,7 @@ socks/image.tar | |
runner/runner | ||
*.pyc | ||
*~ | ||
terraform.tfstate | ||
terraform.tfstate.backup | ||
*.retry | ||
build/**/.uptodate |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
.PHONY: all clean images | ||
.DEFAULT_GOAL := all | ||
|
||
# Boiler plate for bulding Docker containers. | ||
# All this must go at top of file I'm afraid. | ||
IMAGE_PREFIX := quay.io/weaveworks/build- | ||
IMAGE_TAG := $(shell ../image-tag) | ||
UPTODATE := .uptodate | ||
|
||
# Every directory with a Dockerfile in it builds an image called | ||
# $(IMAGE_PREFIX)<dirname>. Dependencies (i.e. things that go in the image) | ||
# still need to be explicitly declared. | ||
%/$(UPTODATE): %/Dockerfile %/* | ||
$(SUDO) docker build -t $(IMAGE_PREFIX)$(shell basename $(@D)) $(@D)/ | ||
$(SUDO) docker tag $(IMAGE_PREFIX)$(shell basename $(@D)) $(IMAGE_PREFIX)$(shell basename $(@D)):$(IMAGE_TAG) | ||
touch $@ | ||
|
||
# Get a list of directories containing Dockerfiles | ||
DOCKERFILES := $(shell find . -name tools -prune -o -name vendor -prune -o -type f -name 'Dockerfile' -print) | ||
UPTODATE_FILES := $(patsubst %/Dockerfile,%/$(UPTODATE),$(DOCKERFILES)) | ||
DOCKER_IMAGE_DIRS := $(patsubst %/Dockerfile,%,$(DOCKERFILES)) | ||
IMAGE_NAMES := $(foreach dir,$(DOCKER_IMAGE_DIRS),$(patsubst %,$(IMAGE_PREFIX)%,$(shell basename $(dir)))) | ||
images: | ||
$(info $(IMAGE_NAMES)) | ||
@echo > /dev/null | ||
|
||
# Define imagetag-golang, etc, for each image, which parses the dockerfile and | ||
# prints an image tag. For example: | ||
# FROM golang:1.8.1-stretch | ||
# in the "foo/Dockerfile" becomes: | ||
# $ make imagetag-foo | ||
# 1.8.1-stretch | ||
define imagetag_dep | ||
.PHONY: imagetag-$(1) | ||
$(patsubst $(IMAGE_PREFIX)%,imagetag-%,$(1)): $(patsubst $(IMAGE_PREFIX)%,%,$(1))/Dockerfile | ||
@cat $$< | grep "^FROM " | head -n1 | sed 's/FROM \(.*\):\(.*\)/\2/' | ||
endef | ||
$(foreach image, $(IMAGE_NAMES), $(eval $(call imagetag_dep, $(image)))) | ||
|
||
all: $(UPTODATE_FILES) | ||
|
||
clean: | ||
$(SUDO) docker rmi $(IMAGE_NAMES) >/dev/null 2>&1 || true | ||
rm -rf $(UPTODATE_FILES) | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
FROM golang:1.8.0-stretch | ||
RUN apt-get update && \ | ||
apt-get install -y \ | ||
curl \ | ||
file \ | ||
git \ | ||
jq \ | ||
libprotobuf-dev \ | ||
make \ | ||
protobuf-compiler \ | ||
python-pip \ | ||
python-requests \ | ||
python-yaml \ | ||
unzip && \ | ||
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* | ||
RUN pip install attrs | ||
RUN go clean -i net && \ | ||
go install -tags netgo std && \ | ||
go install -race -tags netgo std | ||
RUN go get -tags netgo \ | ||
github.com/FiloSottile/gvt \ | ||
github.com/client9/misspell/cmd/misspell \ | ||
github.com/fatih/hclfmt \ | ||
github.com/fzipp/gocyclo \ | ||
github.com/gogo/protobuf/gogoproto \ | ||
github.com/gogo/protobuf/protoc-gen-gogoslick \ | ||
github.com/golang/dep/... \ | ||
github.com/golang/lint/golint \ | ||
github.com/golang/protobuf/protoc-gen-go \ | ||
github.com/kisielk/errcheck \ | ||
github.com/mjibson/esc \ | ||
github.com/mvdan/sh/cmd/shfmt \ | ||
github.com/prometheus/prometheus/cmd/promtool && \ | ||
rm -rf /go/pkg /go/src | ||
RUN mkdir protoc && \ | ||
cd protoc && \ | ||
curl -O -L https://github.com/google/protobuf/releases/download/v3.1.0/protoc-3.1.0-linux-x86_64.zip && \ | ||
unzip protoc-3.1.0-linux-x86_64.zip && \ | ||
cp bin/protoc /usr/bin/ && \ | ||
chmod o+x /usr/bin/protoc && \ | ||
cd .. && \ | ||
rm -rf protoc | ||
RUN mkdir -p /var/run/secrets/kubernetes.io/serviceaccount && \ | ||
touch /var/run/secrets/kubernetes.io/serviceaccount/token | ||
COPY build.sh / | ||
ENTRYPOINT ["/build.sh"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
#!/bin/sh | ||
|
||
set -eu | ||
|
||
if [ -n "${SRC_NAME:-}" ]; then | ||
SRC_PATH=${SRC_PATH:-$GOPATH/src/$SRC_NAME} | ||
elif [ -z "${SRC_PATH:-}" ]; then | ||
echo "Must set either \$SRC_NAME or \$SRC_PATH." | ||
exit 1 | ||
fi | ||
|
||
# If we run make directly, any files created on the bind mount | ||
# will have awkward ownership. So we switch to a user with the | ||
# same user and group IDs as source directory. We have to set a | ||
# few things up so that sudo works without complaining later on. | ||
uid=$(stat --format="%u" $SRC_PATH) | ||
gid=$(stat --format="%g" $SRC_PATH) | ||
echo "weave:x:$uid:$gid::$SRC_PATH:/bin/sh" >>/etc/passwd | ||
echo "weave:*:::::::" >>/etc/shadow | ||
echo "weave ALL=(ALL) NOPASSWD: ALL" >>/etc/sudoers | ||
|
||
su weave -c "PATH=$PATH make -C $SRC_PATH BUILD_IN_CONTAINER=false $*" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
FROM fpco/stack-build:lts-8.9 | ||
COPY build.sh / | ||
COPY copy-libraries /usr/local/bin/ | ||
ENTRYPOINT ["/build.sh"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
#!/bin/sh | ||
# | ||
# Build a static Haskell binary using stack. | ||
|
||
set -eu | ||
|
||
if [ -z "${SRC_PATH:-}" ]; then | ||
echo "Must set \$SRC_PATH." | ||
exit 1 | ||
fi | ||
|
||
make -C $SRC_PATH BUILD_IN_CONTAINER=false $* |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
#!/bin/bash | ||
# | ||
# Copy dynamically linked libraries for a binary, so we can assemble a Docker | ||
# image. | ||
# | ||
# Run with: | ||
# copy-libraries /path/to/binary /output/dir | ||
# | ||
# Dependencies: | ||
# - awk | ||
# - cp | ||
# - grep | ||
# - ldd | ||
# - mkdir | ||
|
||
set -o errexit | ||
set -o nounset | ||
set -o pipefail | ||
|
||
# Path to a Linux binary that we're going to run in the container. | ||
binary_path="${1}" | ||
# Path to directory to write the output to. | ||
output_dir="${2}" | ||
|
||
exe_name=$(basename "${binary_path}") | ||
|
||
# Identify linked libraries. | ||
libraries=($(ldd "${binary_path}" | awk '{print $(NF-1)}' | grep -v '=>')) | ||
# Add /bin/sh, which we need for Docker imports. | ||
libraries+=('/bin/sh') | ||
|
||
mkdir -p "${output_dir}" | ||
|
||
# Copy executable and all needed libraries into temporary directory. | ||
cp "${binary_path}" "${output_dir}/${exe_name}" | ||
for lib in "${libraries[@]}"; do | ||
mkdir -p "${output_dir}/$(dirname "$lib")" | ||
# Need -L to make sure we get actual libraries & binaries, not symlinks to | ||
# them. | ||
cp -L "${lib}" "${output_dir}/${lib}" | ||
done |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,119 @@ | ||
# Weaveworks configuration management | ||
|
||
## Introduction | ||
|
||
This project allows you to configure a machine with: | ||
|
||
* Docker and Weave Net for development: `setup_weave-net_dev.yml` | ||
* Docker and Weave Net for testing: `setup_weave-net_test.yml` | ||
* Docker, Kubernetes and Weave Kube (CNI plugin): `setup_weave-kube.yml` | ||
|
||
You can then use these environments for development, testing and debugging. | ||
|
||
## Set up | ||
|
||
You will need [Python](https://www.python.org/downloads/) and [Ansible 2.+](http://docs.ansible.com/ansible/intro_installation.html) installed on your machine and added to your `PATH` in order to be able to configure environments automatically. | ||
|
||
* On any platform, if you have Python installed: `pip install ansible` | ||
* On macOS: `brew install ansible` | ||
* On Linux (via Aptitude): `sudo apt install ansible` | ||
* On Linux (via YUM): `sudo yum install ansible` | ||
* For other platforms or more details, see [here](http://docs.ansible.com/ansible/intro_installation.html) | ||
|
||
Frequent errors during installation are: | ||
|
||
* `fatal error: Python.h: No such file or directory`: install `python-dev` | ||
* `fatal error: ffi.h: No such file or directory`: install `libffi-dev` | ||
* `fatal error: openssl/opensslv.h: No such file or directory`: install `libssl-dev` | ||
|
||
Full steps for a blank Ubuntu/Debian Linux machine: | ||
|
||
sudo apt-get install -qq -y python-pip python-dev libffi-dev libssl-dev | ||
sudo pip install -U cffi | ||
sudo pip install ansible | ||
|
||
## Tags | ||
|
||
These can be used to selectively run (`--tags "tag1,tag2"`) or skip (`--skip-tags "tag1,tag2"`) tasks. | ||
|
||
* `output`: print potentially useful output from hosts (e.g. output of `kubectl get pods --all-namespaces`) | ||
|
||
## Usage | ||
|
||
### Local machine | ||
|
||
``` | ||
ansible-playbook -u <username> -i "localhost", -c local setup_weave-kube.yml | ||
``` | ||
|
||
### Vagrant | ||
|
||
Provision your local VM using Vagrant: | ||
|
||
``` | ||
cd $(mktemp -d -t XXX) | ||
vagrant init ubuntu/xenial64 # or, e.g. centos/7 | ||
vagrant up | ||
``` | ||
|
||
then set the following environment variables by extracting the output of `vagrant ssh-config`: | ||
|
||
``` | ||
eval $(vagrant ssh-config | sed \ | ||
-ne 's/\ *HostName /vagrant_ssh_host=/p' \ | ||
-ne 's/\ *User /vagrant_ssh_user=/p' \ | ||
-ne 's/\ *Port /vagrant_ssh_port=/p' \ | ||
-ne 's/\ *IdentityFile /vagrant_ssh_id_file=/p') | ||
``` | ||
|
||
and finally run: | ||
|
||
``` | ||
ansible-playbook --private-key=$vagrant_ssh_id_file -u $vagrant_ssh_user \ | ||
--ssh-extra-args="-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" \ | ||
-i "$vagrant_ssh_host:$vagrant_ssh_port," setup_weave-kube.yml | ||
``` | ||
|
||
or, for specific versions of Kubernetes and Docker: | ||
|
||
``` | ||
ansible-playbook --private-key=$vagrant_ssh_id_file -u $vagrant_ssh_user \ | ||
--ssh-extra-args="-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" \ | ||
-i "$vagrant_ssh_host:$vagrant_ssh_port," setup_weave-kube.yml \ | ||
--extra-vars "docker_version=1.12.3 kubernetes_version=1.4.4" | ||
``` | ||
|
||
NOTE: Kubernetes APT repo includes only the latest version, so currently | ||
retrieving an older version will fail. | ||
|
||
### Terraform | ||
|
||
Provision your machine using the Terraform scripts from `../provisioning`, then run: | ||
|
||
``` | ||
terraform output ansible_inventory > /tmp/ansible_inventory | ||
``` | ||
|
||
and | ||
|
||
``` | ||
ansible-playbook \ | ||
--private-key="$(terraform output private_key_path)" \ | ||
-u "$(terraform output username)" \ | ||
-i /tmp/ansible_inventory \ | ||
--ssh-extra-args="-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" \ | ||
../../config_management/setup_weave-kube.yml | ||
``` | ||
|
||
To specify versions of Kubernetes and Docker see Vagrant examples above. | ||
|
||
N.B.: `--ssh-extra-args` is used to provide: | ||
|
||
* `StrictHostKeyChecking=no`: as VMs come and go, the same IP can be used by a different machine, so checking the host's SSH key may fail. Note that this introduces a risk of a man-in-the-middle attack. | ||
* `UserKnownHostsFile=/dev/null`: if you previously connected a VM with the same IP but a different public key, and added it to `~/.ssh/known_hosts`, SSH may still fail to connect, hence we use `/dev/null` instead of `~/.ssh/known_hosts`. | ||
|
||
## Resources | ||
|
||
* [https://www.vagrantup.com/docs/provisioning/ansible.html](https://www.vagrantup.com/docs/provisioning/ansible.html) | ||
* [http://docs.ansible.com/ansible/guide_vagrant.html](http://docs.ansible.com/ansible/guide_vagrant.html) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
--- | ||
go_version: 1.7.4 | ||
terraform_version: 0.8.5 | ||
docker_version: 1.11.2 | ||
docker_install_role: 'docker-from-get.docker.com' | ||
kubernetes_version: 1.6.1 | ||
kubernetes_cni_version: 0.5.1 | ||
kubernetes_token: '123456.0123456789123456' | ||
etcd_container_version: 2.2.5 | ||
kube_discovery_container_version: 1.0 | ||
pause_container_version: 3.0 |
Oops, something went wrong.