@@ -16,12 +16,25 @@ echo ""
1616# Disable interactive options when installing with apt-get
1717export DEBIAN_FRONTEND=noninteractive
1818
19- echo export LC_ALL=en_US.UTF-8 >> ~ /.bash_profile
20- echo export LANG=en_US.UTF-8 >> ~ /.bash_profile
19+ echo export LC_ALL=C.UTF-8 >> ~ /.bash_profile
20+ echo export LANG=C.UTF-8 >> ~ /.bash_profile
21+
22+ sudo bash -c ' cat > /etc/apt/apt.conf.d/01lean' << 'EOF '
23+ APT::Install-Suggests "0";
24+ APT::Install-Recommends "0";
25+ APT::AutoRemove::SuggestsImportant "false";
26+ APT::AutoRemove::RecommendsImportant "false";
27+ EOF
2128
2229echo Updating...
30+ sudo apt-get -qqy update
31+ sudo apt-get install -qqy linux-headers-$( uname -r) \
32+ linux-headers-generic \
33+ linux-image-extra-$( uname -r) \
34+ linux-image-extra-virtual
35+
2336sudo apt-get -y update
24- sudo apt-get install -y zfsutils-linux git
37+ sudo apt-get -qqy install zfsutils-linux git
2538
2639echo " Creating ZFS for lxd"
2740sudo zpool create -m /var/lib/lxd -f lxd sdb
@@ -31,8 +44,14 @@ sudo touch /etc/init/zpool-import.conf
3144sudo sed -i ' s/modprobe zfs zfs_autoimport_disable=1/modprobe zfs zfs_autoimport_disable=0/g' /etc/init/zpool-import.conf
3245sudo sed -i ' s/# By default this script does nothing./zfs mount -a/g' /etc/rc.local
3346
47+ echo " Creating ZFS for docker"
48+ sudo zpool create -m /var/lib/docker -f docker sdc
49+ sudo zpool set feature@lz4_compress=enabled docker
50+ sudo zfs set compression=lz4 docker
51+ sudo touch /etc/init/zpool-import.conf
52+
3453echo " Install LXD and initialize with ZFS storage-pool 'lxd' for backend"
35- sudo apt-get install -y lxd
54+ sudo apt-get install -y lxd lxd-client
3655sudo lxd init --auto --storage-backend zfs --storage-pool lxd
3756
3857# flip the module parameters to enable user namespace mounts for fuse and/or ext4 within lxd containers
84103
85104sudo hostname openstack
86105
87- # speed up DNS resolution
88- sudo bash -c ' cat > /etc/dhcp/dhclient.conf' << EOF
89- timeout 30;
90- retry 10;
91- reboot 0;
92- select-timeout 0;
93- initial-interval 1;
94- backoff-cutoff 2;
95- interface "enp0s3"
96- {
97- prepend domain-name-servers 8.8.8.8, 8.8.4.4;
98- request subnet-mask,
99- broadcast-address,
100- time-offset,
101- routers,
102- domain-name,
103- domain-name-servers,
104- host-name,
105- netbios-name-servers,
106- netbios-scope;
107- }
108- EOF
106+ # # speed up DNS resolution
107+ # sudo bash -c 'cat > /etc/dhcp/dhclient.conf' <<EOF
108+ # timeout 30;
109+ # retry 10;
110+ # reboot 0;
111+ # select-timeout 0;
112+ # initial-interval 1;
113+ # backoff-cutoff 2;
114+ # interface "enp0s3"
115+ # {
116+ # prepend domain-name-servers 8.8.8.8, 8.8.4.4;
117+ # request subnet-mask,
118+ # broadcast-address,
119+ # time-offset,
120+ # routers,
121+ # domain-name,
122+ # domain-name-servers,
123+ # host-name,
124+ # netbios-name-servers,
125+ # netbios-scope;
126+ # }
127+ # EOF
109128
110129echo enable cgroup memory limits
111130sudo sed -i ' s/GRUB_CMDLINE_LINUX_DEFAULT="/GRUB_CMDLINE_LINUX_DEFAULT="cgroup_enable=memory swapaccount=1 /g' /etc/default/grub
@@ -180,11 +199,19 @@ sudo update-rc.d devstack start 98 2 3 4 5 . stop 02 0 1 6 .
180199# Script only works if sudo caches the password for a few minutes
181200sudo true
182201
183- # Install kernel extra's to enable docker aufs support
184- sudo apt-get -y install linux-image-extra-$( uname -r)
185-
186202# install docker
187- wget -qO- https://get.docker.com/ | sh
203+ sudo apt-get update
204+ sudo apt-get install -qqy apt-transport-https ca-certificates
205+ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
206+
207+ sudo touch /etc/apt/sources.list.d/docker.list
208+ sudo bash -c ' echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" > /etc/apt/sources.list.d/docker.list'
209+
210+ sudo apt-get update
211+ sudo apt-get purge lxc-docker
212+
213+ sudo apt-get update
214+ sudo apt-get install -qqy docker-engine
188215
189216# Install docker-compose
190217COMPOSE_VERSION=` git ls-remote https://github.com/docker/compose | grep refs/tags | grep -oP " [0-9]+\.[0-9]+\.[0-9]+$" | tail -n 1`
@@ -198,6 +225,51 @@ sudo chmod +x /usr/local/bin/docker-cleanup
198225
199226# add vagrant user to docker group
200227sudo usermod -aG docker vagrant
228+ newgrp docker
229+
230+ # have docker listen on a port instead of a unix socket for remote administration
231+ sudo bash -c ' cat > /etc/systemd/system/docker.socket' << 'EOF '
232+ [Socket]
233+ ListenStream=0.0.0.0:2375
234+ EOF
235+
236+ sudo mkdir -p /etc/systemd/system/docker.service.d
237+
238+ # have docker utilze lxc to launch containers
239+ sudo bash -c ' cat > /etc/systemd/system/docker.service.d/lxc.conf' << 'EOF '
240+ [Service]
241+ ExecStart=
242+ ExecStart=/usr/bin/dockerd -H fd:// --ip 192.168.27.100 -b lxdbr0
243+ EOF
244+
245+ # Docker enables IP forwarding by itself, but by default systemd overrides
246+ # the respective sysctl setting. The following disables this override (for all interfaces):
247+ sudo bash -c ' cat > /etc/systemd/network/ipforward.network' << 'EOF '
248+ [Network]
249+ IPForward=ipv4
250+ EOF
251+
252+ sudo bash -c ' cat > /etc/sysctl.d/99-docker.conf' << 'EOF '
253+ net.ipv4.ip_forward = 1
254+ EOF
255+
256+ sudo sysctl -w net.ipv4.ip_forward=1
257+
258+ # adjust the number of processes allowed by systemd
259+ sudo bash -c ' cat > /etc/systemd/system/docker.service.d/tasks.conf' << 'EOF '
260+ [Service]
261+ TasksMax=infinity
262+ EOF
263+
264+ sudo bash -c ' cat >> /home/vagrant/.bash_profile' << 'EOF '
265+ export DOCKER_HOST=192.168.27.100
266+ EOF
267+
268+ sudo systemctl daemon-reload
269+ sudo systemctl restart systemd-networkd
270+ sudo systemctl restart docker.service
271+
272+ # sysctl -w net.ipv4.ip_forward=1
201273
202274# install kuryr
203275# sudo git clone https://git.openstack.org/openstack/kuryr.git /opt/stack/kuryr
0 commit comments