From e05ea7d8059b7aa413455facc1608f27711c9078 Mon Sep 17 00:00:00 2001 From: Ilya Shakhat Date: Tue, 11 Oct 2016 22:55:49 +0300 Subject: [PATCH] Add Ubuntu Xenial template for Shaker image builder Change-Id: I92c96eb191298de6895be8ec62b52cf3f89ac4ff --- doc/source/tools/shaker-all-in-one.txt | 3 +- doc/source/tools/shaker-image-builder.txt | 3 +- etc/shaker.conf | 5 +- .../ubuntu_xenial.yaml | 102 ++++++++++++++++++ 4 files changed, 109 insertions(+), 4 deletions(-) create mode 100644 shaker/resources/image_builder_templates/ubuntu_xenial.yaml diff --git a/doc/source/tools/shaker-all-in-one.txt b/doc/source/tools/shaker-all-in-one.txt index 29772e5..cb33969 100644 --- a/doc/source/tools/shaker-all-in-one.txt +++ b/doc/source/tools/shaker-all-in-one.txt @@ -84,7 +84,8 @@ optional arguments: --image-builder-template IMAGE_BUILDER_TEMPLATE Heat template containing receipt of building the image. Can be a file name or one of aliases: "centos", - "debian", "ubuntu". Defaults to "ubuntu". + "debian", "ubuntu", "ubuntu_xenial". Defaults to + "ubuntu". --image-name IMAGE_NAME Name of image to use. The default is created by shaker-image-builder. diff --git a/doc/source/tools/shaker-image-builder.txt b/doc/source/tools/shaker-image-builder.txt index bd7a512..a88bc58 100644 --- a/doc/source/tools/shaker-image-builder.txt +++ b/doc/source/tools/shaker-image-builder.txt @@ -61,7 +61,8 @@ optional arguments: --image-builder-template IMAGE_BUILDER_TEMPLATE Heat template containing receipt of building the image. Can be a file name or one of aliases: "centos", - "debian", "ubuntu". Defaults to "ubuntu". + "debian", "ubuntu", "ubuntu_xenial". Defaults to + "ubuntu". --image-name IMAGE_NAME Name of image to use. The default is created by shaker-image-builder. diff --git a/etc/shaker.conf b/etc/shaker.conf index b7c5b9f..92dd0d0 100644 --- a/etc/shaker.conf +++ b/etc/shaker.conf @@ -21,6 +21,7 @@ # configuration files are used then all logging configuration is set in the # configuration file and other logging configuration options are ignored (for # example, logging_context_format_string). (string value) +# Note: This option can be changed without restarting. # Deprecated group/name - [DEFAULT]/log_config #log_config_append = @@ -231,8 +232,8 @@ #agent_id = # Heat template containing receipt of building the image. Can be a file name or -# one of aliases: "centos", "debian", "ubuntu". Defaults to "ubuntu". (string -# value) +# one of aliases: "centos", "debian", "ubuntu", "ubuntu_xenial". Defaults to +# "ubuntu". (string value) #image_builder_template = ubuntu # Shaker image RAM size in MB, defaults to env[SHAKER_FLAVOR_RAM] (integer diff --git a/shaker/resources/image_builder_templates/ubuntu_xenial.yaml b/shaker/resources/image_builder_templates/ubuntu_xenial.yaml new file mode 100644 index 0000000..a4b7e82 --- /dev/null +++ b/shaker/resources/image_builder_templates/ubuntu_xenial.yaml @@ -0,0 +1,102 @@ +heat_template_version: 2013-05-23 + +description: > + Heat teamplate that creates Shaker image based on Ubuntu Xenial (16.04) + +parameters: + external_net: + type: string + description: ID or name of public network for which floating IP addresses will be allocated + flavor: + type: string + description: Flavor to use for servers + dns_nameservers: + type: comma_delimited_list + description: DNS nameservers for the image builder subnet + +resources: + private_net: + type: OS::Neutron::Net + properties: + name: shaker_image_builder_net + + private_subnet: + type: OS::Neutron::Subnet + properties: + network_id: { get_resource: private_net } + cidr: 10.0.0.0/29 + dns_nameservers: { get_param: dns_nameservers } + + router: + type: OS::Neutron::Router + properties: + external_gateway_info: + network: { get_param: external_net } + + router_interface: + type: OS::Neutron::RouterInterface + properties: + router_id: { get_resource: router } + subnet_id: { get_resource: private_subnet } + + master_image: + type: OS::Glance::Image + properties: + container_format: bare + disk_format: qcow2 + location: https://cloud-images.ubuntu.com/releases/xenial/release/ubuntu-16.04-server-cloudimg-amd64-disk1.img + min_disk: 3 + min_ram: 512 + name: shaker_image_build_template + + master_image_server_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + + master_image_server: + type: OS::Nova::Server + properties: + name: shaker_image_builder_server + image: { get_resource: master_image } + flavor: { get_param: flavor } + networks: + - port: { get_resource: master_image_server_port } + user_data_format: RAW + user_data: | + #!/bin/bash + sudo apt-add-repository "deb http://nova.clouds.archive.ubuntu.com/ubuntu/ trusty multiverse" + sudo apt-get update + sudo apt-get -y install iperf iperf3 netperf python-dev libzmq-dev build-essential + wget -O get-pip.py https://bootstrap.pypa.io/get-pip.py && sudo python get-pip.py + sudo pip install flent pyshaker-agent + shaker-agent -h || (echo "[critical] Failed to run pyshaker-agent. Check if it is installed in the image"; sleep 20) + cat<<'EOF' >> /etc/systemd/system/iperf.service + [Unit] + Description=iperf Service + After=network.target + [Service] + Type=simple + ExecStart=/usr/bin/iperf -s + [Install] + WantedBy=multi-user.target + EOF + cat<<'EOF' >> /etc/systemd/system/iperf3.service + [Unit] + Description=iperf3 Service + After=network.target + [Service] + Type=simple + ExecStart=/usr/bin/iperf3 -s + [Install] + WantedBy=multi-user.target + EOF + systemctl enable iperf + systemctl enable iperf3 + sudo shutdown -P now + +outputs: + server_info: + value: { get_attr: [ master_image_server, show ] }