aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYibo Cai <yibo.cai@arm.com>2017-12-22 18:04:42 +0800
committerYibo Cai <yibo.cai@arm.com>2018-01-14 11:27:41 +0000
commitec8cc0f7665b1fd1f34ae31a50c4fb1b67c342ea (patch)
tree9a6790c38ab667278ea7281f5fd125460647753e
parenta322fe981bb0fc11f2c83e3c887921ebf3af1dc3 (diff)
docker-compose: support aarch64
Change-Id: I4b1bce45f8412af7076dca90bbb4c1193057d110 Signed-off-by: Yibo Cai <yibo.cai@arm.com>
-rwxr-xr-xbuild.sh2
-rw-r--r--build/build-aarch64.yaml18
-rwxr-xr-xutil/docker-compose/group_vars/all29
-rwxr-xr-xutil/docker-compose/roles/cobbler/tasks/main.yml51
-rwxr-xr-xutil/docker-compose/roles/cobbler/templates/dhcp.template.j22
-rwxr-xr-xutil/docker-compose/roles/compass/tasks/main.yml5
6 files changed, 82 insertions, 25 deletions
diff --git a/build.sh b/build.sh
index 7f67ee2a..0aea6eb6 100755
--- a/build.sh
+++ b/build.sh
@@ -102,7 +102,7 @@ function build_tar()
sudo rm -rf compass_dists
mkdir -p compass_dists
sudo cp -f *.tar *.iso compass_dists
- sudo cp $COMPASS_PATH/build/build.yaml 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
diff --git a/build/build-aarch64.yaml b/build/build-aarch64.yaml
index 47bd0eb1..e197f33b 100644
--- a/build/build-aarch64.yaml
+++ b/build/build-aarch64.yaml
@@ -13,29 +13,25 @@ packages:
- name: compass-deck
description: "RESTful API and DB Handlers for Compass"
get_method: docker
- url: $COMPASS_DOCKER_REPO/compass-deck:latest
+ url: linaro/compass-deck:latest
- - name: compass-tasks-k8s
+ # XXX: only supports k8s now
+ - name: compass-tasks
description: "compass task container for kubernets deployment via kargo"
get_method: docker
- url: $COMPASS_DOCKER_REPO/compass-tasks-k8s:latest
+ url: linaro/compass-tasks-k8s:latest
- name: compass-cobbler
description: "cobbler container for compass"
get_method: docker
- url: $COMPASS_DOCKER_REPO/compass-cobbler:latest
+ url: linaro/compass-cobbler:latest
- name: compass-db
description: "datebase container for compass"
get_method: docker
- url: $COMPASS_DOCKER_REPO/compass-db:latest
+ url: linaro/compass-db:latest
- name: compass-mq
description: "message queue container for compass"
get_method: docker
- url: $COMPASS_DOCKER_REPO/compass-mq:latest
-
- - name: compass-docker-compose
- description: "containerized compass compose ansible"
- get_method: git
- url: $COMPASS_GIT_REPO/compass-docker-compose
+ url: linaro/compass-mq:latest
diff --git a/util/docker-compose/group_vars/all b/util/docker-compose/group_vars/all
index 1dafe814..920589ce 100755
--- a/util/docker-compose/group_vars/all
+++ b/util/docker-compose/group_vars/all
@@ -19,7 +19,7 @@ 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:
+distros_x86_64:
ubuntu-16.04.3:
breed: "ubuntu"
kickstart: "default16.seed"
@@ -30,6 +30,8 @@ distros:
version: "ubuntu"
iso_name: ubuntu-16.04.3-server-amd64
ppa_name: xenial-pike-ppa
+ cobbler_name: ubuntu-16.04.3-server
+ cobbler_arch: x86_64
CentOS-7:
breed: "redhat"
@@ -38,4 +40,29 @@ distros:
version: "centos"
iso_name: CentOS-7-x86_64-Minimal-1708
ppa_name: centos7-pike-ppa
+ cobbler_name: CentOS-7-Minimal-1708
+ cobbler_arch: x86_64
+distros_aarch64:
+ ubuntu-16.04:
+ breed: "ubuntu"
+ kickstart: "default16.seed"
+ kopts: "netcfg/choose_interface=auto console=ttyS0 console=ttyAMA0 console=tty0 net.ifnames=0"
+ kopts_post: "console=ttyS0 console=ttyAMA0 console=tty0 net.ifnames=0"
+ extra: "--apt-dists=xenial --apt-components=main"
+ aliase: "xenial"
+ version: "ubuntu"
+ iso_name: ubuntu-16.04-server-arm64
+ ppa_name: xenial-pike-ppa
+ cobbler_name: ubuntu-16.04-server
+ cobbler_arch: arm
+
+ CentOS-7:
+ breed: "redhat"
+ kickstart: "default-aarch64.ks"
+ aliase: "centos7"
+ version: "centos"
+ iso_name: CentOS-7-aarch64-Minimal-1611
+ ppa_name: centos7-pike-ppa
+ cobbler_name: CentOS-7-Minimal-1611
+ cobbler_arch: arm
diff --git a/util/docker-compose/roles/cobbler/tasks/main.yml b/util/docker-compose/roles/cobbler/tasks/main.yml
index e3f13088..0a30e0c5 100755
--- a/util/docker-compose/roles/cobbler/tasks/main.yml
+++ b/util/docker-compose/roles/cobbler/tasks/main.yml
@@ -44,23 +44,22 @@
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 }}"
+ with_dict: "{{ vars['distros_' + ansible_architecture] }}"
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'`
+ name="{{ item.value.cobbler_name }}"
docker exec compass-cobbler bash -c \
"service cobblerd restart;
sleep 3;
cobbler import --name $name \
--path /mnt/{{ item.value.iso_name }} \
- --arch x86_64 \
+ --arch {{ item.value.cobbler_arch }} \
--kickstart /var/lib/cobbler/kickstarts/{{ item.value.kickstart }} \
--breed {{ item.value.breed }}"
- with_dict: "{{ distros }}"
+ with_dict: "{{ vars['distros_' + ansible_architecture] }}"
run_once: "True"
register: result2
until: result2.rc == 0
@@ -73,14 +72,14 @@
"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 }}"
+ --arch={{ item.value.cobbler_arch }} \
+ {{ item.value.extra | default() }}"
+ with_dict: "{{ vars['distros_' + ansible_architecture] }}"
run_once: "True"
-- name: edit profiles
+- name: edit profiles for x86_64
shell: |
- name=`basename {{ item.value.iso_name }} | \
- sed -e 's/.iso//g' -e 's/-amd64//g' -e 's/-x86_64//g'`-x86_64
+ name="{{ item.value.cobbler_name }}-x86_64"
docker exec compass-cobbler bash -c \
"cobbler profile edit --name $name \
--name-servers '' \
@@ -88,8 +87,38 @@
--ksmeta \"tree=http://{{ host_ip }}/cobbler/ks_mirror/$name\" \
--kopts \"{{ item.value.kopts | default('') }}\" \
--kopts-post \"{{ item.value.kopts_post | default('') }}\""
- with_dict: "{{ distros }}"
+ with_dict: "{{ distros_x86_64 }}"
run_once: "True"
+ when: ansible_architecture == "x86_64"
+
+- name: edit profile for aarch64
+ shell: |
+ # Cobbler naming on Arm is a mess
+ # Imported name:
+ # - CentOS-7-Minimal-1611
+ # - ubuntu-16.04-server
+ # Profile name:
+ # - CentOS-7-Minimal-1611-arm-arm
+ # - ubuntu-16.04-server-arm-arm64-arm
+ # Kickstart meta url name
+ # - http://x.x.x.x/cobbler/ks_mirror/CentOS-7-Minimal-1611-arm
+ # - http://x.x.x.x/cobbler/ks_mirror/ubuntu-16.04-server-arm-arm64
+ name="{{ item.value.cobbler_name }}-arm"
+ profiles=`docker exec compass-cobbler bash -c \
+ "cobbler profile list | grep $name"`
+ for profile_name in $profiles; do
+ docker exec compass-cobbler bash -c \
+ "cobbler profile edit \
+ --name $profile_name \
+ --name-servers '' \
+ --repos {{ item.value.ppa_name }} \
+ --ksmeta \"tree=http://{{ host_ip }}/cobbler/ks_mirror/${profile_name%????}\" \
+ --kopts \"{{ item.value.kopts | default('') }}\" \
+ --kopts-post \"{{ item.value.kopts_post | default('') }}\""
+ done
+ with_dict: "{{ distros_aarch64 }}"
+ run_once: "True"
+ when: ansible_architecture == "aarch64"
- name: cobbler sync
shell: |
diff --git a/util/docker-compose/roles/cobbler/templates/dhcp.template.j2 b/util/docker-compose/roles/cobbler/templates/dhcp.template.j2
index 0665f2fe..8b1f2a61 100755
--- a/util/docker-compose/roles/cobbler/templates/dhcp.template.j2
+++ b/util/docker-compose/roles/cobbler/templates/dhcp.template.j2
@@ -42,6 +42,8 @@ subnet {{ install_subnet }} netmask {{ install_netmask }} {
filename "grub/grub-x86.efi";
} else if option pxe-system-type = 00:07 {
filename "grub/grub-x86_64.efi";
+ } else if option pxe-system-type = 00:0B {
+ filename "grub/grub-aarch64.efi";
} else {
filename "pxelinux.0";
}
diff --git a/util/docker-compose/roles/compass/tasks/main.yml b/util/docker-compose/roles/compass/tasks/main.yml
index 9ee7902e..c7dba96b 100755
--- a/util/docker-compose/roles/compass/tasks/main.yml
+++ b/util/docker-compose/roles/compass/tasks/main.yml
@@ -1,5 +1,8 @@
---
-- include_vars: "{{ compass_dists_dir }}/build.yaml"
+- include_vars: "{{ item }}"
+ with_first_found:
+ - "{{ compass_dists_dir }}/build-{{ ansible_architecture }}.yaml"
+ - "{{ compass_dists_dir }}/build.yaml"
- set_fact:
image_name: "{{ item.name | regex_replace('-', '_') }}"