install directly on head node
Change-Id: I861fda9725acbc222337f232ca0ffb2c1742e44c
diff --git a/roles/xos-install/tasks/main.yml b/roles/xos-install/tasks/main.yml
index 7008edb..5d5ac49 100644
--- a/roles/xos-install/tasks/main.yml
+++ b/roles/xos-install/tasks/main.yml
@@ -1,29 +1,143 @@
---
# tasks for xos-install role
-- name: checkout XOS repo
- git:
- repo: "{{ xos_repo_url }}"
- dest: "{{ xos_repo_dest }}"
- version: "{{ xos_repo_branch }}"
+- name: Install prerequisites
+ apt:
+ name={{ item }}
+ update_cache=yes
+ cache_valid_time=3600
+ become: yes
+ with_items:
+ - git
+ - make
+ - curl
+ - python-novaclient
+ - python-neutronclient
+ - python-keystoneclient
+ - python-glanceclient
-- name: checkout service-profile repo
+# ---- copy repos from the dev machine to the head node ----
+
+- name: Check to see if orchestration directory exists
+ local_action: stat path="{{ playbook_dir }}/../../orchestration"
+ register: orchestration
+
+- name: Copy repositories to the head node
+ synchronize:
+ src: "{{ playbook_dir }}/../../orchestration/{{ item }}"
+ dest: "{{ ansible_user_dir }}/"
+ when:
+ False # orchestration.stat.exists == True # XXX
+ with_items:
+ - service-profile
+ - xos
+ - xos_libraries
+ - xos_services
+
+- name: Check to see if onos_apps directory exists
+ local_action: stat path="{{ playbook_dir }}/../../onos-apps/apps"
+ register: onos_apps
+
+- name: Copy in onos-apps that have XOS code
+ synchronize:
+ src: "{{ playbook_dir }}/../../onos-apps/apps/{{ item }}"
+ dest: "{{ ansible_user_dir }}/xos_services/"
+ with_items:
+ - vtn
+ - olt
+ when:
+ False # (orchestration.stat.exists == True) and (onos_apps.stat.exists == True) # XXX
+
+# ---- alternatively, check out repos from Internet ---
+
+- name: Clone service-profile repo
git:
- repo: "{{ service_profile_repo_url }}"
- dest: "{{ service_profile_repo_dest }}"
- version: "{{ service_profile_repo_branch }}"
+ repo={{ service_profile_repo_url }}
+ dest={{ service_profile_repo_dest }}
+ version={{ service_profile_repo_branch }}
+ force=yes
+ when:
+ True # orchestration.stat.exists == False # XXX
+
+# ---- install keys ----
+
+- name: Copy over SSH keys
+ command: cp ~/.ssh/{{ item }} {{ service_profile_repo_dest }}/{{ xos_configuration }}/
+ with_items:
+ - id_rsa
+ - id_rsa.pub
+ tags:
+ - skip_ansible_lint
+
+- name: Copy over node key
+ command: cp {{ ansible_user_dir }}/node_key {{ service_profile_repo_dest }}/{{ xos_configuration }}/
+ tags:
+ - skip_ansible_lint
+
+- name: Set ownership and permissions of keys
+ file:
+ path={{ service_profile_repo_dest }}/{{ xos_configuration }}/{{ item }}
+ owner={{ ansible_user_id }}
+# mode=0600
+ with_items:
+ - id_rsa
+ - id_rsa.pub
+ - node_key
+
+# ----
+
+- name: Download Glance VM images
+ get_url:
+ url={{ item.url }}
+ checksum={{ item.checksum }}
+ dest={{ service_profile_repo_dest }}/{{ xos_configuration }}/images/{{ item.name }}.img
+ with_items: "{{ xos_images }}"
+
+# ---- pull docker images ----
+
+- name: Check to see if registry is reachable
+ command: curl -sf http://docker-registry:5000/
+ ignore_errors: yes
+ register: docker_registry_check
+ tags:
+ - skip_ansible_lint
+
+- name: Use registry if it is available
+ set_fact:
+ docker_registry: "{{ local_docker_registry }}"
+ docker_opts: "--insecure-registry {{ local_docker_registry }}"
+ docker_tag: "candidate"
+ when: docker_registry_check|succeeded
+
+- name: Pull docker images for XOS
+ become: yes
+ command: docker pull {{ docker_registry }}/{{ item }}:{{ docker_tag }}
+ with_items:
+ - xosproject/xos-base
+ - xosproject/xos-postgres
+ - xosproject/cord-app-build
+ - redis
+ tags:
+ - skip_ansible_lint
+
+- name: Tag the images downloaded from the local registry
+ command: docker tag {{ docker_registry }}/{{ item }}:{{ docker_tag }} {{ item }}:latest
+ with_items:
+ - xosproject/xos-base
+ - xosproject/xos-postgres
+ - xosproject/cord-app-build
+ - redis
+ when: docker_registry_check|succeeded
+
+# ---- optional: rebuild base container ----
- name: Rebuild XOS containers
when: xos_container_rebuild
- make:
- target: "{{ item }}"
- chdir: "{{ service_profile_repo_dest }}/{{ xos_configuration }}/"
+ command: make {{ item }}
+ chdir="{{ xos_repo_dest }}/containers/xos/"
with_items:
- - common_cloudlab
- - base
+ - base
-- name: Initial build of XOS
- make:
- target: "{{ item }}"
- chdir: "{{ service_profile_repo_dest }}/{{ xos_configuration }}/"
+
+