aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbuild.sh4
-rw-r--r--build/build.yaml17
-rwxr-xr-xdeploy/compass_vm.sh14
-rw-r--r--deploy/conf/compass.conf36
-rw-r--r--deploy/playbook_done.py7
-rw-r--r--deploy/status_callback.py76
-rwxr-xr-xutil/docker-compose/add_machine.yml8
-rwxr-xr-xutil/docker-compose/bring_up_compass.yml8
-rwxr-xr-xutil/docker-compose/group_vars/all41
-rwxr-xr-xutil/docker-compose/roles/cobbler/tasks/main.yml97
-rwxr-xr-xutil/docker-compose/roles/cobbler/templates/dhcp.template.j297
-rwxr-xr-xutil/docker-compose/roles/cobbler/templates/named.template.j231
-rwxr-xr-xutil/docker-compose/roles/cobbler/templates/settings.j2450
-rwxr-xr-xutil/docker-compose/roles/cobbler/templates/zone.template.j217
-rwxr-xr-xutil/docker-compose/roles/compass/files/pipework443
-rwxr-xr-xutil/docker-compose/roles/compass/files/prepare_ansible.sh8
-rwxr-xr-xutil/docker-compose/roles/compass/files/preseed_post_anamon80
-rwxr-xr-xutil/docker-compose/roles/compass/files/switch_list.conf3
-rwxr-xr-xutil/docker-compose/roles/compass/files/up_containers.sh3
-rwxr-xr-xutil/docker-compose/roles/compass/tasks/main.yml139
-rwxr-xr-xutil/docker-compose/roles/compass/templates/cobbler.conf.j29
-rwxr-xr-xutil/docker-compose/roles/compass/templates/dhcp.template.j297
-rwxr-xr-xutil/docker-compose/roles/compass/templates/distro_signatures.json974
-rwxr-xr-xutil/docker-compose/roles/compass/templates/docker-compose.yml.j2103
-rwxr-xr-xutil/docker-compose/roles/compass/templates/machine_list.conf.j214
-rwxr-xr-xutil/docker-compose/roles/compass/templates/named.template.j231
-rwxr-xr-xutil/docker-compose/roles/compass/templates/prepare_ansible.sh.j28
-rwxr-xr-xutil/docker-compose/roles/compass/templates/settings.j2450
-rwxr-xr-xutil/docker-compose/roles/compass/templates/zone.template.j217
-rwxr-xr-xutil/docker-compose/roles/discovery/tasks/main.yml71
-rwxr-xr-xutil/docker-compose/roles/discovery/templates/compass_discovery.service.j27
-rwxr-xr-xutil/docker-compose/roles/discovery/templates/dhcp.template.j2123
-rwxr-xr-xutil/docker-compose/roles/discovery/templates/distro_signatures.json.j21008
-rwxr-xr-xutil/docker-compose/roles/discovery/vars/main.yml17
-rwxr-xr-xutil/docker-compose/roles/machines/tasks/main.yml21
-rwxr-xr-xutil/docker-compose/roles/machines/templates/switch_machines_file.j24
-rwxr-xr-xutil/docker-compose/roles/osa/files/cinder.yml13
-rwxr-xr-xutil/docker-compose/roles/osa/tasks/main.yml48
38 files changed, 4496 insertions, 98 deletions
diff --git a/build.sh b/build.sh
index 1a0cf45c..7f67ee2a 100755
--- a/build.sh
+++ b/build.sh
@@ -102,7 +102,9 @@ function build_tar()
sudo rm -rf compass_dists
mkdir -p compass_dists
sudo cp -f *.tar *.iso compass_dists
- sudo tar -zcf compass.tar.gz compass-docker-compose compass_dists
+ sudo cp $COMPASS_PATH/build/build.yaml compass_dists
+ sudo cp -rf $COMPASS_PATH/util/docker-compose ./
+ sudo tar -zcf compass.tar.gz docker-compose compass_dists
sudo mv compass.tar.gz $TAR_DIR/$TAR_NAME
cd -
}
diff --git a/build/build.yaml b/build/build.yaml
index 210169e7..cb97c495 100644
--- a/build/build.yaml
+++ b/build/build.yaml
@@ -15,16 +15,10 @@ packages:
get_method: docker
url: compass4nfv/compass-deck:latest
- - name: compass-tasks-osa
- description: "compass task container for openstack deployment via openstack-ansible"
+ - name: compass-tasks
+ description: "compass task container integrated with openstack-ansible and kubespray"
get_method: docker
- url: yifei0van0xue/compass-tasks-osa:latest
-
- - name: compass-tasks-k8s
- description: "compass task container for kubernets deployment via kargo"
- get_method: docker
- url: compass4nfv/compass-tasks-k8s:latest
-
+ url: huangxiangyu/compass-tasks:latest
- name: compass-cobbler
description: "cobbler container for compass"
@@ -50,8 +44,3 @@ packages:
description: "compass repo container for deployment"
get_method: docker
url: compass4nfv/compass-repo-osa-ubuntu:euphrates
-
- - name: compass-docker-compose
- description: "containerized compass compose ansible"
- get_method: git
- url: https://github.com/yifei-xue/compass-docker-compose.git
diff --git a/deploy/compass_vm.sh b/deploy/compass_vm.sh
index cc0471ae..7689f41c 100755
--- a/deploy/compass_vm.sh
+++ b/deploy/compass_vm.sh
@@ -27,11 +27,11 @@ function install_compass_core() {
}
function set_compass_machine() {
- local config_file=$WORK_DIR/installer/compass-docker-compose/group_vars/all
+ local config_file=$WORK_DIR/installer/docker-compose/group_vars/all
sed -i '/pxe_boot_macs/d' $config_file
echo "pxe_boot_macs: [${machines}]" >> $config_file
- ansible-playbook $WORK_DIR/installer/compass-docker-compose/add_machine.yml
+ ansible-playbook $WORK_DIR/installer/docker-compose/add_machine.yml
}
function install_compass() {
@@ -129,13 +129,9 @@ function wait_ok() {
}
function launch_compass() {
- local group_vars=$WORK_DIR/installer/compass-docker-compose/group_vars/all
+ local group_vars=$WORK_DIR/installer/docker-compose/group_vars/all
sed -i "s#^\(compass_dir:\).*#\1 $COMPASS_DIR#g" $group_vars
- sed -i "s#^\(compass_deck:\).*#\1 $COMPASS_DECK#g" $group_vars
- sed -i "s#^\(compass_tasks:\).*#\1 $COMPASS_TASKS#g" $group_vars
- sed -i "s#^\(compass_cobbler:\).*#\1 $COMPASS_COBBLER#g" $group_vars
- sed -i "s#^\(compass_db:\).*#\1 $COMPASS_DB#g" $group_vars
- sed -i "s#^\(compass_mq:\).*#\1 $COMPASS_MQ#g" $group_vars
+ sed -i "s#^\(compose_images:\).*#\1 $COMPOSE_IMAGES#g" $group_vars
if [[ $OFFLINE_DEPLOY == "Enable" ]]; then
sed -i "s#.*\(compass_repo:\).*#\1 $COMPASS_REPO#g" $group_vars
@@ -150,7 +146,7 @@ function launch_compass() {
sed -i "s#^\(deck_port:\).*#\1 $COMPASS_DECK_PORT#g" $group_vars
sed -i "s#^\(repo_port:\).*#\1 $COMPASS_REPO_PORT#g" $group_vars
- ansible-playbook $WORK_DIR/installer/compass-docker-compose/bring_up_compass.yml
+ ansible-playbook $WORK_DIR/installer/docker-compose/bring_up_compass.yml
}
function recover_compass() {
diff --git a/deploy/conf/compass.conf b/deploy/conf/compass.conf
index 78dd141b..9d9145f1 100644
--- a/deploy/conf/compass.conf
+++ b/deploy/conf/compass.conf
@@ -17,38 +17,4 @@ export NTP_SERVER="$COMPASS_SERVER"
export NAMESERVERS=${USER_NAMESERVER:-"$COMPASS_SERVER"}
export COMPASS_REPO_PORT="5151"
export OFFLINE_DEPLOY=${OFFLINE_DEPLOY:-'Disable'}
-
-if [ "$COMPASS_ARCH" = "aarch64" ]; then
- # Docker images for aarch64
-
- # Arm images are temporarily held at dockerhub linaro repo
- COMPASS_DOCKER_REPO=${COMPASS_DOCKER_REPO:-linaro}
-
- export COMPASS_DECK="$COMPASS_DOCKER_REPO/compass-deck"
- export COMPASS_TASKS="$COMPASS_DOCKER_REPO/compass-tasks-osa"
-
- if [[ "x"$KUBERNETES_VERSION != "x" ]]; then
- export COMPASS_TASKS="$COMPASS_DOCKER_REPO/compass-tasks-k8s"
- fi
-
- export COMPASS_DB="$COMPASS_DOCKER_REPO/compass-db"
- export COMPASS_MQ="$COMPASS_DOCKER_REPO/compass-mq"
- export COMPASS_REPO="$COMPASS_DOCKER_REPO/compass-repo-osa-ubuntu:euphrates"
- export COMPASS_COBBLER="$COMPASS_DOCKER_REPO/compass-cobbler"
-
-else
- # Docker images for x86_64
-
- export COMPASS_DECK="compass4nfv/compass-deck"
- export COMPASS_TASKS="yifei0van0xue/compass-tasks-osa"
-
- if [[ "x"$KUBERNETES_VERSION != "x" ]]; then
- export COMPASS_TASKS="compass4nfv/compass-tasks-k8s"
- fi
-
- export COMPASS_DB="compass4nfv/compass-db"
- export COMPASS_MQ="compass4nfv/compass-mq"
- export COMPASS_REPO="compass4nfv/compass-repo-osa-ubuntu:euphrates"
- export COMPASS_COBBLER="yifei0van0xue/compass-cobbler"
-
-fi
+export COMPOSE_IMAGES="[compass-db,compass-mq,compass-deck,compass-tasks,compass-cobbler]"
diff --git a/deploy/playbook_done.py b/deploy/playbook_done.py
index 24c8c55b..6b1043d4 100644
--- a/deploy/playbook_done.py
+++ b/deploy/playbook_done.py
@@ -15,16 +15,15 @@
# limitations under the License.
"""Ansible playbook callback after a playbook run has completed."""
-import os
import sys
from ansible.plugins.callback import CallbackBase
-current_dir = os.path.dirname(os.path.realpath(__file__))
-sys.path.append(current_dir + '/..')
+compass_bin = "/opt/compass/bin"
+sys.path.append(compass_bin)
+import switch_virtualenv # noqa: F401
-# import switch_virtualenv # noqa
from compass.apiclient.restful import Client # noqa: E402
from compass.utils import flags # noqa: E402
diff --git a/deploy/status_callback.py b/deploy/status_callback.py
index 4bbbc321..f0615f3f 100644
--- a/deploy/status_callback.py
+++ b/deploy/status_callback.py
@@ -16,13 +16,13 @@ from ansible.plugins.callback import CallbackBase
COMPASS_HOST = "compass-deck"
-def task_error(display, host, data):
- display.display("task_error: host=%s,data=%s" % (host, data))
-
-# if isinstance(data, dict):
-# invocation = data.pop('invocation', {})
-
- notify_host(display, COMPASS_HOST, host, "failed")
+# def task_error(display, host, data):
+# display.display("task_error: host=%s,data=%s" % (host, data))
+#
+# if isinstance(data, dict):
+# invocation = data.pop('invocation', {})
+#
+# notify_host(display, COMPASS_HOST, host, "failed")
class CallbackModule(CallbackBase):
@@ -101,39 +101,47 @@ class CallbackModule(CallbackBase):
def v2_playbook_on_stats(self, stats):
self._display.display("playbook_on_stats enter")
+ all_vars = self.play.get_variable_manager().get_vars(self.loader)
+ host_vars = all_vars["hostvars"]
hosts = sorted(stats.processed.keys())
- failures = False
- unreachable = False
-
- for host in hosts:
- summary = stats.summarize(host)
- # self._display.display("host: %s \nsummary: %s\n" % (host, summary)) # noqa
-
- if summary['failures'] > 0:
- failures = True
- if summary['unreachable'] > 0:
- unreachable = True
+ cluster_name = host_vars[hosts[0]]['cluster_name']
headers = {"Content-type": "application/json",
"Accept": "*/*"}
-
conn = httplib.HTTPConnection(COMPASS_HOST, 80)
token = auth(conn)
headers["X-Auth-Token"] = token
- get_url = "/api/hosts"
+ get_url = "/api/clusterhosts"
conn.request("GET", get_url, "", headers)
resp = conn.getresponse()
raise_for_status(resp)
- host_data = json.loads(resp.read())
- clusterhosts = [item["name"] for item in host_data]
-
- if failures or unreachable:
- host_status = "error"
- else:
- host_status = "succ"
+ clusterhost_data = json.loads(resp.read())
+ clusterhost_mapping = {}
+ for item in clusterhost_data:
+ if item["clustername"] == cluster_name:
+ clusterhost_mapping.update({item["hostname"]:
+ item["clusterhost_id"]})
+
+ force_error = False
+ if "localhost" in hosts:
+ summary = stats.summarize("localhost")
+ if summary['failures'] > 0 or summary['unreachable'] > 0:
+ force_error = True
+
+ for hostname, hostid in clusterhost_mapping.iteritems():
+ if hostname not in hosts:
+ continue
+
+ summary = stats.summarize(hostname)
+ # self._display.display("host: %s \nsummary: %s\n" % (host, summary)) # noqa
- for host in clusterhosts:
- notify_host(self._display, "compass-deck", host, host_status)
+ if summary['failures'] > 0 or summary['unreachable'] > 0 \
+ or force_error:
+ status = "error"
+ else:
+ status = "succ"
+ self._display.display("hostname: %s" % hostname)
+ notify_host(self._display, COMPASS_HOST, hostid, status)
def raise_for_status(resp):
@@ -157,17 +165,15 @@ def auth(conn):
return json.loads(resp.read())["token"]
-def notify_host(display, compass_host, host, status):
- display.display("hostname: %s" % host)
- host = host.strip("host")
- url = "/api/clusterhosts/%s/state" % host
+def notify_host(display, compass_host, hostid, status):
+ url = "/api/clusterhosts/%s/state" % hostid
if status == "succ":
body = {"state": "SUCCESSFUL"}
elif status == "error":
body = {"state": "ERROR"}
else:
- display.error("notify_host: host %s with status %s is not supported"
- % (host, status))
+ display.error("notify_host: hostid %s with status %s is not supported"
+ % (hostid, status))
return
headers = {"Content-type": "application/json",
diff --git a/util/docker-compose/add_machine.yml b/util/docker-compose/add_machine.yml
new file mode 100755
index 00000000..05a66aed
--- /dev/null
+++ b/util/docker-compose/add_machine.yml
@@ -0,0 +1,8 @@
+---
+- name: Add Machine
+ hosts: localhost
+ sudo: "True"
+ roles:
+ # - discovery
+ - machines
+ # - osa
diff --git a/util/docker-compose/bring_up_compass.yml b/util/docker-compose/bring_up_compass.yml
new file mode 100755
index 00000000..77b8536e
--- /dev/null
+++ b/util/docker-compose/bring_up_compass.yml
@@ -0,0 +1,8 @@
+---
+- name: Install Compass
+ hosts: localhost
+ sudo: "True"
+ roles:
+ # - docker
+ - compass
+ - cobbler
diff --git a/util/docker-compose/group_vars/all b/util/docker-compose/group_vars/all
new file mode 100755
index 00000000..1dafe814
--- /dev/null
+++ b/util/docker-compose/group_vars/all
@@ -0,0 +1,41 @@
+---
+# env vars
+compass_dir:
+compass_dists_dir: "{{ compass_dir }}/work/deploy/installer/compass_dists"
+docker_compose_dir: "{{ compass_dir }}/work/deploy/docker"
+
+compose_images:
+
+docker_tag: v0.1
+deck_port: 5050
+repo_port: 5151
+
+host_ip: 10.1.0.1
+install_subnet: 10.1.0.0
+install_prefix: 24
+install_netmask: 255.255.255.0
+install_ip_range: 10.1.0.100 10.1.0.250
+
+pip_pkg_name: pip-openstack.tar.gz
+feature_pkg_name: packages.tar.gz
+
+distros:
+ ubuntu-16.04.3:
+ breed: "ubuntu"
+ kickstart: "default16.seed"
+ kopts: "netcfg/choose_interface=auto console='ttyS0,115200n8' console=tty0 net.ifnames=0 biosdevname=0 vga=788"
+ kopts_post: "console='ttyS0,115200n8' console=tty0 net.ifnames=0 biosdevname=0 vga=788"
+ extra: "--apt-dists=xenial --apt-components=main"
+ aliase: "xenial"
+ version: "ubuntu"
+ iso_name: ubuntu-16.04.3-server-amd64
+ ppa_name: xenial-pike-ppa
+
+ CentOS-7:
+ breed: "redhat"
+ kickstart: "default.ks"
+ aliase: "centos7"
+ version: "centos"
+ iso_name: CentOS-7-x86_64-Minimal-1708
+ ppa_name: centos7-pike-ppa
+
diff --git a/util/docker-compose/roles/cobbler/tasks/main.yml b/util/docker-compose/roles/cobbler/tasks/main.yml
new file mode 100755
index 00000000..e3f13088
--- /dev/null
+++ b/util/docker-compose/roles/cobbler/tasks/main.yml
@@ -0,0 +1,97 @@
+---
+- name: copy files
+ shell: |
+ docker exec compass-cobbler bash -c \
+ "cp -rf /root/cobbler/* /var/lib/cobbler/; \
+ rm -rf /var/lib/cobbler/conf; \
+ cp -rf /root/cobbler/conf/* /etc/cobbler"
+
+- name: chmod migrate_ks.py
+ shell: |
+ docker exec compass-cobbler bash -c \
+ "chmod +x /var/lib/cobbler/triggers/sync/post/migrate_ks.py"
+
+- name: render cobbler files
+ template:
+ src: "{{ item }}.j2"
+ dest: "{{ docker_compose_dir }}/cobbler/{{ item }}"
+ with_items:
+ - dhcp.template
+ - named.template
+ - settings
+ - zone.template
+
+- name: copy files to /etc/cobbler
+ shell: |
+ docker cp "{{ docker_compose_dir }}/cobbler/{{ item }}" compass-cobbler:/etc/cobbler
+ with_items:
+ - dhcp.template
+ - named.template
+ - settings
+ - zone.template
+
+# - name: restart cobblerd service
+# shell: |
+# docker exec compass-cobbler bash -c \
+# "service cobblerd restart"
+
+- name: prepare iso and ppa
+ shell: |
+ docker cp "{{ compass_dists_dir }}/{{ item.value.iso_name }}.iso" compass-cobbler:/tmp
+ docker exec compass-cobbler bash -c \
+ "mkdir -p /mnt/{{ item.value.iso_name }}; \
+ mount -o loop /tmp/{{ item.value.iso_name }}.iso /mnt/{{ item.value.iso_name }}"
+ docker cp "{{ compass_dists_dir }}/{{ item.value.ppa_name }}.tar.gz" compass-cobbler:/tmp
+ docker exec compass-cobbler bash -c \
+ "mkdir -p /var/lib/cobbler/repo_mirror/{{ item.value.ppa_name }}"
+ with_dict: "{{ distros }}"
+ run_once: "True"
+ ignore_errors: "True"
+
+- name: cobbler import iso
+ shell: |
+ name=`basename {{ item.value.iso_name }} | \
+ sed -e 's/.iso//g' -e 's/-amd64//g' -e 's/-x86_64//g'`
+ docker exec compass-cobbler bash -c \
+ "service cobblerd restart;
+ sleep 3;
+ cobbler import --name $name \
+ --path /mnt/{{ item.value.iso_name }} \
+ --arch x86_64 \
+ --kickstart /var/lib/cobbler/kickstarts/{{ item.value.kickstart }} \
+ --breed {{ item.value.breed }}"
+ with_dict: "{{ distros }}"
+ run_once: "True"
+ register: result2
+ until: result2.rc == 0
+ retries: 10
+ delay: 3
+
+- name: add repos
+ shell: |
+ docker exec compass-cobbler bash -c \
+ "cobbler repo add --name {{ item.value.ppa_name }} \
+ --mirror /var/lib/cobbler/repo_mirror/{{ item.value.ppa_name }} \
+ --mirror-locally True \
+ --arch=x86_64 {{ item.value.extra | default()}}"
+ with_dict: "{{ distros }}"
+ run_once: "True"
+
+- name: edit profiles
+ shell: |
+ name=`basename {{ item.value.iso_name }} | \
+ sed -e 's/.iso//g' -e 's/-amd64//g' -e 's/-x86_64//g'`-x86_64
+ docker exec compass-cobbler bash -c \
+ "cobbler profile edit --name $name \
+ --name-servers '' \
+ --repos {{ item.value.ppa_name }} \
+ --ksmeta \"tree=http://{{ host_ip }}/cobbler/ks_mirror/$name\" \
+ --kopts \"{{ item.value.kopts | default('') }}\" \
+ --kopts-post \"{{ item.value.kopts_post | default('') }}\""
+ with_dict: "{{ distros }}"
+ run_once: "True"
+
+- name: cobbler sync
+ shell: |
+ docker exec compass-cobbler bash -c \
+ "cobbler sync"
diff --git a/util/docker-compose/roles/cobbler/templates/dhcp.template.j2 b/util/docker-compose/roles/cobbler/templates/dhcp.template.j2
new file mode 100755
index 00000000..0665f2fe
--- /dev/null
+++ b/util/docker-compose/roles/cobbler/templates/dhcp.template.j2
@@ -0,0 +1,97 @@
+# ******************************************************************
+# Cobbler managed dhcpd.conf file
+#
+# generated from cobbler dhcp.conf template ($date)
+# Do NOT make changes to /etc/dhcpd.conf. Instead, make your changes
+# in /etc/cobbler/dhcp.template, as /etc/dhcpd.conf will be
+# overwritten.
+#
+# ******************************************************************
+
+ddns-update-style interim;
+
+allow booting;
+allow bootp;
+deny unknown-clients;
+local-address {{ host_ip }};
+log-facility local6;
+
+ignore client-updates;
+set vendorclass = option vendor-class-identifier;
+
+option pxe-system-type code 93 = unsigned integer 16;
+option space pxelinux;
+option pxelinux.magic code 208 = string;
+option pxelinux.configfile code 209 = text;
+option pxelinux.pathprefix code 210 = text;
+option pxelinux.reboottime code 211 = unsigned integer 32;
+
+subnet {{ install_subnet }} netmask {{ install_netmask }} {
+ option routers {{ host_ip }};
+ option domain-name-servers {{ host_ip }};
+ option subnet-mask {{ install_netmask }};
+ range dynamic-bootp {{ install_ip_range }};
+ default-lease-time 21600;
+ max-lease-time 43200;
+ next-server {{ host_ip }};
+ class "pxeclients" {
+ match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
+ if option pxe-system-type = 00:02 {
+ filename "ia64/elilo.efi";
+ } else if option pxe-system-type = 00:06 {
+ filename "grub/grub-x86.efi";
+ } else if option pxe-system-type = 00:07 {
+ filename "grub/grub-x86_64.efi";
+ } else {
+ filename "pxelinux.0";
+ }
+ }
+
+}
+
+#for dhcp_tag in $dhcp_tags.keys():
+ ## group could be subnet if your dhcp tags line up with your subnets
+ ## or really any valid dhcpd.conf construct ... if you only use the
+ ## default dhcp tag in cobbler, the group block can be deleted for a
+ ## flat configuration
+# group for Cobbler DHCP tag: $dhcp_tag
+group {
+ #for mac in $dhcp_tags[$dhcp_tag].keys():
+ #set iface = $dhcp_tags[$dhcp_tag][$mac]
+ host $iface.name {
+ hardware ethernet $mac;
+ site-option-space "pxelinux";
+ option pxelinux.magic f1:00:74:7e;
+ if exists dhcp-parameter-request-list {
+ # Always send the PXELINUX options (specified in hexadecimal)
+ option dhcp-parameter-request-list = concat(option dhcp-parameter-request-list,d0,d1,d2,d3);
+ }
+ option pxelinux.reboottime 30;
+ #if $iface.hostname:
+ option host-name "$iface.hostname";
+ #end if
+ #if $iface.netmask:
+ option subnet-mask $iface.netmask;
+ #end if
+ #if $iface.gateway:
+ option routers $iface.gateway;
+ #end if
+ #if $iface.enable_gpxe:
+ if exists user-class and option user-class = "gPXE" {
+ filename "http://$cobbler_server/cblr/svc/op/gpxe/system/$iface.owner";
+ } else if exists user-class and option user-class = "iPXE" {
+ filename "http://$cobbler_server/cblr/svc/op/gpxe/system/$iface.owner";
+ } else {
+ filename "undionly.kpxe";
+ }
+ #else
+ filename "$iface.filename";
+ #end if
+ ## Cobbler defaults to $next_server, but some users
+ ## may like to use $iface.system.server for proxied setups
+ next-server $next_server;
+ ## next-server $iface.next_server;
+ }
+ #end for
+}
+#end for
diff --git a/util/docker-compose/roles/cobbler/templates/named.template.j2 b/util/docker-compose/roles/cobbler/templates/named.template.j2
new file mode 100755
index 00000000..0cf76225
--- /dev/null
+++ b/util/docker-compose/roles/cobbler/templates/named.template.j2
@@ -0,0 +1,31 @@
+options {
+ listen-on port 53 { {{ host_ip }}; };
+ directory "/var/named";
+ dump-file "/var/named/data/cache_dump.db";
+ statistics-file "/var/named/data/named_stats.txt";
+ memstatistics-file "/var/named/data/named_mem_stats.txt";
+ allow-query { 127.0.0.0/8; {{ install_subnet }}/{{ install_prefix }}; };
+ recursion yes;
+};
+
+logging {
+ channel default_debug {
+ file "data/named.run";
+ severity dynamic;
+ };
+};
+
+#for $zone in $forward_zones
+zone "${zone}." {
+ type master;
+ file "$zone";
+};
+
+#end for
+#for $zone, $arpa in $reverse_zones
+zone "${arpa}." {
+ type master;
+ file "$zone";
+};
+
+#end for
diff --git a/util/docker-compose/roles/cobbler/templates/settings.j2 b/util/docker-compose/roles/cobbler/templates/settings.j2
new file mode 100755
index 00000000..9e4a7390
--- /dev/null
+++ b/util/docker-compose/roles/cobbler/templates/settings.j2
@@ -0,0 +1,450 @@
+---
+# cobbler settings file
+# restart cobblerd and run "cobbler sync" after making changes
+# This config file is in YAML 1.0 format
+# see http://yaml.org
+# ==========================================================
+# if 1, cobbler will allow insertions of system records that duplicate
+# the --dns-name information of other system records. In general,
+# this is undesirable and should be left 0.
+allow_duplicate_hostnames: 0
+
+# if 1, cobbler will allow insertions of system records that duplicate
+# the ip address information of other system records. In general,
+# this is undesirable and should be left 0.
+allow_duplicate_ips: 0
+
+# if 1, cobbler will allow insertions of system records that duplicate
+# the mac address information of other system records. In general,
+# this is undesirable.
+allow_duplicate_macs: 0
+
+# if 1, cobbler will allow settings to be changed dynamically without
+# a restart of the cobblerd daemon. You can only change this variable
+# by manually editing the settings file, and you MUST restart cobblerd
+# after changing it.
+allow_dynamic_settings: 0
+
+# by default, installs are *not* set to send installation logs to the cobbler
+# # # server. With 'anamon_enabled', kickstart templates may use the pre_anamon
+# # # snippet to allow remote live monitoring of their installations from the
+# # # cobbler server. Installation logs will be stored under
+# # # /var/log/cobbler/anamon/. NOTE: This does allow an xmlrpc call to send logs
+# # # to this directory, without authentication, so enable only if you are
+# # # ok with this limitation.
+anamon_enabled: 1
+
+# If using authn_pam in the modules.conf, this can be configured
+# to change the PAM service authentication will be tested against.
+# The default value is "login".
+authn_pam_service: "login"
+
+# Email out a report when cobbler finishes installing a system.
+# enabled: set to 1 to turn this feature on
+# sender: optional
+# email: which addresses to email
+# smtp_server: used to specify another server for an MTA
+# subject: use the default subject unless overridden
+build_reporting_enabled: 0
+build_reporting_sender: ""
+build_reporting_email: [ 'root@localhost' ]
+build_reporting_smtp_server: "localhost"
+build_reporting_subject: ""
+
+# Cheetah-language kickstart templates can import Python modules.
+# while this is a useful feature, it is not safe to allow them to
+# import anything they want. This whitelists which modules can be
+# imported through Cheetah. Users can expand this as needed but
+# should never allow modules such as subprocess or those that
+# allow access to the filesystem as Cheetah templates are evaluated
+# by cobblerd as code.
+cheetah_import_whitelist:
+ - "random"
+ - "re"
+ - "time"
+
+# Default createrepo_flags to use for new repositories. If you have
+# createrepo >= 0.4.10, consider "-c cache --update -C", which can
+# dramatically improve your "cobbler reposync" time. "-s sha"
+# enables working with Fedora repos from F11/F12 from EL-4 or
+# EL-5 without python-hashlib installed (which is not available
+# on EL-4)
+createrepo_flags: "-c cache -s sha"
+
+# if no kickstart is specified to profile add, use this template
+default_kickstart: /var/lib/cobbler/kickstarts/default.ks
+
+# configure all installed systems to use these nameservers by default
+# unless defined differently in the profile. For DHCP configurations
+# you probably do /not/ want to supply this.
+default_name_servers: ['10.1.10.15']
+
+# if using the authz_ownership module (see the Wiki), objects
+# created without specifying an owner are assigned to this
+# owner and/or group. Can be a comma seperated list.
+default_ownership:
+ - "admin"
+
+# cobbler has various sample kickstart templates stored
+# in /var/lib/cobbler/kickstarts/. This controls
+# what install (root) password is set up for those
+# systems that reference this variable. The factory
+# default is "cobbler" and cobbler check will warn if
+# this is not changed.
+# The simplest way to change the password is to run
+# openssl passwd -1
+# and put the output between the "" below.
+default_password_crypted: "$1$huawei$9OkoVJwO4W8vavlXd1bUS/"
+
+# the default template type to use in the absence of any
+# other detected template. If you do not specify the template
+# with '#template=<template_type>' on the first line of your
+# templates/snippets, cobbler will assume try to use the
+# following template engine to parse the templates.
+#
+# Current valid values are: cheetah, jinja2
+default_template_type: "cheetah"
+
+# for libvirt based installs in koan, if no virt bridge
+# is specified, which bridge do we try? For EL 4/5 hosts
+# this should be xenbr0, for all versions of Fedora, try
+# "virbr0". This can be overriden on a per-profile
+# basis or at the koan command line though this saves
+# typing to just set it here to the most common option.
+default_virt_bridge: xenbr0
+
+# use this as the default disk size for virt guests (GB)
+default_virt_file_size: 5
+
+# use this as the default memory size for virt guests (MB)
+default_virt_ram: 512
+
+# if koan is invoked without --virt-type and no virt-type
+# is set on the profile/system, what virtualization type
+# should be assumed? Values: xenpv, xenfv, qemu, vmware
+# (NOTE: this does not change what virt_type is chosen by import)
+default_virt_type: xenpv
+
+# enable gPXE booting? Enabling this option will cause cobbler
+# to copy the undionly.kpxe file to the tftp root directory,
+# and if a profile/system is configured to boot via gpxe it will
+# chain load off pxelinux.0.
+# Default: 0
+enable_gpxe: 0
+
+# controls whether cobbler will add each new profile entry to the default
+# PXE boot menu. This can be over-ridden on a per-profile
+# basis when adding/editing profiles with --enable-menu=0/1. Users
+# should ordinarily leave this setting enabled unless they are concerned
+# with accidental reinstalls from users who select an entry at the PXE
+# boot menu. Adding a password to the boot menus templates
+# may also be a good solution to prevent unwanted reinstallations
+enable_menu: 0
+
+# enable Func-integration? This makes sure each installed machine is set up
+# to use func out of the box, which is a powerful way to script and control
+# remote machines.
+# Func lives at http://fedorahosted.org/func
+# read more at https://github.com/cobbler/cobbler/wiki/Func-integration
+# you will need to mirror Fedora/EPEL packages for this feature, so see
+# https://github.com/cobbler/cobbler/wiki/Manage-yum-repos if you want cobbler
+# to help you with this
+func_auto_setup: 0
+func_master: overlord.example.org
+
+# change this port if Apache is not running plaintext on port
+# 80. Most people can leave this alone.
+http_port: 80
+
+# kernel options that should be present in every cobbler installation.
+# kernel options can also be applied at the distro/profile/system
+# level.
+kernel_options:
+ ksdevice: bootif
+ lang: ' '
+ text: ~
+
+# s390 systems require additional kernel options in addition to the
+# above defaults
+kernel_options_s390x:
+ RUNKS: 1
+ ramdisk_size: 40000
+ root: /dev/ram0
+ ro: ~
+ ip: off
+ vnc: ~
+
+# configuration options if using the authn_ldap module. See the
+# the Wiki for details. This can be ignored if you are not using
+# LDAP for WebUI/XMLRPC authentication.
+ldap_server: "ldap.example.com"
+ldap_base_dn: "DC=example,DC=com"
+ldap_port: 389
+ldap_tls: 1
+ldap_anonymous_bind: 1
+ldap_search_bind_dn: ''
+ldap_search_passwd: ''
+ldap_search_prefix: 'uid='
+ldap_tls_cacertfile: ''
+ldap_tls_keyfile: ''
+ldap_tls_certfile: ''
+
+# cobbler has a feature that allows for integration with config management
+# systems such as Puppet. The following parameters work in conjunction with
+# --mgmt-classes and are described in furhter detail at:
+# https://github.com/cobbler/cobbler/wiki/Using-cobbler-with-a-configuration-management-system
+mgmt_classes: []
+mgmt_parameters:
+ from_cobbler: 1
+
+# if enabled, this setting ensures that puppet is installed during
+# machine provision, a client certificate is generated and a
+# certificate signing request is made with the puppet master server
+puppet_auto_setup: 0
+
+# when puppet starts on a system after installation it needs to have
+# its certificate signed by the puppet master server. Enabling the
+# following feature will ensure that the puppet server signs the
+# certificate after installation if the puppet master server is
+# running on the same machine as cobbler. This requires
+# puppet_auto_setup above to be enabled
+sign_puppet_certs_automatically: 0
+
+# location of the puppet executable, used for revoking certificates
+puppetca_path: "/usr/bin/puppet"
+
+# when a puppet managed machine is reinstalled it is necessary to
+# remove the puppet certificate from the puppet master server before a
+# new certificate is signed (see above). Enabling the following
+# feature will ensure that the certificate for the machine to be
+# installed is removed from the puppet master server if the puppet
+# master server is running on the same machine as cobbler. This
+# requires puppet_auto_setup above to be enabled
+remove_old_puppet_certs_automatically: 0
+
+# choose a --server argument when running puppetd/puppet agent during kickstart
+#puppet_server: 'puppet'
+
+# let cobbler know that you're using a newer version of puppet
+# choose version 3 to use: 'puppet agent'; version 2 uses status quo: 'puppetd'
+#puppet_version: 2
+
+# choose whether to enable puppet parameterized classes or not.
+# puppet versions prior to 2.6.5 do not support parameters
+#puppet_parameterized_classes: 1
+
+# set to 1 to enable Cobbler's DHCP management features.
+# the choice of DHCP management engine is in /etc/cobbler/modules.conf
+manage_dhcp: 1
+
+# set to 1 to enable Cobbler's DNS management features.
+# the choice of DNS mangement engine is in /etc/cobbler/modules.conf
+manage_dns: 1
+
+# set to path of bind chroot to create bind-chroot compatible bind
+# configuration files. This should be automatically detected.
+bind_chroot_path: ""
+
+# set to the ip address of the master bind DNS server for creating secondary
+# bind configuration files
+bind_master: 127.0.0.1
+
+# set to 1 to enable Cobbler's TFTP management features.
+# the choice of TFTP mangement engine is in /etc/cobbler/modules.conf
+manage_tftpd: 1
+
+# set to 1 to enable Cobbler's RSYNC management features.
+manage_rsync: 0
+
+# if using BIND (named) for DNS management in /etc/cobbler/modules.conf
+# and manage_dns is enabled (above), this lists which zones are managed
+# See the Wiki (https://github.com/cobbler/cobbler/wiki/Dns-management) for more info
+manage_forward_zones: ['ods.com']
+manage_reverse_zones: []
+
+# if using cobbler with manage_dhcp, put the IP address
+# of the cobbler server here so that PXE booting guests can find it
+# if you do not set this correctly, this will be manifested in TFTP open timeouts.
+next_server: {{ host_ip }}
+
+# settings for power management features. optional.
+# see https://github.com/cobbler/cobbler/wiki/Power-management to learn more
+# choices (refer to codes.py):
+# apc_snmp bladecenter bullpap drac ether_wake ilo integrity
+# ipmilan ipmitool lpar rsa virsh wti
+power_management_default_type: 'ipmitool'
+
+# the commands used by the power management module are sourced
+# from what directory?
+power_template_dir: "/etc/cobbler/power"
+
+# if this setting is set to 1, cobbler systems that pxe boot
+# will request at the end of their installation to toggle the
+# --netboot-enabled record in the cobbler system record. This eliminates
+# the potential for a PXE boot loop if the system is set to PXE
+# first in it's BIOS order. Enable this if PXE is first in your BIOS
+# boot order, otherwise leave this disabled. See the manpage
+# for --netboot-enabled.
+pxe_just_once: 1
+
+# the templates used for PXE config generation are sourced
+# from what directory?
+pxe_template_dir: "/etc/cobbler/pxe"
+
+# Path to where system consoles are
+consoles: "/var/consoles"
+
+# Are you using a Red Hat management platform in addition to Cobbler?
+# Cobbler can help you register to it. Choose one of the following:
+# "off" : I'm not using Red Hat Network, Satellite, or Spacewalk
+# "hosted" : I'm using Red Hat Network
+# "site" : I'm using Red Hat Satellite Server or Spacewalk
+# You will also want to read: https://github.com/cobbler/cobbler/wiki/Tips-for-RHN
+redhat_management_type: "off"
+
+# if redhat_management_type is enabled, choose your server
+# "management.example.org" : For Satellite or Spacewalk
+# "xmlrpc.rhn.redhat.com" : For Red Hat Network
+# This setting is also used by the code that supports using Spacewalk/Satellite users/passwords
+# within Cobbler Web and Cobbler XMLRPC. Using RHN Hosted for this is not supported.
+# This feature can be used even if redhat_management_type is off, you just have
+# to have authn_spacewalk selected in modules.conf
+redhat_management_server: "xmlrpc.rhn.redhat.com"
+
+# specify the default Red Hat authorization key to use to register
+# system. If left blank, no registration will be attempted. Similarly
+# you can set the --redhat-management-key to blank on any system to
+# keep it from trying to register.
+redhat_management_key: ""
+
+# if using authn_spacewalk in modules.conf to let cobbler authenticate
+# against Satellite/Spacewalk's auth system, by default it will not allow per user
+# access into Cobbler Web and Cobbler XMLRPC.
+# in order to permit this, the following setting must be enabled HOWEVER
+# doing so will permit all Spacewalk/Satellite users of certain types to edit all
+# of cobbler's configuration.
+# these roles are: config_admin and org_admin
+# users should turn this on only if they want this behavior and
+# do not have a cross-multi-org seperation concern. If you have
+# a single org in your satellite, it's probably safe to turn this
+# on and then you can use CobblerWeb alongside a Satellite install.
+redhat_management_permissive: 0
+
+# if set to 1, allows /usr/bin/cobbler-register (part of the koan package)
+# to be used to remotely add new cobbler system records to cobbler.
+# this effectively allows for registration of new hardware from system
+# records.
+register_new_installs: 0
+
+# Flags to use for yum's reposync. If your version of yum reposync
+# does not support -l, you may need to remove that option.
+reposync_flags: "-l -n -d"
+
+# These options will be used for an rsync initiated by cobbler replicate
+replicate_rsync_options: "-avzH"
+
+# when DHCP and DNS management are enabled, cobbler sync can automatically
+# restart those services to apply changes. The exception for this is
+# if using ISC for DHCP, then omapi eliminates the need for a restart.
+# omapi, however, is experimental and not recommended for most configurations.
+# If DHCP and DNS are going to be managed, but hosted on a box that
+# is not on this server, disable restarts here and write some other
+# script to ensure that the config files get copied/rsynced to the destination
+# box. This can be done by modifying the restart services trigger.
+# Note that if manage_dhcp and manage_dns are disabled, the respective
+# parameter will have no effect. Most users should not need to change
+# this.
+restart_dns: 1
+restart_dhcp: 1
+
+# install triggers are scripts in /var/lib/cobbler/triggers/install
+# that are triggered in kickstart pre and post sections. Any
+# executable script in those directories is run. They can be used
+# to send email or perform other actions. They are currently
+# run as root so if you do not need this functionality you can
+# disable it, though this will also disable "cobbler status" which
+# uses a logging trigger to audit install progress.
+run_install_triggers: 1
+
+# enables a trigger which version controls all changes to /var/lib/cobbler
+# when add, edit, or sync events are performed. This can be used
+# to revert to previous database versions, generate RSS feeds, or for
+# other auditing or backup purposes. "git" and "hg" are currently suported,
+# but git is the recommend SCM for use with this feature.
+scm_track_enabled: 0
+scm_track_mode: "git"
+
+# this is the address of the cobbler server -- as it is used
+# by systems during the install process, it must be the address
+# or hostname of the system as those systems can see the server.
+# if you have a server that appears differently to different subnets
+# (dual homed, etc), you need to read the --server-override section
+# of the manpage for how that works.
+server: {{ host_ip }}
+
+# If set to 1, all commands will be forced to use the localhost address
+# instead of using the above value which can force commands like
+# cobbler sync to open a connection to a remote address if one is in the
+# configuration and would traceback.
+client_use_localhost: 0
+
+# If set to 1, all commands to the API (not directly to the XMLRPC
+# server) will go over HTTPS instead of plaintext. Be sure to change
+# the http_port setting to the correct value for the web server
+client_use_https: 0
+
+# this is a directory of files that cobbler uses to make
+# templating easier. See the Wiki for more information. Changing
+# this directory should not be required.
+snippetsdir: /var/lib/cobbler/snippets
+
+# Normally if a kickstart is specified at a remote location, this
+# URL will be passed directly to the kickstarting system, thus bypassing
+# the usual snippet templating Cobbler does for local kickstart files. If
+# this option is enabled, Cobbler will fetch the file contents internally
+# and serve a templated version of the file to the client.
+template_remote_kickstarts: 0
+
+# should new profiles for virtual machines default to auto booting with the physical host when the physical host reboots?
+# this can be overridden on each profile or system object.
+virt_auto_boot: 1
+
+# cobbler's web directory. Don't change this setting -- see the
+# Wiki on "relocating your cobbler install" if your /var partition
+# is not large enough.
+webdir: /var/www/cobbler
+
+# cobbler's public XMLRPC listens on this port. Change this only
+# if absolutely needed, as you'll have to start supplying a new
+# port option to koan if it is not the default.
+xmlrpc_port: 25151
+
+# "cobbler repo add" commands set cobbler up with repository
+# information that can be used during kickstart and is automatically
+# set up in the cobbler kickstart templates. By default, these
+# are only available at install time. To make these repositories
+# usable on installed systems (since cobbler makes a very convient)
+# mirror, set this to 1. Most users can safely set this to 1. Users
+# who have a dual homed cobbler server, or are installing laptops that
+# will not always have access to the cobbler server may wish to leave
+# this as 0. In that case, the cobbler mirrored yum repos are still
+# accessable at http://cobbler.example.org/cblr/repo_mirror and yum
+# configuration can still be done manually. This is just a shortcut.
+yum_post_install_mirror: 1
+
+# the default yum priority for all the distros. This is only used
+# if yum-priorities plugin is used. 1=maximum. Tweak with caution.
+yum_distro_priority: 1
+
+# Flags to use for yumdownloader. Not all versions may support
+# --resolve.
+yumdownloader_flags: "--resolve"
+
+# sort and indent JSON output to make it more human-readable
+serializer_pretty_json: 0
+
+# replication rsync options for distros, kickstarts, snippets set to override default value of "-avzH"
+replicate_rsync_options: "-avzH"
+
+# replication rsync options for repos set to override default value of "-avzH"
+replicate_repo_rsync_options: "-avzH"
diff --git a/util/docker-compose/roles/cobbler/templates/zone.template.j2 b/util/docker-compose/roles/cobbler/templates/zone.template.j2
new file mode 100755
index 00000000..ea67b739
--- /dev/null
+++ b/util/docker-compose/roles/cobbler/templates/zone.template.j2
@@ -0,0 +1,17 @@
+\$TTL 300
+@ IN SOA $cobbler_server. nobody.example.com. (
+ $serial ; Serial
+ 600 ; Refresh
+ 1800 ; Retry
+ 604800 ; Expire
+ 300 ; TTL
+ )
+
+ IN NS $cobbler_server.
+
+
+$cname_record
+
+$host_record
+compass-250-41 IN A {{ host_ip }}
+metrics IN A {{ host_ip }}
diff --git a/util/docker-compose/roles/compass/files/pipework b/util/docker-compose/roles/compass/files/pipework
new file mode 100755
index 00000000..6d796fc4
--- /dev/null
+++ b/util/docker-compose/roles/compass/files/pipework
@@ -0,0 +1,443 @@
+#!/bin/sh
+# This script is jpetazzo's work. The only reason for its
+# existence in the repo is to saving a working copy in case
+# the original one gets deleted.
+#
+# This code should (try to) follow Google's Shell Style Guide
+# (https://google-styleguide.googlecode.com/svn/trunk/shell.xml)
+set -e
+
+case "$1" in
+ --wait)
+ WAIT=1
+ ;;
+ --direct-phys)
+ DIRECT_PHYS=1
+ shift
+ ;;
+esac
+
+IFNAME=$1
+
+# default value set further down if not set here
+CONTAINER_IFNAME=
+if [ "$2" = "-i" ]; then
+ CONTAINER_IFNAME=$3
+ shift 2
+fi
+
+if [ "$2" = "-l" ]; then
+ LOCAL_IFNAME=$3
+ shift 2
+fi
+
+#inet or inet6
+FAMILY_FLAG="-4"
+if [ "$2" = "-a" ]; then
+ FAMILY_FLAG="-$3"
+ shift 2
+fi
+
+GUESTNAME=$2
+IPADDR=$3
+MACADDR=$4
+
+case "$MACADDR" in
+ *@*)
+ VLAN="${MACADDR#*@}"
+ VLAN="${VLAN%%@*}"
+ MACADDR="${MACADDR%%@*}"
+ ;;
+ *)
+ VLAN=
+ ;;
+esac
+
+# did they ask to generate a custom MACADDR?
+# generate the unique string
+case "$MACADDR" in
+ U:*)
+ macunique="${MACADDR#*:}"
+ # now generate a 48-bit hash string from $macunique
+ MACADDR=$(echo $macunique|md5sum|sed 's/^\(..\)\(..\)\(..\)\(..\)\(..\).*$/02:\1:\2:\3:\4:\5/')
+ ;;
+esac
+
+
+[ "$IPADDR" ] || [ "$WAIT" ] || {
+ echo "Syntax:"
+ echo "pipework <hostinterface> [-i containerinterface] [-l localinterfacename] [-a addressfamily] <guest> <ipaddr>/<subnet>[@default_gateway] [macaddr][@vlan]"
+ echo "pipework <hostinterface> [-i containerinterface] [-l localinterfacename] <guest> dhcp [macaddr][@vlan]"
+ echo "pipework route <guest> <route_command>"
+ echo "pipework --wait [-i containerinterface]"
+ exit 1
+}
+
+# Succeed if the given utility is installed. Fail otherwise.
+# For explanations about `which` vs `type` vs `command`, see:
+# http://stackoverflow.com/questions/592620/check-if-a-program-exists-from-a-bash-script/677212#677212
+# (Thanks to @chenhanxiao for pointing this out!)
+installed () {
+ command -v "$1" >/dev/null 2>&1
+}
+
+# Google Styleguide says error messages should go to standard error.
+warn () {
+ echo "$@" >&2
+}
+die () {
+ status="$1"
+ shift
+ warn "$@"
+ exit "$status"
+}
+
+# First step: determine type of first argument (bridge, physical interface...),
+# Unless "--wait" is set (then skip the whole section)
+if [ -z "$WAIT" ]; then
+ if [ -d "/sys/class/net/$IFNAME" ]
+ then
+ if [ -d "/sys/class/net/$IFNAME/bridge" ]; then
+ IFTYPE=bridge
+ BRTYPE=linux
+ elif installed ovs-vsctl && ovs-vsctl list-br|grep -q "^${IFNAME}$"; then
+ IFTYPE=bridge
+ BRTYPE=openvswitch
+ elif [ "$(cat "/sys/class/net/$IFNAME/type")" -eq 32 ]; then # InfiniBand IPoIB interface type 32
+ IFTYPE=ipoib
+ # The IPoIB kernel module is fussy, set device name to ib0 if not overridden
+ CONTAINER_IFNAME=${CONTAINER_IFNAME:-ib0}
+ PKEY=$VLAN
+ else IFTYPE=phys
+ fi
+ else
+ case "$IFNAME" in
+ br*)
+ IFTYPE=bridge
+ BRTYPE=linux
+ ;;
+ ovs*)
+ if ! installed ovs-vsctl; then
+ die 1 "Need OVS installed on the system to create an ovs bridge"
+ fi
+ IFTYPE=bridge
+ BRTYPE=openvswitch
+ ;;
+ route*)
+ IFTYPE=route
+ ;;
+ dummy*)
+ IFTYPE=dummy
+ ;;
+ *) die 1 "I do not know how to setup interface $IFNAME." ;;
+ esac
+ fi
+fi
+
+# Set the default container interface name to eth1 if not already set
+CONTAINER_IFNAME=${CONTAINER_IFNAME:-eth1}
+
+[ "$WAIT" ] && {
+ while true; do
+ # This first method works even without `ip` or `ifconfig` installed,
+ # but doesn't work on older kernels (e.g. CentOS 6.X). See #128.
+ grep -q '^1$' "/sys/class/net/$CONTAINER_IFNAME/carrier" && break
+ # This method hopefully works on those older kernels.
+ ip link ls dev "$CONTAINER_IFNAME" && break
+ sleep 1
+ done > /dev/null 2>&1
+ exit 0
+}
+
+[ "$IFTYPE" = bridge ] && [ "$BRTYPE" = linux ] && [ "$VLAN" ] && {
+ die 1 "VLAN configuration currently unsupported for Linux bridge."
+}
+
+[ "$IFTYPE" = ipoib ] && [ "$MACADDR" ] && {
+ die 1 "MACADDR configuration unsupported for IPoIB interfaces."
+}
+
+# Second step: find the guest (for now, we only support LXC containers)
+while read _ mnt fstype options _; do
+ [ "$fstype" != "cgroup" ] && continue
+ echo "$options" | grep -qw devices || continue
+ CGROUPMNT=$mnt
+done < /proc/mounts
+
+[ "$CGROUPMNT" ] || {
+ die 1 "Could not locate cgroup mount point."
+}
+
+# Try to find a cgroup matching exactly the provided name.
+N=$(find "$CGROUPMNT" -name "$GUESTNAME" | wc -l)
+case "$N" in
+ 0)
+ # If we didn't find anything, try to lookup the container with Docker.
+ if installed docker; then
+ RETRIES=3
+ while [ "$RETRIES" -gt 0 ]; do
+ DOCKERPID=$(docker inspect --format='{{ .State.Pid }}' "$GUESTNAME")
+ [ "$DOCKERPID" != 0 ] && break
+ sleep 1
+ RETRIES=$((RETRIES - 1))
+ done
+
+ [ "$DOCKERPID" = 0 ] && {
+ die 1 "Docker inspect returned invalid PID 0"
+ }
+
+ [ "$DOCKERPID" = "<no value>" ] && {
+ die 1 "Container $GUESTNAME not found, and unknown to Docker."
+ }
+ else
+ die 1 "Container $GUESTNAME not found, and Docker not installed."
+ fi
+ ;;
+ 1) true ;;
+ *) die 1 "Found more than one container matching $GUESTNAME." ;;
+esac
+
+# only check IPADDR if we are not in a route mode
+[ "$IFTYPE" != route ] && {
+ case "$IPADDR" in
+ # Let's check first if the user asked for DHCP allocation.
+ dhcp|dhcp:*)
+ # Use Docker-specific strategy to run the DHCP client
+ # from the busybox image, in the network namespace of
+ # the container.
+ if ! [ "$DOCKERPID" ]; then
+ warn "You asked for a Docker-specific DHCP method."
+ warn "However, $GUESTNAME doesn't seem to be a Docker container."
+ warn "Try to replace 'dhcp' with another option?"
+ die 1 "Aborting."
+ fi
+ DHCP_CLIENT=${IPADDR%%:*}
+ ;;
+ udhcpc|udhcpc:*|udhcpc-f|udhcpc-f:*|dhcpcd|dhcpcd:*|dhclient|dhclient:*|dhclient-f|dhclient-f:*)
+ DHCP_CLIENT=${IPADDR%%:*}
+ # did they ask for the client to remain?
+ DHCP_FOREGROUND=
+ [ "${DHCP_CLIENT: -2}" = '-f' ] && {
+ DHCP_FOREGROUND=true
+ }
+ DHCP_CLIENT=${DHCP_CLIENT%-f}
+ if ! installed "$DHCP_CLIENT"; then
+ die 1 "You asked for DHCP client $DHCP_CLIENT, but I can't find it."
+ fi
+ ;;
+ # Alright, no DHCP? Then let's see if we have a subnet *and* gateway.
+ */*@*)
+ GATEWAY="${IPADDR#*@}" GATEWAY="${GATEWAY%%@*}"
+ IPADDR="${IPADDR%%@*}"
+ ;;
+ # No gateway? We need at least a subnet, anyway!
+ */*) : ;;
+ # ... No? Then stop right here.
+ *)
+ warn "The IP address should include a netmask."
+ die 1 "Maybe you meant $IPADDR/24 ?"
+ ;;
+ esac
+}
+
+# If a DHCP method was specified, extract the DHCP options.
+if [ "$DHCP_CLIENT" ]; then
+ case "$IPADDR" in
+ *:*) DHCP_OPTIONS="${IPADDR#*:}" ;;
+ esac
+fi
+
+if [ "$DOCKERPID" ]; then
+ NSPID=$DOCKERPID
+else
+ NSPID=$(head -n 1 "$(find "$CGROUPMNT" -name "$GUESTNAME" | head -n 1)/tasks")
+ [ "$NSPID" ] || {
+ # it is an alternative way to get the pid
+ NSPID=$(lxc-info -n "$GUESTNAME" | grep PID | grep -Eo '[0-9]+')
+ [ "$NSPID" ] || {
+ die 1 "Could not find a process inside container $GUESTNAME."
+ }
+ }
+fi
+
+# Check if an incompatible VLAN device already exists
+[ "$IFTYPE" = phys ] && [ "$VLAN" ] && [ -d "/sys/class/net/$IFNAME.VLAN" ] && {
+ ip -d link show "$IFNAME.$VLAN" | grep -q "vlan.*id $VLAN" || {
+ die 1 "$IFNAME.VLAN already exists but is not a VLAN device for tag $VLAN"
+ }
+}
+
+[ ! -d /var/run/netns ] && mkdir -p /var/run/netns
+rm -f "/var/run/netns/$NSPID"
+ln -s "/proc/$NSPID/ns/net" "/var/run/netns/$NSPID"
+
+# Check if we need to create a bridge.
+[ "$IFTYPE" = bridge ] && [ ! -d "/sys/class/net/$IFNAME" ] && {
+ [ "$BRTYPE" = linux ] && {
+ (ip link add dev "$IFNAME" type bridge > /dev/null 2>&1) || (brctl addbr "$IFNAME")
+ ip link set "$IFNAME" up
+ }
+ [ "$BRTYPE" = openvswitch ] && {
+ ovs-vsctl add-br "$IFNAME"
+ }
+}
+
+[ "$IFTYPE" != "route" ] && [ "$IFTYPE" != "dummy" ] && MTU=$(ip link show "$IFNAME" | awk '{print $5}')
+
+# If it's a bridge, we need to create a veth pair
+[ "$IFTYPE" = bridge ] && {
+ if [ -z "$LOCAL_IFNAME" ]; then
+ LOCAL_IFNAME="v${CONTAINER_IFNAME}pl${NSPID}"
+ fi
+ GUEST_IFNAME="v${CONTAINER_IFNAME}pg${NSPID}"
+ # Does the link already exist?
+ if ip link show "$LOCAL_IFNAME" >/dev/null 2>&1; then
+ # link exists, is it in use?
+ if ip link show "$LOCAL_IFNAME" up | grep -q "UP"; then
+ echo "Link $LOCAL_IFNAME exists and is up"
+ exit 1
+ fi
+ # delete the link so we can re-add it afterwards
+ ip link del "$LOCAL_IFNAME"
+ fi
+ ip link add name "$LOCAL_IFNAME" mtu "$MTU" type veth peer name "$GUEST_IFNAME" mtu "$MTU"
+ case "$BRTYPE" in
+ linux)
+ (ip link set "$LOCAL_IFNAME" master "$IFNAME" > /dev/null 2>&1) || (brctl addif "$IFNAME" "$LOCAL_IFNAME")
+ ;;
+ openvswitch)
+ if ! ovs-vsctl list-ports "$IFNAME" | grep -q "^${LOCAL_IFNAME}$"; then
+ ovs-vsctl add-port "$IFNAME" "$LOCAL_IFNAME" ${VLAN:+tag="$VLAN"}
+ fi
+ ;;
+ esac
+ ip link set "$LOCAL_IFNAME" up
+}
+
+# If it's a physical interface, create a macvlan subinterface
+[ "$IFTYPE" = phys ] && {
+ [ "$VLAN" ] && {
+ [ ! -d "/sys/class/net/${IFNAME}.${VLAN}" ] && {
+ ip link add link "$IFNAME" name "$IFNAME.$VLAN" mtu "$MTU" type vlan id "$VLAN"
+ }
+ ip link set "$IFNAME" up
+ IFNAME=$IFNAME.$VLAN
+ }
+
+ if [ ! -z "$DIRECT_PHYS" ]; then
+ GUEST_IFNAME=$IFNAME
+ else
+ GUEST_IFNAME=ph$NSPID$CONTAINER_IFNAME
+ ip link add link "$IFNAME" dev "$GUEST_IFNAME" mtu "$MTU" type macvlan mode bridge
+ fi
+
+ ip link set "$IFNAME" up
+}
+
+# If it's an IPoIB interface, create a virtual IPoIB interface (the IPoIB
+# equivalent of a macvlan device)
+#
+# Note: no macvlan subinterface nor Ethernet bridge can be created on top of an
+# IPoIB interface. InfiniBand is not Ethernet. IPoIB is an IP layer on top of
+# InfiniBand, without an intermediate Ethernet layer.
+[ "$IFTYPE" = ipoib ] && {
+ GUEST_IFNAME="${IFNAME}.${NSPID}"
+
+ # If a partition key is provided, use it
+ [ "$PKEY" ] && {
+ GUEST_IFNAME="${IFNAME}.${PKEY}.${NSPID}"
+ PKEY="pkey 0x$PKEY"
+ }
+
+ ip link add link "$IFNAME" name "$GUEST_IFNAME" type ipoib $PKEY
+ ip link set "$IFNAME" up
+}
+
+# If its a dummy interface, create a dummy interface.
+[ "$IFTYPE" = dummy ] && {
+ GUEST_IFNAME=du$NSPID$CONTAINER_IFNAME
+ ip link add dev "$GUEST_IFNAME" type dummy
+}
+
+# If the `route` command was specified ...
+if [ "$IFTYPE" = route ]; then
+ # ... discard the first two arguments and pass the rest to the route command.
+ shift 2
+ ip netns exec "$NSPID" ip route "$@"
+else
+ # Otherwise, run normally.
+ ip link set "$GUEST_IFNAME" netns "$NSPID"
+ ip netns exec "$NSPID" ip link set "$GUEST_IFNAME" name "$CONTAINER_IFNAME"
+ [ "$MACADDR" ] && ip netns exec "$NSPID" ip link set dev "$CONTAINER_IFNAME" address "$MACADDR"
+
+ # When using any of the DHCP methods, we start a DHCP client in the
+ # network namespace of the container. With the 'dhcp' method, the
+ # client used is taken from the Docker busybox image (therefore
+ # requiring no specific client installed on the host). Other methods
+ # use a locally installed client.
+ case "$DHCP_CLIENT" in
+ dhcp)
+ docker run -d --net container:$GUESTNAME --cap-add NET_ADMIN \
+ busybox udhcpc -i "$CONTAINER_IFNAME" -x "hostname:$GUESTNAME" \
+ $DHCP_OPTIONS \
+ >/dev/null
+ ;;
+ udhcpc)
+ DHCP_Q="-q"
+ [ "$DHCP_FOREGROUND" ] && {
+ DHCP_OPTIONS="$DHCP_OPTIONS -f"
+ }
+ ip netns exec "$NSPID" "$DHCP_CLIENT" -qi "$CONTAINER_IFNAME" \
+ -x "hostname:$GUESTNAME" \
+ -p "/var/run/udhcpc.$GUESTNAME.pid" \
+ $DHCP_OPTIONS
+ [ ! "$DHCP_FOREGROUND" ] && {
+ rm "/var/run/udhcpc.$GUESTNAME.pid"
+ }
+ ;;
+ dhclient)
+ ip netns exec "$NSPID" "$DHCP_CLIENT" "$CONTAINER_IFNAME" \
+ -pf "/var/run/dhclient.$GUESTNAME.pid" \
+ -lf "/etc/dhclient/dhclient.$GUESTNAME.leases" \
+ $DHCP_OPTIONS
+ # kill dhclient after get ip address to prevent device be used after container close
+ [ ! "$DHCP_FOREGROUND" ] && {
+ kill "$(cat "/var/run/dhclient.$GUESTNAME.pid")"
+ rm "/var/run/dhclient.$GUESTNAME.pid"
+ }
+ ;;
+ dhcpcd)
+ ip netns exec "$NSPID" "$DHCP_CLIENT" -q "$CONTAINER_IFNAME" -h "$GUESTNAME"
+ ;;
+ "")
+ if installed ipcalc; then
+ eval $(ipcalc -b $IPADDR)
+ ip netns exec "$NSPID" ip "$FAMILY_FLAG" addr add "$IPADDR" brd "$BROADCAST" dev "$CONTAINER_IFNAME"
+ else
+ ip netns exec "$NSPID" ip "$FAMILY_FLAG" addr add "$IPADDR" dev "$CONTAINER_IFNAME"
+ fi
+
+ [ "$GATEWAY" ] && {
+ ip netns exec "$NSPID" ip "$FAMILY_FLAG" route delete default >/dev/null 2>&1 && true
+ }
+ ip netns exec "$NSPID" ip "$FAMILY_FLAG" link set "$CONTAINER_IFNAME" up
+ [ "$GATEWAY" ] && {
+ ip netns exec "$NSPID" ip "$FAMILY_FLAG" route get "$GATEWAY" >/dev/null 2>&1 || \
+ ip netns exec "$NSPID" ip "$FAMILY_FLAG" route add "$GATEWAY/32" dev "$CONTAINER_IFNAME"
+ ip netns exec "$NSPID" ip "$FAMILY_FLAG" route replace default via "$GATEWAY" dev "$CONTAINER_IFNAME"
+ }
+ ;;
+ esac
+
+ # Give our ARP neighbors a nudge about the new interface
+ if installed arping; then
+ IPADDR=$(echo "$IPADDR" | cut -d/ -f1)
+ ip netns exec "$NSPID" arping -c 1 -A -I "$CONTAINER_IFNAME" "$IPADDR" > /dev/null 2>&1 || true
+ else
+ echo "Warning: arping not found; interface may not be immediately reachable"
+ fi
+fi
+# Remove NSPID to avoid `ip netns` catch it.
+rm -f "/var/run/netns/$NSPID"
+
+# vim: set tabstop=2 shiftwidth=2 softtabstop=2 expandtab :
diff --git a/util/docker-compose/roles/compass/files/prepare_ansible.sh b/util/docker-compose/roles/compass/files/prepare_ansible.sh
new file mode 100755
index 00000000..031333c8
--- /dev/null
+++ b/util/docker-compose/roles/compass/files/prepare_ansible.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+for i in `ls /root/compass4nfv/deploy/adapters/ansible | grep "openstack_"`; do
+ mkdir -p /root/docker_compose/ansible/$i
+ cp -rf /root/compass4nfv/deploy/adapters/ansible/openstack/* /root/docker_compose/ansible/$i
+ cp -rf /root/compass4nfv/deploy/adapters/ansible/$i /root/docker_compose/ansible/
+done
+cp -rf /root/compass4nfv/deploy/adapters/ansible/roles /root/docker_compose/ansible/
diff --git a/util/docker-compose/roles/compass/files/preseed_post_anamon b/util/docker-compose/roles/compass/files/preseed_post_anamon
new file mode 100755
index 00000000..b4c85253
--- /dev/null
+++ b/util/docker-compose/roles/compass/files/preseed_post_anamon
@@ -0,0 +1,80 @@
+#if $str($getVar('anamon_enabled','')) == "1"
+
+## install anamon script
+ #if $getVar("compass_server", "") != ""
+wget -O /usr/local/sbin/anamon "http://$compass_server:$http_port/cobbler/aux/anamon"
+ #else
+wget -O /usr/local/sbin/anamon "http://$server:$http_port/cobbler/aux/anamon"
+ #end if
+## install anamon system service
+cat << EOF > /etc/init.d/anamon.init
+#raw
+#!/bin/bash
+## BEGIN INIT INFO
+# Provides: anamon.init
+# Default-Start: 3 5
+# Default-Stop: 0 1 2 4 6
+# Required-Start: $network
+# Short-Description: Starts the cobbler anamon boot notification program
+# Description: anamon runs the first time a machine is booted after
+# installation.
+## END INIT INFO
+
+#
+# anamon.init: Starts the cobbler post-install boot notification program
+#
+# chkconfig: 35 95 95
+#
+# description: anamon runs the first time a machine is booted after
+# installation.
+#
+#end raw
+cd /var/log/installer
+gunzip initial-status.gz
+cd -
+#if $getVar("compass_server","") != ""
+/usr/local/sbin/anamon --watchfile "/var/log/installer/syslog /var/log/installer/hardware-summary /var/log/installer/initial-status /var/log/installer/status" --name $name --server $compass_server --port $http_port --exit
+#else
+/usr/local/sbin/anamon --watchfile "/var/log/installer/syslog /var/log/installer/hardware-summary /var/log/installer/initial-status /var/log/installer/status" --name $name --server $server --port $http_port --exit
+#end if
+update-rc.d -f anamon remove
+mv /etc/init.d/anamon.init /tmp/anamon.init
+EOF
+
+## adjust permissions
+chmod 755 /etc/init.d/anamon.init /usr/local/sbin/anamon
+test -d /selinux && restorecon /etc/init.d/anamon.init /usr/local/sbin/anamon
+
+## enable the script
+update-rc.d anamon.init defaults 95 95
+#end if
+
+## place start-up script for updating os state
+#if $getVar('compass_server', '') != ""
+ #set srv = $getVar('compass_server','')
+#else
+ #set srv = $getVar('server','')
+#end if
+cat << EOF > /etc/init.d/set_state
+#raw
+#!/bin/bash
+# Provides: set_state
+# Default-Start: 3 5
+# Default-Stop: 0 1 2 4 6
+# Required-Start: $network $ssh
+# Short-Description: Notifies the os installation is finished
+# Description: set_state runs the first time a machine is booted after
+# installation.
+#end raw
+wget -O /tmp/os_state --post-data='{"ready": true}' --header=Content-Type:application/json "http://$srv:5050/api/hosts/${host_id}/state_internal"
+update-rc.d -f set_state remove
+mv /etc/init.d/set_state /tmp/set_state
+EOF
+
+## adjust permissions
+chmod 755 /etc/init.d/set_state
+test -d /selinux && restorecon /etc/init.d/set_state
+
+update-rc.d set_state defaults 99 99
+
+echo "compass_server=$server" >> /etc/compass.conf
diff --git a/util/docker-compose/roles/compass/files/switch_list.conf b/util/docker-compose/roles/compass/files/switch_list.conf
new file mode 100755
index 00000000..21c46c0a
--- /dev/null
+++ b/util/docker-compose/roles/compass/files/switch_list.conf
@@ -0,0 +1,3 @@
+SWITCH_LIST = [
+ '127.0.0.1'
+]
diff --git a/util/docker-compose/roles/compass/files/up_containers.sh b/util/docker-compose/roles/compass/files/up_containers.sh
new file mode 100755
index 00000000..9aca591a
--- /dev/null
+++ b/util/docker-compose/roles/compass/files/up_containers.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+cd /root/docker_compose
+docker-compose up
diff --git a/util/docker-compose/roles/compass/tasks/main.yml b/util/docker-compose/roles/compass/tasks/main.yml
new file mode 100755
index 00000000..9ee7902e
--- /dev/null
+++ b/util/docker-compose/roles/compass/tasks/main.yml
@@ -0,0 +1,139 @@
+---
+- include_vars: "{{ compass_dists_dir }}/build.yaml"
+
+- set_fact:
+ image_name: "{{ item.name | regex_replace('-', '_') }}"
+ image_repo: "{{ item.url }}"
+ with_items: "{{ packages }}"
+ when: item.name in compose_images
+ register: compass_images
+
+- name: generate compose_images.yml
+ copy:
+ dest: "{{ compass_dists_dir }}/compose_images.yml"
+ content: |
+ {% set image_dict = {} %}
+ {% for item in compass_images.results %}
+ {% if "ansible_facts" in item %}
+ {% set facts = item.ansible_facts %}
+ {% set _ = image_dict.update({facts.image_name: facts.image_repo}) %}
+ {% endif %}
+ {% endfor %}
+ {% for key in image_dict %}
+ {{ key }}: {{ image_dict[key] }}
+ {% endfor %}
+
+- include_vars: "{{ compass_dists_dir }}/compose_images.yml"
+
+- name: get jumphost ip
+ shell: |
+ external_nic=`ip route |grep '^default'|awk '{print $5F}'|sed -n '1p'`
+ host_ip=`ifconfig $external_nic | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'`
+ echo $host_ip
+ register: external_ip
+
+- name: fix name.service
+ shell: |
+ if [ ! -f "/etc/apparmor.d/disable/usr.sbin.named" ]; then
+ ln -s /etc/apparmor.d/usr.sbin.named /etc/apparmor.d/disable/
+ apparmor_parser -R /etc/apparmor.d/usr.sbin.named
+ fi
+
+- name: render docker-compose file
+ template:
+ src: docker-compose.yml.j2
+ dest: "{{ docker_compose_dir }}/docker-compose.yml"
+
+- name: docker-compose down
+ shell: docker-compose down
+ args:
+ chdir: "{{ docker_compose_dir }}"
+
+- name: load docker images
+ shell: |
+ images=$(ls "{{ compass_dists_dir }}" | grep .*.tar)
+ for image in $images
+ do
+ docker load -i "{{ compass_dists_dir }}/$image"
+ done
+
+- name: copy files
+ shell:
+ cp -rf "{{ item }}" "{{ docker_compose_dir }}"
+ with_items:
+ - "{{ compass_dir }}/deploy/adapters/ansible"
+ - "{{ compass_dir }}/deploy/compass_conf"
+ - "{{ compass_dir }}/deploy/adapters/cobbler"
+
+- name: retrieve plugins list
+ command: "ls {{ compass_dir }}/plugins/"
+ register: plugin_list
+
+- name: copy plugins roles
+ copy:
+ src: "{{ compass_dir }}/plugins/{{ item }}/roles/"
+ dest: "{{ docker_compose_dir }}/ansible/roles/"
+ with_items: "{{ plugin_list.stdout_lines }}"
+ when: item != 'template'
+
+- name: chmod directory
+ file:
+ dest: "{{ item }}"
+ mode: 0755
+ with_items:
+ - "{{ compass_dir }}/deploy/adapters/ansible"
+ - "{{ compass_dir }}/deploy/compass_conf"
+ - "{{ compass_dir }}/deploy/adapters/cobbler"
+
+- name: copy ansible scripts into ansible folder
+ shell: |
+ for i in `ls "{{ docker_compose_dir }}/ansible" | grep "openstack_"`; do
+ cp -rf "{{ docker_compose_dir }}"/ansible/openstack/* \
+ "{{ docker_compose_dir }}"/ansible/$i
+ done
+
+- name: create run dir
+ file:
+ path: "{{ docker_compose_dir }}/ansible/run"
+ state: directory
+
+- name: render cobbler
+ template:
+ src: "{{ item }}.j2"
+ dest: "{{ docker_compose_dir }}/compass_conf/os_installer/{{ item }}"
+ with_items:
+ - cobbler.conf
+
+- name: docker-compose up
+ shell: docker-compose up -d
+ args:
+ chdir: "{{ docker_compose_dir }}"
+
+- name: create compass db tables
+ shell: |
+ sleep 3; \
+ docker exec compass-deck bash -c "/opt/compass/bin/manage_db.py createdb"
+ register: result1
+ until: result1.rc == 0
+ retries: 10
+ delay: 2
+ tags:
+ - redploy
+
+- name: add ansible callback
+ shell: |
+ docker cp "{{ item }}" \
+ compass-deck:/root/compass-deck/bin/ansible_callbacks
+ docker cp "{{ item }}" \
+ compass-tasks:/opt/ansible_callbacks
+ with_items:
+ - "{{ compass_dir }}/deploy/status_callback.py"
+ - "{{ compass_dir }}/deploy/playbook_done.py"
+
+- name: rm ansible run
+ shell: |
+ docker exec compass-tasks bash -c "rm -rf /var/ansible/run/*"
+
+- name: start httpd service
+ shell: |
+ docker exec compass-deck bash -c "systemctl start httpd"
diff --git a/util/docker-compose/roles/compass/templates/cobbler.conf.j2 b/util/docker-compose/roles/compass/templates/cobbler.conf.j2
new file mode 100755
index 00000000..5cc86e8e
--- /dev/null
+++ b/util/docker-compose/roles/compass/templates/cobbler.conf.j2
@@ -0,0 +1,9 @@
+NAME = 'cobbler'
+INSTANCE_NAME = 'cobbler'
+SETTINGS = {
+ 'cobbler_url': 'http://{{ host_ip }}/cobbler_api',
+ 'credentials': {
+ 'username': 'cobbler',
+ 'password': 'cobbler'
+ }
+}
diff --git a/util/docker-compose/roles/compass/templates/dhcp.template.j2 b/util/docker-compose/roles/compass/templates/dhcp.template.j2
new file mode 100755
index 00000000..0665f2fe
--- /dev/null
+++ b/util/docker-compose/roles/compass/templates/dhcp.template.j2
@@ -0,0 +1,97 @@
+# ******************************************************************
+# Cobbler managed dhcpd.conf file
+#
+# generated from cobbler dhcp.conf template ($date)
+# Do NOT make changes to /etc/dhcpd.conf. Instead, make your changes
+# in /etc/cobbler/dhcp.template, as /etc/dhcpd.conf will be
+# overwritten.
+#
+# ******************************************************************
+
+ddns-update-style interim;
+
+allow booting;
+allow bootp;
+deny unknown-clients;
+local-address {{ host_ip }};
+log-facility local6;
+
+ignore client-updates;
+set vendorclass = option vendor-class-identifier;
+
+option pxe-system-type code 93 = unsigned integer 16;
+option space pxelinux;
+option pxelinux.magic code 208 = string;
+option pxelinux.configfile code 209 = text;
+option pxelinux.pathprefix code 210 = text;
+option pxelinux.reboottime code 211 = unsigned integer 32;
+
+subnet {{ install_subnet }} netmask {{ install_netmask }} {
+ option routers {{ host_ip }};
+ option domain-name-servers {{ host_ip }};
+ option subnet-mask {{ install_netmask }};
+ range dynamic-bootp {{ install_ip_range }};
+ default-lease-time 21600;
+ max-lease-time 43200;
+ next-server {{ host_ip }};
+ class "pxeclients" {
+ match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
+ if option pxe-system-type = 00:02 {
+ filename "ia64/elilo.efi";
+ } else if option pxe-system-type = 00:06 {
+ filename "grub/grub-x86.efi";
+ } else if option pxe-system-type = 00:07 {
+ filename "grub/grub-x86_64.efi";
+ } else {
+ filename "pxelinux.0";
+ }
+ }
+
+}
+
+#for dhcp_tag in $dhcp_tags.keys():
+ ## group could be subnet if your dhcp tags line up with your subnets
+ ## or really any valid dhcpd.conf construct ... if you only use the
+ ## default dhcp tag in cobbler, the group block can be deleted for a
+ ## flat configuration
+# group for Cobbler DHCP tag: $dhcp_tag
+group {
+ #for mac in $dhcp_tags[$dhcp_tag].keys():
+ #set iface = $dhcp_tags[$dhcp_tag][$mac]
+ host $iface.name {
+ hardware ethernet $mac;
+ site-option-space "pxelinux";
+ option pxelinux.magic f1:00:74:7e;
+ if exists dhcp-parameter-request-list {
+ # Always send the PXELINUX options (specified in hexadecimal)
+ option dhcp-parameter-request-list = concat(option dhcp-parameter-request-list,d0,d1,d2,d3);
+ }
+ option pxelinux.reboottime 30;
+ #if $iface.hostname:
+ option host-name "$iface.hostname";
+ #end if
+ #if $iface.netmask:
+ option subnet-mask $iface.netmask;
+ #end if
+ #if $iface.gateway:
+ option routers $iface.gateway;
+ #end if
+ #if $iface.enable_gpxe:
+ if exists user-class and option user-class = "gPXE" {
+ filename "http://$cobbler_server/cblr/svc/op/gpxe/system/$iface.owner";
+ } else if exists user-class and option user-class = "iPXE" {
+ filename "http://$cobbler_server/cblr/svc/op/gpxe/system/$iface.owner";
+ } else {
+ filename "undionly.kpxe";
+ }
+ #else
+ filename "$iface.filename";
+ #end if
+ ## Cobbler defaults to $next_server, but some users
+ ## may like to use $iface.system.server for proxied setups
+ next-server $next_server;
+ ## next-server $iface.next_server;
+ }
+ #end for
+}
+#end for
diff --git a/util/docker-compose/roles/compass/templates/distro_signatures.json b/util/docker-compose/roles/compass/templates/distro_signatures.json
new file mode 100755
index 00000000..e6991816
--- /dev/null
+++ b/util/docker-compose/roles/compass/templates/distro_signatures.json
@@ -0,0 +1,974 @@
+{"breeds":
+ {
+ "redhat": {
+ "rhel4": {
+ "signatures":["RedHat/RPMS","CentOS/RPMS"],
+ "version_file":"(redhat|sl|centos)-release-4(AS|WS|ES)[\\.-]+(.*)\\.rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*).rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","x86_64","ppc","ppc64"],
+ "supported_repo_breeds":["rsync", "rhn", "yum"],
+ "kernel_file":"vmlinuz(.*)",
+ "initrd_file":"initrd(.*)\\.img",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample.ks",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "rhel5": {
+ "signatures":["RedHat","Server","CentOS","Client"],
+ "version_file":"(redhat|sl|centos)-release-5([^\\.][\\w]*)?[\\.-]+(.*)\\.rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*).rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","x86_64","ppc","ppc64"],
+ "supported_repo_breeds":["rsync", "rhn", "yum"],
+ "kernel_file":"vmlinuz(.*)",
+ "initrd_file":"initrd(.*)\\.img",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample.ks",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "rhel6": {
+ "signatures":["Packages"],
+ "version_file":"(redhat|sl|slf|centos|oraclelinux)-release-(?!notes)([\\w]*-)*6(Server)*[\\.-]+(.*)\\.rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*).rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","x86_64","ppc","ppc64"],
+ "supported_repo_breeds":["rsync", "rhn", "yum"],
+ "kernel_file":"vmlinuz(.*)",
+ "initrd_file":"initrd(.*)\\.img",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_end.ks",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "rhel7": {
+ "signatures":["Packages"],
+ "version_file":"(redhat|sl|slf|centos|oraclelinux)-release-(?!notes)([\\w]*-)*7(Server)*[\\.-]+(.*)\\.rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*).rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","x86_64","ppc","ppc64"],
+ "supported_repo_breeds":["rsync", "rhn", "yum"],
+ "kernel_file":"vmlinuz(.*)",
+ "initrd_file":"initrd(.*)\\.img",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_end.ks",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "fedora16": {
+ "signatures":["Packages"],
+ "version_file":"(fedora)-release-16-(.*)\\.noarch\\.rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","x86_64","ppc","ppc64"],
+ "supported_repo_breeds":["rsync", "rhn", "yum"],
+ "kernel_file":"vmlinuz(.*)",
+ "initrd_file":"initrd(.*)\\.img",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_end.ks",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "fedora17": {
+ "signatures":["Packages"],
+ "version_file":"(fedora)-release-17-(.*)\\.noarch\\.rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","x86_64","ppc","ppc64"],
+ "supported_repo_breeds":["rsync", "rhn", "yum"],
+ "kernel_file":"vmlinuz(.*)",
+ "initrd_file":"initrd(.*)\\.img",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_end.ks",
+ "kernel_options":"repo=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "fedora18": {
+ "signatures":["Packages"],
+ "version_file":"(fedora)-release-18-(.*)\\.noarch\\.rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","x86_64","ppc","ppc64"],
+ "supported_repo_breeds":["rsync", "rhn", "yum"],
+ "kernel_file":"vmlinuz(.*)",
+ "initrd_file":"initrd(.*)\\.img",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_end.ks",
+ "kernel_options":"repo=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "fedora19": {
+ "signatures":["Packages"],
+ "version_file":"(fedora)-release-19-(.*)\\.noarch\\.rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","x86_64","ppc","ppc64"],
+ "supported_repo_breeds":["rsync", "rhn", "yum"],
+ "kernel_file":"vmlinuz(.*)",
+ "initrd_file":"initrd(.*)\\.img",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_end.ks",
+ "kernel_options":"repo=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "fedora20": {
+ "signatures":["Packages"],
+ "version_file":"(fedora)-release-20-(.*)\\.noarch\\.rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","x86_64","ppc","ppc64"],
+ "supported_repo_breeds":["rsync", "rhn", "yum"],
+ "kernel_file":"vmlinuz(.*)",
+ "initrd_file":"initrd(.*)\\.img",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_end.ks",
+ "kernel_options":"repo=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "fedora21": {
+ "signatures":["Packages"],
+ "version_file":"(fedora)-release-21-(.*)\\.noarch\\.rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","x86_64","ppc","ppc64"],
+ "supported_repo_breeds":["rsync", "rhn", "yum"],
+ "kernel_file":"vmlinuz(.*)",
+ "initrd_file":"initrd(.*)\\.img",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_end.ks",
+ "kernel_options":"repo=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "fedora22": {
+ "signatures":["Packages"],
+ "version_file":"(fedora)-release-22-(.*)\\.noarch\\.rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","x86_64","ppc","ppc64","ppc64le"],
+ "supported_repo_breeds":["rsync", "rhn", "yum"],
+ "kernel_file":"vmlinuz(.*)",
+ "initrd_file":"initrd(.*)\\.img",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_end.ks",
+ "kernel_options":"repo=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "fedora23": {
+ "signatures":["Packages"],
+ "version_file":"(fedora)-release-23-(.*)\\.noarch\\.rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","x86_64","ppc","ppc64","ppc64le"],
+ "supported_repo_breeds":["rsync", "rhn", "yum"],
+ "kernel_file":"vmlinuz(.*)",
+ "initrd_file":"initrd(.*)\\.img",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_end.ks",
+ "kernel_options":"repo=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "cloudlinux6": {
+ "signatures":["Packages"],
+ "version_file":"(cloudlinux)-release-(.*)\\.rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*).rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","x86_64","ppc","ppc64"],
+ "supported_repo_breeds":["rsync", "rhn", "yum"],
+ "kernel_file":"vmlinuz(.*)",
+ "initrd_file":"initrd(.*)\\.img",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_end.ks",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ }
+ },
+ "debian": {
+ "squeeze": {
+ "signatures":["dists"],
+ "version_file":"Release",
+ "version_file_regex":"Codename: squeeze",
+ "kernel_arch":"linux-headers-(.*)\\.deb",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":["apt"],
+ "kernel_file":"vmlinuz(.*)",
+ "initrd_file":"initrd(.*)\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample.seed",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "wheezy": {
+ "signatures":["dists"],
+ "version_file":"Release",
+ "version_file_regex":"Codename: wheezy",
+ "kernel_arch":"linux-headers-(.*)\\.deb",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":["apt"],
+ "kernel_file":"vmlinuz(.*)",
+ "initrd_file":"initrd(.*)\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample.seed",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "jessie": {
+ "signatures":["dists"],
+ "version_file":"Release",
+ "version_file_regex":"Codename: jessie",
+ "kernel_arch":"linux-headers-(.*)\\.deb",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":["apt"],
+ "kernel_file":"vmlinuz(.*)",
+ "initrd_file":"initrd(.*)\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample.seed",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "stretch": {
+ "signatures":["dists"],
+ "version_file":"Release",
+ "version_file_regex":"Codename: stretch",
+ "kernel_arch":"linux-headers-(.*)\\.deb",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":["apt"],
+ "kernel_file":"vmlinuz(.*)",
+ "initrd_file":"initrd(.*)\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample.seed",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ }
+ },
+ "ubuntu": {
+ "lucid": {
+ "signatures":["dists", ".disk"],
+ "version_file":"Release|mini-info",
+ "version_file_regex":"Codename: lucid|Ubuntu 10.04",
+ "kernel_arch":"linux-headers-(.*)\\.deb",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":["apt"],
+ "kernel_file":"linux(.*)",
+ "initrd_file":"initrd(.*)\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample.seed",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "oneiric": {
+ "signatures":["dists", ".disk"],
+ "version_file":"Release|mini-info",
+ "version_file_regex":"Codename: oneiric|Ubuntu 11.10",
+ "kernel_arch":"linux-headers-(.*)\\.deb",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":["apt"],
+ "kernel_file":"linux(.*)",
+ "initrd_file":"initrd(.*)\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample.seed",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "precise": {
+ "signatures":["dists", ".disk"],
+ "version_file":"Release|mini-info",
+ "version_file_regex":"Codename: precise|Ubuntu 12.04",
+ "kernel_arch":"linux-headers-(.*)\\.deb",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":["apt"],
+ "kernel_file":"linux(.*)",
+ "initrd_file":"initrd(.*)\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample.seed",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "quantal": {
+ "signatures":["dists", ".disk"],
+ "version_file":"Release|mini-info",
+ "version_file_regex":"Codename: quantal|Ubuntu 12.10",
+ "kernel_arch":"linux-headers-(.*)\\.deb",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":["apt"],
+ "kernel_file":"linux(.*)",
+ "initrd_file":"initrd(.*)\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample.seed",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "raring": {
+ "signatures":["dists", ".disk"],
+ "version_file":"Release|mini-info",
+ "version_file_regex":"Codename: raring|Ubuntu 13.04",
+ "kernel_arch":"linux-headers-(.*)\\.deb",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":["apt"],
+ "kernel_file":"linux(.*)",
+ "initrd_file":"initrd(.*)\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample.seed",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "saucy": {
+ "signatures":["dists", ".disk"],
+ "version_file":"Release|mini-info",
+ "version_file_regex":"Codename: saucy|Ubuntu 13.10",
+ "kernel_arch":"linux-headers-(.*)\\.deb",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":["apt"],
+ "kernel_file":"linux(.*)",
+ "initrd_file":"initrd(.*)\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample.seed",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "trusty": {
+ "signatures":["dists", ".disk"],
+ "version_file":"Release|mini-info",
+ "version_file_regex":"Codename: trusty|Ubuntu 14.04",
+ "kernel_arch":"linux-headers-(.*)\\.deb",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":["apt"],
+ "kernel_file":"linux(.*)",
+ "initrd_file":"initrd(.*)\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample.seed",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "vivid": {
+ "signatures":["dists", ".disk"],
+ "version_file":"Release|mini-info",
+ "version_file_regex":"Codename: vivid|Ubuntu 15.04",
+ "kernel_arch":"linux-headers-(.*)\\.deb",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":["apt"],
+ "kernel_file":"linux(.*)",
+ "initrd_file":"initrd(.*)\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample.seed",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "wily": {
+ "signatures":["dists", ".disk"],
+ "version_file":"Release|mini-info",
+ "version_file_regex":"Codename: wily|Ubuntu 15.10",
+ "kernel_arch":"linux-headers-(.*)\\.deb",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":["apt"],
+ "kernel_file":"linux(.*)",
+ "initrd_file":"initrd(.*)\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample.seed",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "xenial": {
+ "signatures":["dists", ".disk"],
+ "version_file":"Release|mini-info",
+ "version_file_regex":"Codename: xenial|Ubuntu 16.04",
+ "kernel_arch":"linux-headers-(.*)\\.deb",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":["apt"],
+ "kernel_file":"linux(.*)",
+ "initrd_file":"initrd(.*)\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample.seed",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ }
+ },
+ "suse": {
+ "opensuse11.2": {
+ "signatures":["suse"],
+ "version_file":"openSUSE-release-11.2-(.*).rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","i586","x86_64"],
+ "supported_repo_breeds":["yum"],
+ "kernel_file":"(linux|vmlinuz(.*))",
+ "initrd_file":"initrd(.*)",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_autoyast.xml",
+ "kernel_options":"install=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "opensuse11.3": {
+ "signatures":["suse"],
+ "version_file":"openSUSE-release-11.3-(.*).rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","i586","x86_64"],
+ "supported_repo_breeds":["yum"],
+ "kernel_file":"(linux|vmlinuz(.*))",
+ "initrd_file":"initrd(.*)",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_autoyast.xml",
+ "kernel_options":"install=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "opensuse11.4": {
+ "signatures":["suse"],
+ "version_file":"openSUSE-release-11.4-(.*).rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","i586","x86_64"],
+ "supported_repo_breeds":["yum"],
+ "kernel_file":"(linux|vmlinuz(.*))",
+ "initrd_file":"initrd(.*)",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_autoyast.xml",
+ "kernel_options":"install=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "opensuse12.1": {
+ "signatures":["suse"],
+ "version_file":"openSUSE-release-12.1-(.*).rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","i586","x86_64"],
+ "supported_repo_breeds":["yum"],
+ "kernel_file":"(linux|vmlinuz(.*))",
+ "initrd_file":"initrd(.*)",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_autoyast.xml",
+ "kernel_options":"install=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "opensuse12.2": {
+ "signatures":["suse"],
+ "version_file":"openSUSE-release-12.2-(.*).rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","i586","x86_64"],
+ "supported_repo_breeds":["yum"],
+ "kernel_file":"(linux|vmlinuz(.*))",
+ "initrd_file":"initrd(.*)",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_autoyast.xml",
+ "kernel_options":"install=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "opensuse12.3": {
+ "signatures":["suse"],
+ "version_file":"openSUSE-release-12.3-(.*).rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","i586","x86_64"],
+ "supported_repo_breeds":["yum"],
+ "kernel_file":"(linux|vmlinuz(.*))",
+ "initrd_file":"initrd(.*)",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_autoyast.xml",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "opensuse13.1": {
+ "signatures":["suse"],
+ "version_file":"openSUSE-release-13.1-(.*).rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","i586","x86_64"],
+ "supported_repo_breeds":["yum"],
+ "kernel_file":"(linux|vmlinuz(.*))",
+ "initrd_file":"initrd(.*)",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_autoyast.xml",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "opensuse13.2": {
+ "signatures":["suse"],
+ "version_file":"openSUSE-release-13.2-(.*).rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","i586","x86_64"],
+ "supported_repo_breeds":["yum"],
+ "kernel_file":"(linux|vmlinuz(.*))",
+ "initrd_file":"initrd(.*)",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_autoyast.xml",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "sles10": {
+ "signatures":["suse"],
+ "version_file":"sles-release-10-(.*).rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","i586","x86_64","ppc64"],
+ "supported_repo_breeds":["yum"],
+ "kernel_file":"linux[64.gz]?",
+ "initrd_file":"initrd[64]?",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_autoyast.xml",
+ "kernel_options":"install=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "sles11": {
+ "signatures":["suse"],
+ "version_file":"sles-release-11-(.*).rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","i586","x86_64","ppc64"],
+ "supported_repo_breeds":["yum"],
+ "kernel_file":"linux[64.gz]?",
+ "initrd_file":"initrd[64]?",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_autoyast.xml",
+ "kernel_options":"install=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "sles11sp1": {
+ "signatures":["suse"],
+ "version_file":"sles-release-11.1-(.*).rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","i586","x86_64","ppc64"],
+ "supported_repo_breeds":["yum"],
+ "kernel_file":"linux[64.gz]?",
+ "initrd_file":"initrd[64]?",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_autoyast.xml",
+ "kernel_options":"install=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "sles11sp2": {
+ "signatures":["suse"],
+ "version_file":"sles-release-11.2-(.*).rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","i586","x86_64","ppc64"],
+ "supported_repo_breeds":["yum"],
+ "kernel_file":"linux[64.gz]?",
+ "initrd_file":"initrd[64]?",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_autoyast.xml",
+ "kernel_options":"install=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "sles11sp3": {
+ "signatures":["suse"],
+ "version_file":"sles-release-11.3-(.*).rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","i586","x86_64","ppc64"],
+ "supported_repo_breeds":["yum"],
+ "kernel_file":"linux[64.gz]?",
+ "initrd_file":"initrd[64]?",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_autoyast.xml",
+ "kernel_options":"install=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "sles11sp4": {
+ "signatures":["suse"],
+ "version_file":"sles-release-11.4-(.*).rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","i586","x86_64","ppc64"],
+ "supported_repo_breeds":["yum"],
+ "kernel_file":"linux[64.gz]?",
+ "initrd_file":"initrd[64]?",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_autoyast.xml",
+ "kernel_options":"install=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "sles12": {
+ "signatures":["suse"],
+ "version_file":"(sles|SLES-for-VMware)-release-12-(.*).rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","i586","x86_64","ppc64"],
+ "supported_repo_breeds":["yum"],
+ "kernel_file":"linux[64.gz]?",
+ "initrd_file":"initrd[64]?",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_autoyast.xml",
+ "kernel_options":"install=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ }
+ },
+ "vmware": {
+ "esx4": {
+ "signatures":["VMware/RPMS"],
+ "version_file":"vmware-esx-vmware-release-(.*)\\.rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.x86_64\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["x86_64"],
+ "supported_repo_breeds":["yum"],
+ "kernel_file":"vmlinuz",
+ "initrd_file":"initrd\\.img",
+ "isolinux_ok":true,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_esx4.ks",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "esxi4": {
+ "signatures":["imagedd.bz2"],
+ "version_file":"vmkernel\\.gz",
+ "version_file_regex":"^.*ESXi 4.1\\.(\\d)+ \\[Releasebuild-([\\d]+)\\].*$",
+ "kernel_arch":"vmkernel\\.gz",
+ "kernel_arch_regex":"^.*SystemVsiCpuArch.*(X86_64).*$",
+ "supported_arches":["x86_64"],
+ "supported_repo_breeds":[],
+ "kernel_file":"mboot\\.c32",
+ "initrd_file":"vmkboot\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_esxi4.ks",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":["vmkernel.gz","sys.vgz","cim.vgz","ienviron.vgz","install.vgz"]
+ },
+ "esxi5": {
+ "signatures":["tboot.b00"],
+ "version_file":"s\\.v00",
+ "version_file_regex":"^.*ESXi 5\\.0\\.(.*)build-([\\d]+).*$",
+ "kernel_arch":"tools\\.t00",
+ "kernel_arch_regex":"^.*(x86_64).*$",
+ "supported_arches":["x86_64"],
+ "supported_repo_breeds":[],
+ "kernel_file":"mboot\\.c32",
+ "initrd_file":"imgpayld\\.tgz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_esxi5.ks",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "template_files":"/etc/cobbler/pxe/bootcfg_esxi5.template=$local_img_path/cobbler-boot.cfg",
+ "boot_files":["*.*"]
+ },
+ "esxi51": {
+ "signatures":["tboot.b00"],
+ "version_file":"s\\.v00",
+ "version_file_regex":"^.*ESXi 5\\.1\\.(.*)build-([\\d]+).*$",
+ "kernel_arch":"tools\\.t00",
+ "kernel_arch_regex":"^.*(x86_64).*$",
+ "supported_arches":["x86_64"],
+ "supported_repo_breeds":[],
+ "kernel_file":"mboot\\.c32",
+ "initrd_file":"imgpayld\\.tgz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_esxi5.ks",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "template_files":"/etc/cobbler/pxe/bootcfg_esxi51.template=$local_img_path/cobbler-boot.cfg",
+ "boot_files":["*.*"]
+ },
+ "esxi55": {
+ "signatures":["tboot.b00"],
+ "version_file":"s\\.v00",
+ "version_file_regex":"^.*ESXi 5\\.5\\.(.*)build-([\\d]+).*$",
+ "kernel_arch":"tools\\.t00",
+ "kernel_arch_regex":"^.*(x86_64).*$",
+ "supported_arches":["x86_64"],
+ "supported_repo_breeds":[],
+ "kernel_file":"mboot\\.c32",
+ "initrd_file":"imgpayld\\.tgz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_esxi5.ks",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "template_files":"/etc/cobbler/pxe/bootcfg_esxi55.template=$local_img_path/cobbler-boot.cfg",
+ "boot_files":["*.*"]
+ },
+ "esxi60": {
+ "signatures":["tboot.b00"],
+ "version_file":"s\\.v00",
+ "version_file_regex":"^.*ESXi 6\\.0\\.(.*)build-([\\d]+).*$",
+ "kernel_arch":"tools\\.t00",
+ "kernel_arch_regex":"^.*(x86_64).*$",
+ "supported_arches":["x86_64"],
+ "supported_repo_breeds":[],
+ "kernel_file":"mboot\\.c32",
+ "initrd_file":"imgpayld\\.tgz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_esxi5.ks",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "template_files":"/etc/cobbler/pxe/bootcfg_esxi60.template=$local_img_path/cobbler-boot.cfg",
+ "boot_files":["*.*"]
+ }
+ },
+ "freebsd": {
+ "8.2": {
+ "signatures":["boot"],
+ "version_file":"8\\.2-RELEASE",
+ "version_file_regex":null,
+ "kernel_arch":"device\\.hints",
+ "kernel_arch_regex":"^.*FreeBSD: src/sys/(.*)/conf/GENERIC\\.hints.*$",
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":[],
+ "kernel_file":"pxeboot(.*)",
+ "initrd_file":"mfsroot\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "8.3": {
+ "signatures":["boot"],
+ "version_file":"8\\.3-RELEASE",
+ "version_file_regex":null,
+ "kernel_arch":"device\\.hints",
+ "kernel_arch_regex":"^.*FreeBSD: src/sys/(.*)/conf/GENERIC\\.hints.*$",
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":[],
+ "kernel_file":"pxeboot(.*)",
+ "initrd_file":"mfsroot\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "8.4": {
+ "signatures":["boot"],
+ "version_file":"8\\.4-RELEASE",
+ "version_file_regex":null,
+ "kernel_arch":"device\\.hints",
+ "kernel_arch_regex":"^.*FreeBSD: src/sys/(.*)/conf/GENERIC\\.hints.*$",
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":[],
+ "kernel_file":"pxeboot(.*)",
+ "initrd_file":"mfsroot\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "9.0": {
+ "signatures":["boot"],
+ "version_file":"device\\.hints",
+ "version_file_regex":"^.*FreeBSD: release/9.0(.*)/sys/(.*)/conf/GENERIC.hints.*$",
+ "kernel_arch":"device\\.hints",
+ "kernel_arch_regex":"^.*FreeBSD: release/9.0(.*)/sys/(.*)/conf/GENERIC.hints.*$",
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":[],
+ "kernel_file":"pxeboot(.*)",
+ "initrd_file":"mbr",
+ "isolinux_ok":false,
+ "default_kickstart":"",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "10.0": {
+ "signatures":["release"],
+ "version_file":"10\\.0\\-RELEASE",
+ "version_file_regex":null,
+ "kernel_arch":"device\\.hints",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":[],
+ "kernel_file":"base.txz",
+ "initrd_file":"base.txz",
+ "isolinux_ok":false,
+ "default_kickstart":"",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ }
+ },
+ "xen": {
+ "xcp16": {
+ "signatures":["packages.main"],
+ "version_file":"^XS-REPOSITORY$",
+ "version_file_regex":"^.*product=\"XCP\" version=\"1\\.6\\.([0-9]+)\".*$",
+ "kernel_arch":"xen\\.gz",
+ "kernel_arch_regex":"^.*(x86_64).*$",
+ "supported_arches":["x86_64"],
+ "supported_repo_breeds":[],
+ "kernel_file":"vmlinuz",
+ "initrd_file":"xen\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"",
+ "kernel_options":"dom0_max_vcpus=1-2 dom0_mem=max:752M,752M",
+ "kernel_options_post":"",
+ "boot_files":["install.img"]
+ },
+ "xenserver620": {
+ "signatures":["packages.xenserver"],
+ "version_file":"^XS-REPOSITORY$",
+ "version_file_regex":"^.*product=\"XenServer\" version=\"6\\.2\\.([0-9]+)\".*$",
+ "kernel_arch":"xen\\.gz",
+ "kernel_arch_regex":"^.*(x86_64).*$",
+ "supported_arches":["x86_64"],
+ "supported_repo_breeds":[],
+ "kernel_file":"mboot\\.c32",
+ "initrd_file":"xen\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":["install.img"]
+ },
+ "xenserver650": {
+ "signatures":["packages.xenserver"],
+ "version_file":"^XS-REPOSITORY$",
+ "version_file_regex":"^.*product=\"XenServer\" version=\"6\\.5\\.([0-9]+)\".*$",
+ "kernel_arch":"xen\\.gz",
+ "kernel_arch_regex":"^.*(x86_64).*$",
+ "supported_arches":["x86_64"],
+ "supported_repo_breeds":[],
+ "kernel_file":"mboot\\.c32",
+ "initrd_file":"xen\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":["install.img"]
+ }
+ },
+ "unix": {
+ },
+ "windows": {
+ },
+ "nexenta": {
+ "4": {
+ "signatures":["boot"],
+ "version_file": "platform",
+ "version_file_regex": null,
+ "supported_arches":["x86_64"],
+ "supported_repo_breeds":["apt"],
+ "kernel_file":"platform/i86pc/kernel/amd64/unix",
+ "initrd_file":"platform/i86pc/amd64/miniroot",
+ "kernel_arch": "",
+ "kernel_arch_regex": null,
+ "isolinux_ok":false,
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[],
+ "default_kickstart":""
+ }
+ },
+ "generic": {
+ "generic26": {
+ "signatures":[],
+ "version_file":"",
+ "version_file_regex":"",
+ "kernel_arch":"",
+ "kernel_arch_regex":"",
+ "supported_arches":["i386","x86_64"],
+ "supported_repo_breeds":[],
+ "kernel_file":"",
+ "initrd_file":"",
+ "isolinux_ok":false,
+ "default_kickstart":"",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "virtio26": {
+ "signatures":[],
+ "version_file":"",
+ "version_file_regex":"",
+ "kernel_arch":"",
+ "kernel_arch_regex":"",
+ "supported_arches":["i386","x86_64"],
+ "supported_repo_breeds":[],
+ "kernel_file":"",
+ "initrd_file":"",
+ "isolinux_ok":false,
+ "default_kickstart":"",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ }
+ }
+ }
+}
diff --git a/util/docker-compose/roles/compass/templates/docker-compose.yml.j2 b/util/docker-compose/roles/compass/templates/docker-compose.yml.j2
new file mode 100755
index 00000000..7fc8ea3a
--- /dev/null
+++ b/util/docker-compose/roles/compass/templates/docker-compose.yml.j2
@@ -0,0 +1,103 @@
+version: '2'
+
+services:
+{% if compass_db is defined %}
+ compass-db:
+ container_name: compass-db
+ hostname: compass-db
+ privileged: true
+ expose:
+ - 3306
+ tty: true
+ image: {{ compass_db }}
+ stdin_open: true
+ command:
+ - /sbin/entrypoint.sh
+{% endif %}
+
+{% if compass_mq is defined %}
+ compass-mq:
+ container_name: compass-mq
+ hostname: compass-mq
+ privileged: true
+ expose:
+ - 5672
+ tty: true
+ image: {{ compass_mq }}
+ stdin_open: true
+{% endif %}
+
+{% if compass_tasks is defined %}
+ compass-tasks:
+ container_name: compass-tasks
+ hostname: compass-tasks
+ privileged: true
+ image: {{ compass_tasks }}
+ links:
+ - compass-mq
+ - compass-cobbler
+ depends_on:
+ - compass-mq
+ - compass-cobbler
+ stdin_open: true
+ volumes:
+ - {{ docker_compose_dir }}/compass_conf:/etc/compass
+ - {{ docker_compose_dir }}/ansible:/var/ansible
+ command:
+ - /usr/local/bin/start.sh
+{% endif %}
+
+{% if compass_deck is defined %}
+ compass-deck:
+ container_name: compass-deck
+ hostname: compass-deck
+ privileged: true
+ image: {{ compass_deck }}
+ ports:
+ - {{ host_ip }}:{{ deck_port }}:80/tcp
+ - {{ external_ip.stdout }}:{{ deck_port }}:80/tcp
+ tty: true
+ links:
+ - compass-db
+ - compass-mq
+ depends_on:
+ - compass-db
+ - compass-mq
+ stdin_open: true
+ volumes:
+ - {{ docker_compose_dir }}/compass_conf:/etc/compass
+ command:
+ - /sbin/init
+ - /usr/local/bin/start.sh
+{% endif %}
+
+{% if compass_cobbler is defined %}
+ compass-cobbler:
+ container_name: compass-cobbler
+ hostname: compass-cobbler
+ network_mode: host
+ privileged: true
+ image: {{ compass_cobbler }}
+ ports:
+ - {{ host_ip }}:80:80/tcp
+ - {{ host_ip }}:69:69
+ - {{ host_ip }}:443:443/tcp
+ - {{ host_ip }}:25151:25151/tcp
+ - {{ host_ip }}:67:67/tcp
+ volumes:
+ - {{ docker_compose_dir }}/cobbler:/root/cobbler
+ command:
+ - /sbin/init
+{% endif %}
+
+{% if compass_repo is defined %}
+ compass-repo:
+ container_name: compass-repo
+ hostname: compass-repo
+ privileged: true
+ image: {{ compass_repo }}
+ ports:
+ - {{ host_ip }}:{{ repo_port }}:80/tcp
+ tty: true
+ stdin_open: true
+{% endif %}
diff --git a/util/docker-compose/roles/compass/templates/machine_list.conf.j2 b/util/docker-compose/roles/compass/templates/machine_list.conf.j2
new file mode 100755
index 00000000..d85f74d0
--- /dev/null
+++ b/util/docker-compose/roles/compass/templates/machine_list.conf.j2
@@ -0,0 +1,14 @@
+MACHINE_LIST = [
+ {
+ '127.0.0.1': [
+{% set port_num = 200 %}
+{% for mac in mac_addresses %}
+ {
+ 'port': '{{ port_num }}',
+ 'mac': '{{ mac }}',
+ 'vlan': 0
+ },
+{% endfor %}
+ ]
+ }
+]
diff --git a/util/docker-compose/roles/compass/templates/named.template.j2 b/util/docker-compose/roles/compass/templates/named.template.j2
new file mode 100755
index 00000000..0cf76225
--- /dev/null
+++ b/util/docker-compose/roles/compass/templates/named.template.j2
@@ -0,0 +1,31 @@
+options {
+ listen-on port 53 { {{ host_ip }}; };
+ directory "/var/named";
+ dump-file "/var/named/data/cache_dump.db";
+ statistics-file "/var/named/data/named_stats.txt";
+ memstatistics-file "/var/named/data/named_mem_stats.txt";
+ allow-query { 127.0.0.0/8; {{ install_subnet }}/{{ install_prefix }}; };
+ recursion yes;
+};
+
+logging {
+ channel default_debug {
+ file "data/named.run";
+ severity dynamic;
+ };
+};
+
+#for $zone in $forward_zones
+zone "${zone}." {
+ type master;
+ file "$zone";
+};
+
+#end for
+#for $zone, $arpa in $reverse_zones
+zone "${arpa}." {
+ type master;
+ file "$zone";
+};
+
+#end for
diff --git a/util/docker-compose/roles/compass/templates/prepare_ansible.sh.j2 b/util/docker-compose/roles/compass/templates/prepare_ansible.sh.j2
new file mode 100755
index 00000000..e0de1253
--- /dev/null
+++ b/util/docker-compose/roles/compass/templates/prepare_ansible.sh.j2
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+for i in `ls {{ compass_adapter_dir }}/ansible | grep "openstack_"`; do
+ mkdir -p {{ docker_compose_dir }}/ansible/$i
+ cp -rf {{ compass_adapter_dir }}/ansible/openstack/* {{ docker_compose_dir }}/ansible/$i
+ cp -rf {{ compass_adapter_dir }}/ansible/$i {{ docker_compose_dir }}/ansible/
+done
+cp -rf {{ compass_adapter_dir }}/ansible/roles {{ docker_compose_dir }}/ansible/
diff --git a/util/docker-compose/roles/compass/templates/settings.j2 b/util/docker-compose/roles/compass/templates/settings.j2
new file mode 100755
index 00000000..9e4a7390
--- /dev/null
+++ b/util/docker-compose/roles/compass/templates/settings.j2
@@ -0,0 +1,450 @@
+---
+# cobbler settings file
+# restart cobblerd and run "cobbler sync" after making changes
+# This config file is in YAML 1.0 format
+# see http://yaml.org
+# ==========================================================
+# if 1, cobbler will allow insertions of system records that duplicate
+# the --dns-name information of other system records. In general,
+# this is undesirable and should be left 0.
+allow_duplicate_hostnames: 0
+
+# if 1, cobbler will allow insertions of system records that duplicate
+# the ip address information of other system records. In general,
+# this is undesirable and should be left 0.
+allow_duplicate_ips: 0
+
+# if 1, cobbler will allow insertions of system records that duplicate
+# the mac address information of other system records. In general,
+# this is undesirable.
+allow_duplicate_macs: 0
+
+# if 1, cobbler will allow settings to be changed dynamically without
+# a restart of the cobblerd daemon. You can only change this variable
+# by manually editing the settings file, and you MUST restart cobblerd
+# after changing it.
+allow_dynamic_settings: 0
+
+# by default, installs are *not* set to send installation logs to the cobbler
+# # # server. With 'anamon_enabled', kickstart templates may use the pre_anamon
+# # # snippet to allow remote live monitoring of their installations from the
+# # # cobbler server. Installation logs will be stored under
+# # # /var/log/cobbler/anamon/. NOTE: This does allow an xmlrpc call to send logs
+# # # to this directory, without authentication, so enable only if you are
+# # # ok with this limitation.
+anamon_enabled: 1
+
+# If using authn_pam in the modules.conf, this can be configured
+# to change the PAM service authentication will be tested against.
+# The default value is "login".
+authn_pam_service: "login"
+
+# Email out a report when cobbler finishes installing a system.
+# enabled: set to 1 to turn this feature on
+# sender: optional
+# email: which addresses to email
+# smtp_server: used to specify another server for an MTA
+# subject: use the default subject unless overridden
+build_reporting_enabled: 0
+build_reporting_sender: ""
+build_reporting_email: [ 'root@localhost' ]
+build_reporting_smtp_server: "localhost"
+build_reporting_subject: ""
+
+# Cheetah-language kickstart templates can import Python modules.
+# while this is a useful feature, it is not safe to allow them to
+# import anything they want. This whitelists which modules can be
+# imported through Cheetah. Users can expand this as needed but
+# should never allow modules such as subprocess or those that
+# allow access to the filesystem as Cheetah templates are evaluated
+# by cobblerd as code.
+cheetah_import_whitelist:
+ - "random"
+ - "re"
+ - "time"
+
+# Default createrepo_flags to use for new repositories. If you have
+# createrepo >= 0.4.10, consider "-c cache --update -C", which can
+# dramatically improve your "cobbler reposync" time. "-s sha"
+# enables working with Fedora repos from F11/F12 from EL-4 or
+# EL-5 without python-hashlib installed (which is not available
+# on EL-4)
+createrepo_flags: "-c cache -s sha"
+
+# if no kickstart is specified to profile add, use this template
+default_kickstart: /var/lib/cobbler/kickstarts/default.ks
+
+# configure all installed systems to use these nameservers by default
+# unless defined differently in the profile. For DHCP configurations
+# you probably do /not/ want to supply this.
+default_name_servers: ['10.1.10.15']
+
+# if using the authz_ownership module (see the Wiki), objects
+# created without specifying an owner are assigned to this
+# owner and/or group. Can be a comma seperated list.
+default_ownership:
+ - "admin"
+
+# cobbler has various sample kickstart templates stored
+# in /var/lib/cobbler/kickstarts/. This controls
+# what install (root) password is set up for those
+# systems that reference this variable. The factory
+# default is "cobbler" and cobbler check will warn if
+# this is not changed.
+# The simplest way to change the password is to run
+# openssl passwd -1
+# and put the output between the "" below.
+default_password_crypted: "$1$huawei$9OkoVJwO4W8vavlXd1bUS/"
+
+# the default template type to use in the absence of any
+# other detected template. If you do not specify the template
+# with '#template=<template_type>' on the first line of your
+# templates/snippets, cobbler will assume try to use the
+# following template engine to parse the templates.
+#
+# Current valid values are: cheetah, jinja2
+default_template_type: "cheetah"
+
+# for libvirt based installs in koan, if no virt bridge
+# is specified, which bridge do we try? For EL 4/5 hosts
+# this should be xenbr0, for all versions of Fedora, try
+# "virbr0". This can be overriden on a per-profile
+# basis or at the koan command line though this saves
+# typing to just set it here to the most common option.
+default_virt_bridge: xenbr0
+
+# use this as the default disk size for virt guests (GB)
+default_virt_file_size: 5
+
+# use this as the default memory size for virt guests (MB)
+default_virt_ram: 512
+
+# if koan is invoked without --virt-type and no virt-type
+# is set on the profile/system, what virtualization type
+# should be assumed? Values: xenpv, xenfv, qemu, vmware
+# (NOTE: this does not change what virt_type is chosen by import)
+default_virt_type: xenpv
+
+# enable gPXE booting? Enabling this option will cause cobbler
+# to copy the undionly.kpxe file to the tftp root directory,
+# and if a profile/system is configured to boot via gpxe it will
+# chain load off pxelinux.0.
+# Default: 0
+enable_gpxe: 0
+
+# controls whether cobbler will add each new profile entry to the default
+# PXE boot menu. This can be over-ridden on a per-profile
+# basis when adding/editing profiles with --enable-menu=0/1. Users
+# should ordinarily leave this setting enabled unless they are concerned
+# with accidental reinstalls from users who select an entry at the PXE
+# boot menu. Adding a password to the boot menus templates
+# may also be a good solution to prevent unwanted reinstallations
+enable_menu: 0
+
+# enable Func-integration? This makes sure each installed machine is set up
+# to use func out of the box, which is a powerful way to script and control
+# remote machines.
+# Func lives at http://fedorahosted.org/func
+# read more at https://github.com/cobbler/cobbler/wiki/Func-integration
+# you will need to mirror Fedora/EPEL packages for this feature, so see
+# https://github.com/cobbler/cobbler/wiki/Manage-yum-repos if you want cobbler
+# to help you with this
+func_auto_setup: 0
+func_master: overlord.example.org
+
+# change this port if Apache is not running plaintext on port
+# 80. Most people can leave this alone.
+http_port: 80
+
+# kernel options that should be present in every cobbler installation.
+# kernel options can also be applied at the distro/profile/system
+# level.
+kernel_options:
+ ksdevice: bootif
+ lang: ' '
+ text: ~
+
+# s390 systems require additional kernel options in addition to the
+# above defaults
+kernel_options_s390x:
+ RUNKS: 1
+ ramdisk_size: 40000
+ root: /dev/ram0
+ ro: ~
+ ip: off
+ vnc: ~
+
+# configuration options if using the authn_ldap module. See the
+# the Wiki for details. This can be ignored if you are not using
+# LDAP for WebUI/XMLRPC authentication.
+ldap_server: "ldap.example.com"
+ldap_base_dn: "DC=example,DC=com"
+ldap_port: 389
+ldap_tls: 1
+ldap_anonymous_bind: 1
+ldap_search_bind_dn: ''
+ldap_search_passwd: ''
+ldap_search_prefix: 'uid='
+ldap_tls_cacertfile: ''
+ldap_tls_keyfile: ''
+ldap_tls_certfile: ''
+
+# cobbler has a feature that allows for integration with config management
+# systems such as Puppet. The following parameters work in conjunction with
+# --mgmt-classes and are described in furhter detail at:
+# https://github.com/cobbler/cobbler/wiki/Using-cobbler-with-a-configuration-management-system
+mgmt_classes: []
+mgmt_parameters:
+ from_cobbler: 1
+
+# if enabled, this setting ensures that puppet is installed during
+# machine provision, a client certificate is generated and a
+# certificate signing request is made with the puppet master server
+puppet_auto_setup: 0
+
+# when puppet starts on a system after installation it needs to have
+# its certificate signed by the puppet master server. Enabling the
+# following feature will ensure that the puppet server signs the
+# certificate after installation if the puppet master server is
+# running on the same machine as cobbler. This requires
+# puppet_auto_setup above to be enabled
+sign_puppet_certs_automatically: 0
+
+# location of the puppet executable, used for revoking certificates
+puppetca_path: "/usr/bin/puppet"
+
+# when a puppet managed machine is reinstalled it is necessary to
+# remove the puppet certificate from the puppet master server before a
+# new certificate is signed (see above). Enabling the following
+# feature will ensure that the certificate for the machine to be
+# installed is removed from the puppet master server if the puppet
+# master server is running on the same machine as cobbler. This
+# requires puppet_auto_setup above to be enabled
+remove_old_puppet_certs_automatically: 0
+
+# choose a --server argument when running puppetd/puppet agent during kickstart
+#puppet_server: 'puppet'
+
+# let cobbler know that you're using a newer version of puppet
+# choose version 3 to use: 'puppet agent'; version 2 uses status quo: 'puppetd'
+#puppet_version: 2
+
+# choose whether to enable puppet parameterized classes or not.
+# puppet versions prior to 2.6.5 do not support parameters
+#puppet_parameterized_classes: 1
+
+# set to 1 to enable Cobbler's DHCP management features.
+# the choice of DHCP management engine is in /etc/cobbler/modules.conf
+manage_dhcp: 1
+
+# set to 1 to enable Cobbler's DNS management features.
+# the choice of DNS mangement engine is in /etc/cobbler/modules.conf
+manage_dns: 1
+
+# set to path of bind chroot to create bind-chroot compatible bind
+# configuration files. This should be automatically detected.
+bind_chroot_path: ""
+
+# set to the ip address of the master bind DNS server for creating secondary
+# bind configuration files
+bind_master: 127.0.0.1
+
+# set to 1 to enable Cobbler's TFTP management features.
+# the choice of TFTP mangement engine is in /etc/cobbler/modules.conf
+manage_tftpd: 1
+
+# set to 1 to enable Cobbler's RSYNC management features.
+manage_rsync: 0
+
+# if using BIND (named) for DNS management in /etc/cobbler/modules.conf
+# and manage_dns is enabled (above), this lists which zones are managed
+# See the Wiki (https://github.com/cobbler/cobbler/wiki/Dns-management) for more info
+manage_forward_zones: ['ods.com']
+manage_reverse_zones: []
+
+# if using cobbler with manage_dhcp, put the IP address
+# of the cobbler server here so that PXE booting guests can find it
+# if you do not set this correctly, this will be manifested in TFTP open timeouts.
+next_server: {{ host_ip }}
+
+# settings for power management features. optional.
+# see https://github.com/cobbler/cobbler/wiki/Power-management to learn more
+# choices (refer to codes.py):
+# apc_snmp bladecenter bullpap drac ether_wake ilo integrity
+# ipmilan ipmitool lpar rsa virsh wti
+power_management_default_type: 'ipmitool'
+
+# the commands used by the power management module are sourced
+# from what directory?
+power_template_dir: "/etc/cobbler/power"
+
+# if this setting is set to 1, cobbler systems that pxe boot
+# will request at the end of their installation to toggle the
+# --netboot-enabled record in the cobbler system record. This eliminates
+# the potential for a PXE boot loop if the system is set to PXE
+# first in it's BIOS order. Enable this if PXE is first in your BIOS
+# boot order, otherwise leave this disabled. See the manpage
+# for --netboot-enabled.
+pxe_just_once: 1
+
+# the templates used for PXE config generation are sourced
+# from what directory?
+pxe_template_dir: "/etc/cobbler/pxe"
+
+# Path to where system consoles are
+consoles: "/var/consoles"
+
+# Are you using a Red Hat management platform in addition to Cobbler?
+# Cobbler can help you register to it. Choose one of the following:
+# "off" : I'm not using Red Hat Network, Satellite, or Spacewalk
+# "hosted" : I'm using Red Hat Network
+# "site" : I'm using Red Hat Satellite Server or Spacewalk
+# You will also want to read: https://github.com/cobbler/cobbler/wiki/Tips-for-RHN
+redhat_management_type: "off"
+
+# if redhat_management_type is enabled, choose your server
+# "management.example.org" : For Satellite or Spacewalk
+# "xmlrpc.rhn.redhat.com" : For Red Hat Network
+# This setting is also used by the code that supports using Spacewalk/Satellite users/passwords
+# within Cobbler Web and Cobbler XMLRPC. Using RHN Hosted for this is not supported.
+# This feature can be used even if redhat_management_type is off, you just have
+# to have authn_spacewalk selected in modules.conf
+redhat_management_server: "xmlrpc.rhn.redhat.com"
+
+# specify the default Red Hat authorization key to use to register
+# system. If left blank, no registration will be attempted. Similarly
+# you can set the --redhat-management-key to blank on any system to
+# keep it from trying to register.
+redhat_management_key: ""
+
+# if using authn_spacewalk in modules.conf to let cobbler authenticate
+# against Satellite/Spacewalk's auth system, by default it will not allow per user
+# access into Cobbler Web and Cobbler XMLRPC.
+# in order to permit this, the following setting must be enabled HOWEVER
+# doing so will permit all Spacewalk/Satellite users of certain types to edit all
+# of cobbler's configuration.
+# these roles are: config_admin and org_admin
+# users should turn this on only if they want this behavior and
+# do not have a cross-multi-org seperation concern. If you have
+# a single org in your satellite, it's probably safe to turn this
+# on and then you can use CobblerWeb alongside a Satellite install.
+redhat_management_permissive: 0
+
+# if set to 1, allows /usr/bin/cobbler-register (part of the koan package)
+# to be used to remotely add new cobbler system records to cobbler.
+# this effectively allows for registration of new hardware from system
+# records.
+register_new_installs: 0
+
+# Flags to use for yum's reposync. If your version of yum reposync
+# does not support -l, you may need to remove that option.
+reposync_flags: "-l -n -d"
+
+# These options will be used for an rsync initiated by cobbler replicate
+replicate_rsync_options: "-avzH"
+
+# when DHCP and DNS management are enabled, cobbler sync can automatically
+# restart those services to apply changes. The exception for this is
+# if using ISC for DHCP, then omapi eliminates the need for a restart.
+# omapi, however, is experimental and not recommended for most configurations.
+# If DHCP and DNS are going to be managed, but hosted on a box that
+# is not on this server, disable restarts here and write some other
+# script to ensure that the config files get copied/rsynced to the destination
+# box. This can be done by modifying the restart services trigger.
+# Note that if manage_dhcp and manage_dns are disabled, the respective
+# parameter will have no effect. Most users should not need to change
+# this.
+restart_dns: 1
+restart_dhcp: 1
+
+# install triggers are scripts in /var/lib/cobbler/triggers/install
+# that are triggered in kickstart pre and post sections. Any
+# executable script in those directories is run. They can be used
+# to send email or perform other actions. They are currently
+# run as root so if you do not need this functionality you can
+# disable it, though this will also disable "cobbler status" which
+# uses a logging trigger to audit install progress.
+run_install_triggers: 1
+
+# enables a trigger which version controls all changes to /var/lib/cobbler
+# when add, edit, or sync events are performed. This can be used
+# to revert to previous database versions, generate RSS feeds, or for
+# other auditing or backup purposes. "git" and "hg" are currently suported,
+# but git is the recommend SCM for use with this feature.
+scm_track_enabled: 0
+scm_track_mode: "git"
+
+# this is the address of the cobbler server -- as it is used
+# by systems during the install process, it must be the address
+# or hostname of the system as those systems can see the server.
+# if you have a server that appears differently to different subnets
+# (dual homed, etc), you need to read the --server-override section
+# of the manpage for how that works.
+server: {{ host_ip }}
+
+# If set to 1, all commands will be forced to use the localhost address
+# instead of using the above value which can force commands like
+# cobbler sync to open a connection to a remote address if one is in the
+# configuration and would traceback.
+client_use_localhost: 0
+
+# If set to 1, all commands to the API (not directly to the XMLRPC
+# server) will go over HTTPS instead of plaintext. Be sure to change
+# the http_port setting to the correct value for the web server
+client_use_https: 0
+
+# this is a directory of files that cobbler uses to make
+# templating easier. See the Wiki for more information. Changing
+# this directory should not be required.
+snippetsdir: /var/lib/cobbler/snippets
+
+# Normally if a kickstart is specified at a remote location, this
+# URL will be passed directly to the kickstarting system, thus bypassing
+# the usual snippet templating Cobbler does for local kickstart files. If
+# this option is enabled, Cobbler will fetch the file contents internally
+# and serve a templated version of the file to the client.
+template_remote_kickstarts: 0
+
+# should new profiles for virtual machines default to auto booting with the physical host when the physical host reboots?
+# this can be overridden on each profile or system object.
+virt_auto_boot: 1
+
+# cobbler's web directory. Don't change this setting -- see the
+# Wiki on "relocating your cobbler install" if your /var partition
+# is not large enough.
+webdir: /var/www/cobbler
+
+# cobbler's public XMLRPC listens on this port. Change this only
+# if absolutely needed, as you'll have to start supplying a new
+# port option to koan if it is not the default.
+xmlrpc_port: 25151
+
+# "cobbler repo add" commands set cobbler up with repository
+# information that can be used during kickstart and is automatically
+# set up in the cobbler kickstart templates. By default, these
+# are only available at install time. To make these repositories
+# usable on installed systems (since cobbler makes a very convient)
+# mirror, set this to 1. Most users can safely set this to 1. Users
+# who have a dual homed cobbler server, or are installing laptops that
+# will not always have access to the cobbler server may wish to leave
+# this as 0. In that case, the cobbler mirrored yum repos are still
+# accessable at http://cobbler.example.org/cblr/repo_mirror and yum
+# configuration can still be done manually. This is just a shortcut.
+yum_post_install_mirror: 1
+
+# the default yum priority for all the distros. This is only used
+# if yum-priorities plugin is used. 1=maximum. Tweak with caution.
+yum_distro_priority: 1
+
+# Flags to use for yumdownloader. Not all versions may support
+# --resolve.
+yumdownloader_flags: "--resolve"
+
+# sort and indent JSON output to make it more human-readable
+serializer_pretty_json: 0
+
+# replication rsync options for distros, kickstarts, snippets set to override default value of "-avzH"
+replicate_rsync_options: "-avzH"
+
+# replication rsync options for repos set to override default value of "-avzH"
+replicate_repo_rsync_options: "-avzH"
diff --git a/util/docker-compose/roles/compass/templates/zone.template.j2 b/util/docker-compose/roles/compass/templates/zone.template.j2
new file mode 100755
index 00000000..ea67b739
--- /dev/null
+++ b/util/docker-compose/roles/compass/templates/zone.template.j2
@@ -0,0 +1,17 @@
+\$TTL 300
+@ IN SOA $cobbler_server. nobody.example.com. (
+ $serial ; Serial
+ 600 ; Refresh
+ 1800 ; Retry
+ 604800 ; Expire
+ 300 ; TTL
+ )
+
+ IN NS $cobbler_server.
+
+
+$cname_record
+
+$host_record
+compass-250-41 IN A {{ host_ip }}
+metrics IN A {{ host_ip }}
diff --git a/util/docker-compose/roles/discovery/tasks/main.yml b/util/docker-compose/roles/discovery/tasks/main.yml
new file mode 100755
index 00000000..ac4b24ee
--- /dev/null
+++ b/util/docker-compose/roles/discovery/tasks/main.yml
@@ -0,0 +1,71 @@
+---
+- name: config avahi
+ template:
+ src: compass_discovery.service.j2
+ dest: "{{ docker_compose_dir }}/extra/compass_discovery.service"
+
+- name: restart avahi service
+ shell: |
+ docker exec compass-cobbler bash -c \
+ "cp -rf /root/extra/compass_discovery.service /etc/avahi/services/; \
+ service avahi-daemon restart"
+
+- name: add tinycore signature
+ template:
+ src: distro_signatures.json.j2
+ dest: "{{ docker_compose_dir }}/extra/distro_signatures.json"
+
+- name: restart cobblerd service
+ shell: |
+ docker exec compass-cobbler bash -c \
+ "cp -rf /root/extra/distro_signatures.json /var/lib/cobbler/; \
+ service cobblerd restart"
+
+- name: config dhcp
+ shell: |
+ docker exec compass-cobbler bash -c \
+ "sed -i 's/deny unknown-clients/allow unknown-clients/' /etc/cobbler/dhcp.template"
+
+- name: download tinycore
+ get_url:
+ url: "{{ tinycore_url }}"
+ dest: "{{ docker_compose_dir }}/extra/"
+
+- name: mount tinycore
+ shell: |
+ docker exec compass-cobbler bash -c \
+ "mkdir -p /home/tinycore; \
+ mount -o loop /root/extra/core.iso /home/tinycore;"
+ ignore_errors: "yes"
+ run_once: "True"
+
+- name: import tinycore distros
+ shell: |
+ docker exec compass-cobbler bash -c \
+ "service cobblerd restart; \
+ sleep 3; \
+ cobbler import --name {{ tinycore.DistroName }} \
+ --arch {{ tinycore.DistroArch }} \
+ --path /home/tinycore;"
+ register: result
+ until: result.rc == 0
+ retries: 10
+ delay: 3
+
+- name: edit tinycore profile
+ shell: |
+ docker exec compass-cobbler bash -c \
+ "cobbler profile edit --name {{ tinycore.DistroName }}-{{ tinycore.DistroArch }} \
+ --enable-menu True \
+ --kopts 'owner_id={{ cluster_id }}'"
+
+- name: add default system
+ shell: |
+ docker exec compass-cobbler bash -c \
+ "cobbler system add --name default \
+ --profile {{ tinycore.DistroName }}-{{ tinycore.DistroArch }}"
+
+- name: cobbler sync
+ shell: |
+ docker exec compass-cobbler bash -c \
+ "cobbler sync"
diff --git a/util/docker-compose/roles/discovery/templates/compass_discovery.service.j2 b/util/docker-compose/roles/discovery/templates/compass_discovery.service.j2
new file mode 100755
index 00000000..ae6418b0
--- /dev/null
+++ b/util/docker-compose/roles/discovery/templates/compass_discovery.service.j2
@@ -0,0 +1,7 @@
+<service-group>
+ <name replace-wildcards="yes">Compass Discovery Service on %h</name>
+ <service protocol="ipv4">
+ <type>_compass-core._tcp</type>
+ <port>{{ deck_port }}</port>
+ </service>
+</service-group>
diff --git a/util/docker-compose/roles/discovery/templates/dhcp.template.j2 b/util/docker-compose/roles/discovery/templates/dhcp.template.j2
new file mode 100755
index 00000000..c0559e7f
--- /dev/null
+++ b/util/docker-compose/roles/discovery/templates/dhcp.template.j2
@@ -0,0 +1,123 @@
+# ******************************************************************
+# Cobbler managed dhcpd.conf file
+#
+# generated from cobbler dhcp.conf template ($date)
+# Do NOT make changes to /etc/dhcpd.conf. Instead, make your changes
+# in /etc/cobbler/dhcp.template, as /etc/dhcpd.conf will be
+# overwritten.
+#
+# ******************************************************************
+
+ddns-update-style interim;
+
+allow booting;
+allow bootp;
+allow unknown-clients;
+local-address {{ cobbler_server }};
+log-facility local6;
+
+ignore client-updates;
+set vendorclass = option vendor-class-identifier;
+
+option pxe-system-type code 93 = unsigned integer 16;
+option space pxelinux;
+option pxelinux.magic code 208 = string;
+option pxelinux.configfile code 209 = text;
+option pxelinux.pathprefix code 210 = text;
+option pxelinux.reboottime code 211 = unsigned integer 32;
+
+{% if dockerized %}
+subnet {{ compass0_subnet_ip }} netmask {{ compass0_subnet_mask }} {
+ option routers {{ compass0_router }};
+ option domain-name-servers {{ compass0_router }};
+ option subnet-mask {{ compass0_subnet_mask }};
+ range dynamic-bootp {{ compass0_dhcp_range }};
+ default-lease-time 21600;
+ max-lease-time 43200;
+ next-server $next_server;
+ class "pxeclients" {
+ match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
+ if option pxe-system-type = 00:02 {
+ filename "ia64/elilo.efi";
+ } else if option pxe-system-type = 00:06 {
+ filename "grub/grub-x86.efi";
+ } else if option pxe-system-type = 00:07 {
+ filename "grub/grub-x86_64.efi";
+ } else {
+ filename "pxelinux.0";
+ }
+ }
+
+}
+{% endif %}
+
+subnet {{ mgmt_subnet_ip }} netmask {{ mgmt_subnet_mask }} {
+ option routers {{ mgmt_router }};
+ option domain-name-servers {{ mgmt_router }};
+ option subnet-mask {{ mgmt_subnet_mask }};
+ range dynamic-bootp {{ mgmt_dhcp_range }};
+ default-lease-time 21600;
+ max-lease-time 43200;
+ next-server {{ mgmt_next_ip }};
+ class "pxeclients" {
+ match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
+ if option pxe-system-type = 00:02 {
+ filename "ia64/elilo.efi";
+ } else if option pxe-system-type = 00:06 {
+ filename "grub/grub-x86.efi";
+ } else if option pxe-system-type = 00:07 {
+ filename "grub/grub-x86_64.efi";
+ } else {
+ filename "pxelinux.0";
+ }
+ }
+
+}
+
+#for dhcp_tag in $dhcp_tags.keys():
+ ## group could be subnet if your dhcp tags line up with your subnets
+ ## or really any valid dhcpd.conf construct ... if you only use the
+ ## default dhcp tag in cobbler, the group block can be deleted for a
+ ## flat configuration
+# group for Cobbler DHCP tag: $dhcp_tag
+group {
+ #for mac in $dhcp_tags[$dhcp_tag].keys():
+ #set iface = $dhcp_tags[$dhcp_tag][$mac]
+ host $iface.name {
+ hardware ethernet $mac;
+ site-option-space "pxelinux";
+ option pxelinux.magic f1:00:74:7e;
+ if exists dhcp-parameter-request-list {
+ # Always send the PXELINUX options (specified in hexadecimal)
+ option dhcp-parameter-request-list = concat(option dhcp-parameter-request-list,d0,d1,d2,d3);
+ }
+ option pxelinux.reboottime 30;
+ #if $iface.hostname:
+ option host-name "$iface.hostname";
+ #end if
+ #if $iface.netmask:
+ option subnet-mask $iface.netmask;
+ #end if
+ #if $iface.gateway:
+ option routers $iface.gateway;
+ #end if
+ #if $iface.enable_gpxe:
+ if exists user-class and option user-class = "gPXE" {
+ filename "http://$cobbler_server/cblr/svc/op/gpxe/system/$iface.owner";
+ } else if exists user-class and option user-class = "iPXE" {
+ filename "http://$cobbler_server/cblr/svc/op/gpxe/system/$iface.owner";
+ } else {
+ filename "undionly.kpxe";
+ }
+ #else
+ filename "$iface.filename";
+ #end if
+ ## Cobbler defaults to $next_server, but some users
+ ## may like to use $iface.system.server for proxied setups
+ next-server $next_server;
+ ## next-server $iface.next_server;
+ }
+ #end for
+}
+#end for
+
diff --git a/util/docker-compose/roles/discovery/templates/distro_signatures.json.j2 b/util/docker-compose/roles/discovery/templates/distro_signatures.json.j2
new file mode 100755
index 00000000..21d22fe1
--- /dev/null
+++ b/util/docker-compose/roles/discovery/templates/distro_signatures.json.j2
@@ -0,0 +1,1008 @@
+{"breeds":
+ {
+ "tinycore": {
+ "corepure64": {
+ "signatures":["boot"],
+ "version_file":"",
+ "version_file_regex":"",
+ "kernel_arch":"",
+ "kernel_arch_regex":"",
+ "supported_arches":["x86_64","amd64"],
+ "supported_repo_breeds":[],
+ "kernel_file":"vmlinuz64",
+ "initrd_file":"corepure64.gz",
+ "isolinux_ok":true,
+ "default_kickstart":"",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "generic27": {
+ "signatures":["boot"],
+ "version_file":"",
+ "version_file_regex":"",
+ "kernel_arch":"",
+ "kernel_arch_regex":"",
+ "supported_arches":["i386"],
+ "supported_repo_breeds":[],
+ "kernel_file":"vmlinuz",
+ "initrd_file":"core.gz",
+ "isolinux_ok":true,
+ "default_kickstart":"",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ }
+ },
+ "redhat": {
+ "rhel4": {
+ "signatures":["RedHat/RPMS","CentOS/RPMS"],
+ "version_file":"(redhat|sl|centos)-release-4(AS|WS|ES)[\\.-]+(.*)\\.rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*).rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","x86_64","ppc","ppc64"],
+ "supported_repo_breeds":["rsync", "rhn", "yum"],
+ "kernel_file":"vmlinuz(.*)",
+ "initrd_file":"initrd(.*)\\.img",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample.ks",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "rhel5": {
+ "signatures":["RedHat","Server","CentOS","Client"],
+ "version_file":"(redhat|sl|centos)-release-5([^\\.][\\w]*)?[\\.-]+(.*)\\.rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*).rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","x86_64","ppc","ppc64"],
+ "supported_repo_breeds":["rsync", "rhn", "yum"],
+ "kernel_file":"vmlinuz(.*)",
+ "initrd_file":"initrd(.*)\\.img",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample.ks",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "rhel6": {
+ "signatures":["Packages"],
+ "version_file":"(redhat|sl|slf|centos|oraclelinux)-release-(?!notes)([\\w]*-)*6(Server)*[\\.-]+(.*)\\.rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*).rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","x86_64","ppc","ppc64"],
+ "supported_repo_breeds":["rsync", "rhn", "yum"],
+ "kernel_file":"vmlinuz(.*)",
+ "initrd_file":"initrd(.*)\\.img",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_end.ks",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "rhel7": {
+ "signatures":["Packages"],
+ "version_file":"(redhat|sl|slf|centos|oraclelinux)-release-(?!notes)([\\w]*-)*7(Server)*[\\.-]+(.*)\\.rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*).rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","x86_64","ppc","ppc64"],
+ "supported_repo_breeds":["rsync", "rhn", "yum"],
+ "kernel_file":"vmlinuz(.*)",
+ "initrd_file":"initrd(.*)\\.img",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_end.ks",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "fedora16": {
+ "signatures":["Packages"],
+ "version_file":"(fedora)-release-16-(.*)\\.noarch\\.rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","x86_64","ppc","ppc64"],
+ "supported_repo_breeds":["rsync", "rhn", "yum"],
+ "kernel_file":"vmlinuz(.*)",
+ "initrd_file":"initrd(.*)\\.img",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_end.ks",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "fedora17": {
+ "signatures":["Packages"],
+ "version_file":"(fedora)-release-17-(.*)\\.noarch\\.rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","x86_64","ppc","ppc64"],
+ "supported_repo_breeds":["rsync", "rhn", "yum"],
+ "kernel_file":"vmlinuz(.*)",
+ "initrd_file":"initrd(.*)\\.img",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_end.ks",
+ "kernel_options":"repo=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "fedora18": {
+ "signatures":["Packages"],
+ "version_file":"(fedora)-release-18-(.*)\\.noarch\\.rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","x86_64","ppc","ppc64"],
+ "supported_repo_breeds":["rsync", "rhn", "yum"],
+ "kernel_file":"vmlinuz(.*)",
+ "initrd_file":"initrd(.*)\\.img",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_end.ks",
+ "kernel_options":"repo=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "fedora19": {
+ "signatures":["Packages"],
+ "version_file":"(fedora)-release-19-(.*)\\.noarch\\.rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","x86_64","ppc","ppc64"],
+ "supported_repo_breeds":["rsync", "rhn", "yum"],
+ "kernel_file":"vmlinuz(.*)",
+ "initrd_file":"initrd(.*)\\.img",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_end.ks",
+ "kernel_options":"repo=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "fedora20": {
+ "signatures":["Packages"],
+ "version_file":"(fedora)-release-20-(.*)\\.noarch\\.rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","x86_64","ppc","ppc64"],
+ "supported_repo_breeds":["rsync", "rhn", "yum"],
+ "kernel_file":"vmlinuz(.*)",
+ "initrd_file":"initrd(.*)\\.img",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_end.ks",
+ "kernel_options":"repo=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "fedora21": {
+ "signatures":["Packages"],
+ "version_file":"(fedora)-release-21-(.*)\\.noarch\\.rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","x86_64","ppc","ppc64"],
+ "supported_repo_breeds":["rsync", "rhn", "yum"],
+ "kernel_file":"vmlinuz(.*)",
+ "initrd_file":"initrd(.*)\\.img",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_end.ks",
+ "kernel_options":"repo=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "fedora22": {
+ "signatures":["Packages"],
+ "version_file":"(fedora)-release-22-(.*)\\.noarch\\.rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","x86_64","ppc","ppc64","ppc64le"],
+ "supported_repo_breeds":["rsync", "rhn", "yum"],
+ "kernel_file":"vmlinuz(.*)",
+ "initrd_file":"initrd(.*)\\.img",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_end.ks",
+ "kernel_options":"repo=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "fedora23": {
+ "signatures":["Packages"],
+ "version_file":"(fedora)-release-23-(.*)\\.noarch\\.rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","x86_64","ppc","ppc64","ppc64le"],
+ "supported_repo_breeds":["rsync", "rhn", "yum"],
+ "kernel_file":"vmlinuz(.*)",
+ "initrd_file":"initrd(.*)\\.img",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_end.ks",
+ "kernel_options":"repo=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "cloudlinux6": {
+ "signatures":["Packages"],
+ "version_file":"(cloudlinux)-release-(.*)\\.rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*).rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","x86_64","ppc","ppc64"],
+ "supported_repo_breeds":["rsync", "rhn", "yum"],
+ "kernel_file":"vmlinuz(.*)",
+ "initrd_file":"initrd(.*)\\.img",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_end.ks",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ }
+ },
+ "debian": {
+ "squeeze": {
+ "signatures":["dists"],
+ "version_file":"Release",
+ "version_file_regex":"Codename: squeeze",
+ "kernel_arch":"linux-headers-(.*)\\.deb",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":["apt"],
+ "kernel_file":"vmlinuz(.*)",
+ "initrd_file":"initrd(.*)\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample.seed",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "wheezy": {
+ "signatures":["dists"],
+ "version_file":"Release",
+ "version_file_regex":"Codename: wheezy",
+ "kernel_arch":"linux-headers-(.*)\\.deb",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":["apt"],
+ "kernel_file":"vmlinuz(.*)",
+ "initrd_file":"initrd(.*)\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample.seed",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "jessie": {
+ "signatures":["dists"],
+ "version_file":"Release",
+ "version_file_regex":"Codename: jessie",
+ "kernel_arch":"linux-headers-(.*)\\.deb",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":["apt"],
+ "kernel_file":"vmlinuz(.*)",
+ "initrd_file":"initrd(.*)\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample.seed",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "stretch": {
+ "signatures":["dists"],
+ "version_file":"Release",
+ "version_file_regex":"Codename: stretch",
+ "kernel_arch":"linux-headers-(.*)\\.deb",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":["apt"],
+ "kernel_file":"vmlinuz(.*)",
+ "initrd_file":"initrd(.*)\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample.seed",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ }
+ },
+ "ubuntu": {
+ "lucid": {
+ "signatures":["dists", ".disk"],
+ "version_file":"Release|mini-info",
+ "version_file_regex":"Codename: lucid|Ubuntu 10.04",
+ "kernel_arch":"linux-headers-(.*)\\.deb",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":["apt"],
+ "kernel_file":"linux(.*)",
+ "initrd_file":"initrd(.*)\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample.seed",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "oneiric": {
+ "signatures":["dists", ".disk"],
+ "version_file":"Release|mini-info",
+ "version_file_regex":"Codename: oneiric|Ubuntu 11.10",
+ "kernel_arch":"linux-headers-(.*)\\.deb",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":["apt"],
+ "kernel_file":"linux(.*)",
+ "initrd_file":"initrd(.*)\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample.seed",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "precise": {
+ "signatures":["dists", ".disk"],
+ "version_file":"Release|mini-info",
+ "version_file_regex":"Codename: precise|Ubuntu 12.04",
+ "kernel_arch":"linux-headers-(.*)\\.deb",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":["apt"],
+ "kernel_file":"linux(.*)",
+ "initrd_file":"initrd(.*)\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample.seed",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "quantal": {
+ "signatures":["dists", ".disk"],
+ "version_file":"Release|mini-info",
+ "version_file_regex":"Codename: quantal|Ubuntu 12.10",
+ "kernel_arch":"linux-headers-(.*)\\.deb",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":["apt"],
+ "kernel_file":"linux(.*)",
+ "initrd_file":"initrd(.*)\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample.seed",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "raring": {
+ "signatures":["dists", ".disk"],
+ "version_file":"Release|mini-info",
+ "version_file_regex":"Codename: raring|Ubuntu 13.04",
+ "kernel_arch":"linux-headers-(.*)\\.deb",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":["apt"],
+ "kernel_file":"linux(.*)",
+ "initrd_file":"initrd(.*)\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample.seed",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "saucy": {
+ "signatures":["dists", ".disk"],
+ "version_file":"Release|mini-info",
+ "version_file_regex":"Codename: saucy|Ubuntu 13.10",
+ "kernel_arch":"linux-headers-(.*)\\.deb",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":["apt"],
+ "kernel_file":"linux(.*)",
+ "initrd_file":"initrd(.*)\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample.seed",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "trusty": {
+ "signatures":["dists", ".disk"],
+ "version_file":"Release|mini-info",
+ "version_file_regex":"Codename: trusty|Ubuntu 14.04",
+ "kernel_arch":"linux-headers-(.*)\\.deb",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":["apt"],
+ "kernel_file":"linux(.*)",
+ "initrd_file":"initrd(.*)\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample.seed",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "vivid": {
+ "signatures":["dists", ".disk"],
+ "version_file":"Release|mini-info",
+ "version_file_regex":"Codename: vivid|Ubuntu 15.04",
+ "kernel_arch":"linux-headers-(.*)\\.deb",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":["apt"],
+ "kernel_file":"linux(.*)",
+ "initrd_file":"initrd(.*)\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample.seed",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "wily": {
+ "signatures":["dists", ".disk"],
+ "version_file":"Release|mini-info",
+ "version_file_regex":"Codename: wily|Ubuntu 15.10",
+ "kernel_arch":"linux-headers-(.*)\\.deb",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":["apt"],
+ "kernel_file":"linux(.*)",
+ "initrd_file":"initrd(.*)\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample.seed",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "xenial": {
+ "signatures":["dists", ".disk"],
+ "version_file":"Release|mini-info",
+ "version_file_regex":"Codename: xenial|Ubuntu 16.04",
+ "kernel_arch":"linux-headers-(.*)\\.deb",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":["apt"],
+ "kernel_file":"linux(.*)",
+ "initrd_file":"initrd(.*)\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample.seed",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ }
+ },
+ "suse": {
+ "opensuse11.2": {
+ "signatures":["suse"],
+ "version_file":"openSUSE-release-11.2-(.*).rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","i586","x86_64"],
+ "supported_repo_breeds":["yum"],
+ "kernel_file":"(linux|vmlinuz(.*))",
+ "initrd_file":"initrd(.*)",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_autoyast.xml",
+ "kernel_options":"install=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "opensuse11.3": {
+ "signatures":["suse"],
+ "version_file":"openSUSE-release-11.3-(.*).rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","i586","x86_64"],
+ "supported_repo_breeds":["yum"],
+ "kernel_file":"(linux|vmlinuz(.*))",
+ "initrd_file":"initrd(.*)",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_autoyast.xml",
+ "kernel_options":"install=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "opensuse11.4": {
+ "signatures":["suse"],
+ "version_file":"openSUSE-release-11.4-(.*).rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","i586","x86_64"],
+ "supported_repo_breeds":["yum"],
+ "kernel_file":"(linux|vmlinuz(.*))",
+ "initrd_file":"initrd(.*)",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_autoyast.xml",
+ "kernel_options":"install=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "opensuse12.1": {
+ "signatures":["suse"],
+ "version_file":"openSUSE-release-12.1-(.*).rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","i586","x86_64"],
+ "supported_repo_breeds":["yum"],
+ "kernel_file":"(linux|vmlinuz(.*))",
+ "initrd_file":"initrd(.*)",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_autoyast.xml",
+ "kernel_options":"install=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "opensuse12.2": {
+ "signatures":["suse"],
+ "version_file":"openSUSE-release-12.2-(.*).rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","i586","x86_64"],
+ "supported_repo_breeds":["yum"],
+ "kernel_file":"(linux|vmlinuz(.*))",
+ "initrd_file":"initrd(.*)",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_autoyast.xml",
+ "kernel_options":"install=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "opensuse12.3": {
+ "signatures":["suse"],
+ "version_file":"openSUSE-release-12.3-(.*).rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","i586","x86_64"],
+ "supported_repo_breeds":["yum"],
+ "kernel_file":"(linux|vmlinuz(.*))",
+ "initrd_file":"initrd(.*)",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_autoyast.xml",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "opensuse13.1": {
+ "signatures":["suse"],
+ "version_file":"openSUSE-release-13.1-(.*).rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","i586","x86_64"],
+ "supported_repo_breeds":["yum"],
+ "kernel_file":"(linux|vmlinuz(.*))",
+ "initrd_file":"initrd(.*)",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_autoyast.xml",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "opensuse13.2": {
+ "signatures":["suse"],
+ "version_file":"openSUSE-release-13.2-(.*).rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","i586","x86_64"],
+ "supported_repo_breeds":["yum"],
+ "kernel_file":"(linux|vmlinuz(.*))",
+ "initrd_file":"initrd(.*)",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_autoyast.xml",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "sles10": {
+ "signatures":["suse"],
+ "version_file":"sles-release-10-(.*).rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","i586","x86_64","ppc64"],
+ "supported_repo_breeds":["yum"],
+ "kernel_file":"linux[64.gz]?",
+ "initrd_file":"initrd[64]?",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_autoyast.xml",
+ "kernel_options":"install=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "sles11": {
+ "signatures":["suse"],
+ "version_file":"sles-release-11-(.*).rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","i586","x86_64","ppc64"],
+ "supported_repo_breeds":["yum"],
+ "kernel_file":"linux[64.gz]?",
+ "initrd_file":"initrd[64]?",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_autoyast.xml",
+ "kernel_options":"install=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "sles11sp1": {
+ "signatures":["suse"],
+ "version_file":"sles-release-11.1-(.*).rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","i586","x86_64","ppc64"],
+ "supported_repo_breeds":["yum"],
+ "kernel_file":"linux[64.gz]?",
+ "initrd_file":"initrd[64]?",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_autoyast.xml",
+ "kernel_options":"install=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "sles11sp2": {
+ "signatures":["suse"],
+ "version_file":"sles-release-11.2-(.*).rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","i586","x86_64","ppc64"],
+ "supported_repo_breeds":["yum"],
+ "kernel_file":"linux[64.gz]?",
+ "initrd_file":"initrd[64]?",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_autoyast.xml",
+ "kernel_options":"install=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "sles11sp3": {
+ "signatures":["suse"],
+ "version_file":"sles-release-11.3-(.*).rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","i586","x86_64","ppc64"],
+ "supported_repo_breeds":["yum"],
+ "kernel_file":"linux[64.gz]?",
+ "initrd_file":"initrd[64]?",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_autoyast.xml",
+ "kernel_options":"install=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "sles11sp4": {
+ "signatures":["suse"],
+ "version_file":"sles-release-11.4-(.*).rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","i586","x86_64","ppc64"],
+ "supported_repo_breeds":["yum"],
+ "kernel_file":"linux[64.gz]?",
+ "initrd_file":"initrd[64]?",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_autoyast.xml",
+ "kernel_options":"install=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "sles12": {
+ "signatures":["suse"],
+ "version_file":"(sles|SLES-for-VMware)-release-12-(.*).rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","i586","x86_64","ppc64"],
+ "supported_repo_breeds":["yum"],
+ "kernel_file":"linux[64.gz]?",
+ "initrd_file":"initrd[64]?",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_autoyast.xml",
+ "kernel_options":"install=$tree",
+ "kernel_options_post":"",
+ "boot_files":[]
+ }
+ },
+ "vmware": {
+ "esx4": {
+ "signatures":["VMware/RPMS"],
+ "version_file":"vmware-esx-vmware-release-(.*)\\.rpm",
+ "version_file_regex":null,
+ "kernel_arch":"kernel-(.*)\\.x86_64\\.rpm",
+ "kernel_arch_regex":null,
+ "supported_arches":["x86_64"],
+ "supported_repo_breeds":["yum"],
+ "kernel_file":"vmlinuz",
+ "initrd_file":"initrd\\.img",
+ "isolinux_ok":true,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_esx4.ks",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "esxi4": {
+ "signatures":["imagedd.bz2"],
+ "version_file":"vmkernel\\.gz",
+ "version_file_regex":"^.*ESXi 4.1\\.(\\d)+ \\[Releasebuild-([\\d]+)\\].*$",
+ "kernel_arch":"vmkernel\\.gz",
+ "kernel_arch_regex":"^.*SystemVsiCpuArch.*(X86_64).*$",
+ "supported_arches":["x86_64"],
+ "supported_repo_breeds":[],
+ "kernel_file":"mboot\\.c32",
+ "initrd_file":"vmkboot\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_esxi4.ks",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":["vmkernel.gz","sys.vgz","cim.vgz","ienviron.vgz","install.vgz"]
+ },
+ "esxi5": {
+ "signatures":["tboot.b00"],
+ "version_file":"s\\.v00",
+ "version_file_regex":"^.*ESXi 5\\.0\\.(.*)build-([\\d]+).*$",
+ "kernel_arch":"tools\\.t00",
+ "kernel_arch_regex":"^.*(x86_64).*$",
+ "supported_arches":["x86_64"],
+ "supported_repo_breeds":[],
+ "kernel_file":"mboot\\.c32",
+ "initrd_file":"imgpayld\\.tgz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_esxi5.ks",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "template_files":"/etc/cobbler/pxe/bootcfg_esxi5.template=$local_img_path/cobbler-boot.cfg",
+ "boot_files":["*.*"]
+ },
+ "esxi51": {
+ "signatures":["tboot.b00"],
+ "version_file":"s\\.v00",
+ "version_file_regex":"^.*ESXi 5\\.1\\.(.*)build-([\\d]+).*$",
+ "kernel_arch":"tools\\.t00",
+ "kernel_arch_regex":"^.*(x86_64).*$",
+ "supported_arches":["x86_64"],
+ "supported_repo_breeds":[],
+ "kernel_file":"mboot\\.c32",
+ "initrd_file":"imgpayld\\.tgz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_esxi5.ks",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "template_files":"/etc/cobbler/pxe/bootcfg_esxi51.template=$local_img_path/cobbler-boot.cfg",
+ "boot_files":["*.*"]
+ },
+ "esxi55": {
+ "signatures":["tboot.b00"],
+ "version_file":"s\\.v00",
+ "version_file_regex":"^.*ESXi 5\\.5\\.(.*)build-([\\d]+).*$",
+ "kernel_arch":"tools\\.t00",
+ "kernel_arch_regex":"^.*(x86_64).*$",
+ "supported_arches":["x86_64"],
+ "supported_repo_breeds":[],
+ "kernel_file":"mboot\\.c32",
+ "initrd_file":"imgpayld\\.tgz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_esxi5.ks",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "template_files":"/etc/cobbler/pxe/bootcfg_esxi55.template=$local_img_path/cobbler-boot.cfg",
+ "boot_files":["*.*"]
+ },
+ "esxi60": {
+ "signatures":["tboot.b00"],
+ "version_file":"s\\.v00",
+ "version_file_regex":"^.*ESXi 6\\.0\\.(.*)build-([\\d]+).*$",
+ "kernel_arch":"tools\\.t00",
+ "kernel_arch_regex":"^.*(x86_64).*$",
+ "supported_arches":["x86_64"],
+ "supported_repo_breeds":[],
+ "kernel_file":"mboot\\.c32",
+ "initrd_file":"imgpayld\\.tgz",
+ "isolinux_ok":false,
+ "default_kickstart":"/var/lib/cobbler/kickstarts/sample_esxi5.ks",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "template_files":"/etc/cobbler/pxe/bootcfg_esxi60.template=$local_img_path/cobbler-boot.cfg",
+ "boot_files":["*.*"]
+ }
+ },
+ "freebsd": {
+ "8.2": {
+ "signatures":["boot"],
+ "version_file":"8\\.2-RELEASE",
+ "version_file_regex":null,
+ "kernel_arch":"device\\.hints",
+ "kernel_arch_regex":"^.*FreeBSD: src/sys/(.*)/conf/GENERIC\\.hints.*$",
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":[],
+ "kernel_file":"pxeboot(.*)",
+ "initrd_file":"mfsroot\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "8.3": {
+ "signatures":["boot"],
+ "version_file":"8\\.3-RELEASE",
+ "version_file_regex":null,
+ "kernel_arch":"device\\.hints",
+ "kernel_arch_regex":"^.*FreeBSD: src/sys/(.*)/conf/GENERIC\\.hints.*$",
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":[],
+ "kernel_file":"pxeboot(.*)",
+ "initrd_file":"mfsroot\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "8.4": {
+ "signatures":["boot"],
+ "version_file":"8\\.4-RELEASE",
+ "version_file_regex":null,
+ "kernel_arch":"device\\.hints",
+ "kernel_arch_regex":"^.*FreeBSD: src/sys/(.*)/conf/GENERIC\\.hints.*$",
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":[],
+ "kernel_file":"pxeboot(.*)",
+ "initrd_file":"mfsroot\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "9.0": {
+ "signatures":["boot"],
+ "version_file":"device\\.hints",
+ "version_file_regex":"^.*FreeBSD: release/9.0(.*)/sys/(.*)/conf/GENERIC.hints.*$",
+ "kernel_arch":"device\\.hints",
+ "kernel_arch_regex":"^.*FreeBSD: release/9.0(.*)/sys/(.*)/conf/GENERIC.hints.*$",
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":[],
+ "kernel_file":"pxeboot(.*)",
+ "initrd_file":"mbr",
+ "isolinux_ok":false,
+ "default_kickstart":"",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "10.0": {
+ "signatures":["release"],
+ "version_file":"10\\.0\\-RELEASE",
+ "version_file_regex":null,
+ "kernel_arch":"device\\.hints",
+ "kernel_arch_regex":null,
+ "supported_arches":["i386","amd64"],
+ "supported_repo_breeds":[],
+ "kernel_file":"base.txz",
+ "initrd_file":"base.txz",
+ "isolinux_ok":false,
+ "default_kickstart":"",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ }
+ },
+ "xen": {
+ "xcp16": {
+ "signatures":["packages.main"],
+ "version_file":"^XS-REPOSITORY$",
+ "version_file_regex":"^.*product=\"XCP\" version=\"1\\.6\\.([0-9]+)\".*$",
+ "kernel_arch":"xen\\.gz",
+ "kernel_arch_regex":"^.*(x86_64).*$",
+ "supported_arches":["x86_64"],
+ "supported_repo_breeds":[],
+ "kernel_file":"vmlinuz",
+ "initrd_file":"xen\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"",
+ "kernel_options":"dom0_max_vcpus=1-2 dom0_mem=max:752M,752M",
+ "kernel_options_post":"",
+ "boot_files":["install.img"]
+ },
+ "xenserver620": {
+ "signatures":["packages.xenserver"],
+ "version_file":"^XS-REPOSITORY$",
+ "version_file_regex":"^.*product=\"XenServer\" version=\"6\\.2\\.([0-9]+)\".*$",
+ "kernel_arch":"xen\\.gz",
+ "kernel_arch_regex":"^.*(x86_64).*$",
+ "supported_arches":["x86_64"],
+ "supported_repo_breeds":[],
+ "kernel_file":"mboot\\.c32",
+ "initrd_file":"xen\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":["install.img"]
+ },
+ "xenserver650": {
+ "signatures":["packages.xenserver"],
+ "version_file":"^XS-REPOSITORY$",
+ "version_file_regex":"^.*product=\"XenServer\" version=\"6\\.5\\.([0-9]+)\".*$",
+ "kernel_arch":"xen\\.gz",
+ "kernel_arch_regex":"^.*(x86_64).*$",
+ "supported_arches":["x86_64"],
+ "supported_repo_breeds":[],
+ "kernel_file":"mboot\\.c32",
+ "initrd_file":"xen\\.gz",
+ "isolinux_ok":false,
+ "default_kickstart":"",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":["install.img"]
+ }
+ },
+ "unix": {
+ },
+ "windows": {
+ },
+ "nexenta": {
+ "4": {
+ "signatures":["boot"],
+ "version_file": "platform",
+ "version_file_regex": null,
+ "supported_arches":["x86_64"],
+ "supported_repo_breeds":["apt"],
+ "kernel_file":"platform/i86pc/kernel/amd64/unix",
+ "initrd_file":"platform/i86pc/amd64/miniroot",
+ "kernel_arch": "",
+ "kernel_arch_regex": null,
+ "isolinux_ok":false,
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[],
+ "default_kickstart":""
+ }
+ },
+ "generic": {
+ "generic26": {
+ "signatures":[],
+ "version_file":"",
+ "version_file_regex":"",
+ "kernel_arch":"",
+ "kernel_arch_regex":"",
+ "supported_arches":["i386","x86_64"],
+ "supported_repo_breeds":[],
+ "kernel_file":"",
+ "initrd_file":"",
+ "isolinux_ok":false,
+ "default_kickstart":"",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ },
+ "virtio26": {
+ "signatures":[],
+ "version_file":"",
+ "version_file_regex":"",
+ "kernel_arch":"",
+ "kernel_arch_regex":"",
+ "supported_arches":["i386","x86_64"],
+ "supported_repo_breeds":[],
+ "kernel_file":"",
+ "initrd_file":"",
+ "isolinux_ok":false,
+ "default_kickstart":"",
+ "kernel_options":"",
+ "kernel_options_post":"",
+ "boot_files":[]
+ }
+ }
+ }
+}
diff --git a/util/docker-compose/roles/discovery/vars/main.yml b/util/docker-compose/roles/discovery/vars/main.yml
new file mode 100755
index 00000000..a1104a44
--- /dev/null
+++ b/util/docker-compose/roles/discovery/vars/main.yml
@@ -0,0 +1,17 @@
+##############################################################################
+# Copyright (c) 2016-2017 HUAWEI TECHNOLOGIES CO.,LTD and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+---
+
+tinycore_url: http://192.168.104.2:9999/download/core.iso
+
+tinycore:
+ DistroName: tinycore
+ DistroArch: x86_64
+
+cluster_id: 1
diff --git a/util/docker-compose/roles/machines/tasks/main.yml b/util/docker-compose/roles/machines/tasks/main.yml
new file mode 100755
index 00000000..365a9d90
--- /dev/null
+++ b/util/docker-compose/roles/machines/tasks/main.yml
@@ -0,0 +1,21 @@
+---
+- name: create switch file if test mode enabled
+ template: src=switch_machines_file.j2
+ dest="{{ docker_compose_dir }}/switch_machines_file"
+ tags:
+ - redploy
+
+- name: docker cp switch_machines_file
+ shell: |
+ docker cp "{{ docker_compose_dir }}/switch_machines_file" \
+ compass-deck:/tmp/switch_machines_file
+ tags:
+ - redploy
+
+- name: inject switches and mac addresses
+ shell: |
+ docker exec compass-deck bash -c \
+ "/opt/compass/bin/manage_db.py set_switch_machines \
+ --switch_machines_file /tmp/switch_machines_file"
+ tags:
+ - redploy
diff --git a/util/docker-compose/roles/machines/templates/switch_machines_file.j2 b/util/docker-compose/roles/machines/templates/switch_machines_file.j2
new file mode 100755
index 00000000..489befc5
--- /dev/null
+++ b/util/docker-compose/roles/machines/templates/switch_machines_file.j2
@@ -0,0 +1,4 @@
+switch,1.1.1.1,huawei,2c,public,under_monitoring
+{% for mac in pxe_boot_macs %}
+machine,1.1.1.1,8,{{ mac }}
+{% endfor %}
diff --git a/util/docker-compose/roles/osa/files/cinder.yml b/util/docker-compose/roles/osa/files/cinder.yml
new file mode 100755
index 00000000..3a39935a
--- /dev/null
+++ b/util/docker-compose/roles/osa/files/cinder.yml
@@ -0,0 +1,13 @@
+---
+# This file contains an example to show how to set
+# the cinder-volume service to run in a container.
+#
+# Important note:
+# When using LVM or any iSCSI-based cinder backends, such as NetApp with
+# iSCSI protocol, the cinder-volume service *must* run on metal.
+# Reference: https://bugs.launchpad.net/ubuntu/+source/lxc/+bug/1226855
+
+container_skel:
+ cinder_volumes_container:
+ properties:
+ is_metal: true
diff --git a/util/docker-compose/roles/osa/tasks/main.yml b/util/docker-compose/roles/osa/tasks/main.yml
new file mode 100755
index 00000000..7b868908
--- /dev/null
+++ b/util/docker-compose/roles/osa/tasks/main.yml
@@ -0,0 +1,48 @@
+---
+- name: install packege
+ shell: |
+ docker exec compass-tasks bash -c \
+ "yum upgrade -y; \
+ yum install https://rdoproject.org/repos/openstack-ocata/rdo-release-ocata.rpm -y; \
+ yum install git ntp ntpdate openssh-server python-devel sudo '@Development Tools' -y"
+
+- name: git clone openstack-ansible
+ shell: |
+ docker exec compass-tasks bash -c \
+ "rm -rf /opt/openstack-ansible; \
+ git clone https://git.openstack.org/openstack/openstack-ansible /opt/openstack-ansible"
+
+- name: change openstack-ansible to ocata branch
+ shell: |
+ docker exec compass-tasks bash -c \
+ "cd /opt/openstack-ansible; \
+ git checkout -b ocata remotes/origin/stable/ocata"
+
+- name: copy /opt/openstack-ansible/etc/openstack_deploy to /etc/openstack_deploy
+ shell: |
+ docker exec compass-tasks bash -c \
+ "rm -rf /etc/openstack_deploy; \
+ /bin/cp -rf /opt/openstack-ansible/etc/openstack_deploy /etc/openstack_deploy"
+
+- name: bootstrap
+ shell: |
+ docker exec compass-tasks bash -c \
+ "cd /opt/openstack-ansible; \
+ scripts/bootstrap-ansible.sh; \
+ rm /usr/local/bin/ansible-playbook -f"
+
+- name: generate password token
+ shell: |
+ docker exec compass-tasks bash -c \
+ " cd /opt/openstack-ansible/scripts/; \
+ python pw-token-gen.py --file /etc/openstack_deploy/user_secrets.yml"
+
+- name: copy cinder file
+ copy:
+ src: cinder.yml
+ dest: "{{ docker_compose_dir }}/cinder.yml"
+
+- name: copy file to docker
+ shell: |
+ docker cp "{{ docker_compose_dir }}/cinder.yml" \
+ compass-tasks:/etc/openstack_deploy/env.d/cinder.yml;