| --- |
| # tasks for xos-install role |
| |
| - 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 |
| |
| # ---- copy repos from the dev machine to the head node ---- |
| # note: this happens in the `cord` repo now |
| |
| # - name: Create cord destination directory |
| # become: yes |
| # file: |
| # path: "{{ cord_dest_dir }}" |
| # state: directory |
| # mode: 0755 |
| # owner: "{{ ansible_user_id }}" |
| |
| # - name: Copy the whole repo tree |
| # synchronize: |
| # src: "{{ playbook_dir }}/../../../cord/" |
| # dest: "{{ cord_dest_dir }}/" |
| |
| - name: Create directory xos_services |
| file: |
| path: "{{ ansible_user_dir }}/xos_services" |
| state: directory |
| mode: 0755 |
| |
| - name: Create directory xos_libraries |
| file: |
| path: "{{ ansible_user_dir }}/xos_libraries" |
| state: directory |
| mode: 0755 |
| |
| - name: Create bindings to service-profile and xos |
| become: yes |
| mount: |
| src: "{{ cord_dest_dir }}/orchestration/{{ item }}" |
| name: "{{ ansible_user_dir }}/{{ item }}" |
| fstype: none |
| opts: rw,bind |
| state: mounted |
| with_items: |
| - service-profile |
| - xos |
| |
| - name: Create bindings for xos services |
| become: yes |
| mount: |
| src: "{{ cord_dest_dir }}/orchestration/xos_services/{{ item }}" |
| name: "{{ ansible_user_dir }}/xos_services/{{ item }}" |
| fstype: none |
| opts: rw,bind |
| state: mounted |
| with_items: |
| - exampleservice |
| - fabric |
| - globalxos |
| - hypercache |
| - metro-net |
| - monitoring |
| - onos-service |
| - openstack |
| - vrouter |
| - vsg |
| - vtr |
| |
| - name: Create bindings for xos services that reside in onos |
| become: yes |
| mount: |
| src: "{{ cord_dest_dir }}/onos-apps/apps/{{ item }}" |
| name: "{{ ansible_user_dir }}/xos_services/{{ item }}" |
| fstype: none |
| opts: rw,bind |
| state: mounted |
| with_items: |
| - vtn |
| - olt |
| |
| - name: Create bindings for xos libraries |
| become: yes |
| mount: |
| src: "{{ cord_dest_dir }}/orchestration/xos_libraries/{{ item }}" |
| name: "{{ ansible_user_dir }}/xos_libraries/{{ item }}" |
| fstype: none |
| opts: rw,bind |
| state: mounted |
| with_items: |
| - ng-xos-lib |
| |
| # ---- 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 }} |
| force=yes |
| when: |
| False |
| |
| # ---- 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: Copy over core api key |
| copy: |
| src: "{{ playbook_dir }}/pki/intermediate_ca/private/xos-core.{{ site_suffix }}_key.pem" |
| dest: "{{ service_profile_repo_dest }}/{{ xos_configuration }}/core_api_key.pem" |
| mode: 0600 |
| |
| - name: Copy over core api cert |
| copy: |
| src: "{{ playbook_dir }}/pki/intermediate_ca/certs/xos-core.{{ site_suffix }}_cert_chain.pem" |
| dest: "{{ service_profile_repo_dest }}/{{ xos_configuration }}/core_api_cert.pem" |
| |
| - name: Create templated TOSCA files |
| template: |
| src: "{{ item }}.j2" |
| dest: "{{ service_profile_repo_dest }}/{{ xos_configuration }}/{{ item }}" |
| with_items: "{{ xos_tosca_templates }}" |
| |
| - name: Download Glance VM images |
| get_url: |
| url={{ item.url }} |
| checksum={{ item.checksum }} |
| dest={{ service_profile_repo_dest }}/{{ xos_configuration }}/images/{{ item.name }}.qcow2 |
| 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 |
| - nginx |
| - node |
| 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 |
| - nginx |
| when: docker_registry_check|succeeded |
| |
| - name: Separately tag the node image with tag argon |
| command: docker tag {{ docker_registry }}/node:{{ docker_tag }} node:argon |
| when: docker_registry_check|succeeded |
| |
| |
| |
| |
| |