From ec8cc0f7665b1fd1f34ae31a50c4fb1b67c342ea Mon Sep 17 00:00:00 2001 From: Yibo Cai Date: Fri, 22 Dec 2017 18:04:42 +0800 Subject: docker-compose: support aarch64 Change-Id: I4b1bce45f8412af7076dca90bbb4c1193057d110 Signed-off-by: Yibo Cai --- build.sh | 2 +- build/build-aarch64.yaml | 18 +++----- util/docker-compose/group_vars/all | 29 +++++++++++- util/docker-compose/roles/cobbler/tasks/main.yml | 51 +++++++++++++++++----- .../roles/cobbler/templates/dhcp.template.j2 | 2 + util/docker-compose/roles/compass/tasks/main.yml | 5 ++- 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('-', '_') }}" -- cgit 1.2.3-korg