summaryrefslogtreecommitdiffstats
path: root/xci/infra/bifrost/playbooks/opnfv-virtual.yaml
blob: bb0daff61a3daeb2b4d192aaedca31002367b73c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# SPDX-license-identifier: Apache-2.0
##############################################################################
# Copyright (c) 2016 RedHat 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
##############################################################################
---
- hosts: localhost
  connection: local
  name: "Host and Ironic bootstrapping"
  become: yes
  gather_facts: yes
  pre_tasks:
    - name: Remove pre-existing leases file
      file: path=/var/lib/misc/dnsmasq.leases state=absent
    - name: "Override the ipv4_gateway setting"
      set_fact:
         ipv4_gateway: "192.168.122.1"
    - name: Prepare the XCI pre-built images
      block:
        - name: Create the PXE directory
          file:
            path: /httpboot
            state: directory
        - name: Download the {{ xci_distro }} image checksum file
          get_url:
            dest: /httpboot/deployment_image.qcow2.sha256.txt
            force: no
            url: http://artifacts.opnfv.org/releng/xci/images/{{ xci_distro }}.qcow2.sha256.txt
            timeout: 3000
        - name: Extract checksum
          shell: awk '{print $1}' /httpboot/deployment_image.qcow2.sha256.txt
          register: _image_checksum
        - fail:
            msg: "Failed to get image checksum"
          when: _image_checksum == ''
        - set_fact:
            image_checksum: "{{ _image_checksum.stdout }}"
        - name: Download the {{ xci_distro }} image file
          get_url:
            url: http://artifacts.opnfv.org/releng/xci/images/{{ xci_distro }}.qcow2
            checksum: "sha256:{{ image_checksum }}"
            timeout: 3000
            dest: /httpboot/deployment_image.qcow2
            force: no
        - name: Set correct mode for {{ xci_distro }}.qcow2 file
          file:
            path: /httpboot/deployment_image.qcow2
            mode: '0755'
            owner: 'root'
            group: 'root'
      when: use_prebuilt_images | bool == true

  roles:
    - role: bifrost-prep-for-install
      when: skip_install is not defined
    - role: bifrost-keystone-install
    - role: bifrost-ironic-install
      cleaning: false
      testing: true
    # NOTE(TheJulia): While the next step creates a ramdisk, some elements
    # do not support ramdisk-image-create as they invoke steps to cleanup
    # the ramdisk which causes ramdisk-image-create to believe it failed.
    - role: bifrost-create-dib-image
      dib_imagename: "{{ http_boot_folder }}/ipa"
      build_ramdisk: false
      dib_os_element: "{{ ipa_dib_os_element|default('debian') }}"
      dib_os_release: "jessie"
      dib_elements: "ironic-agent {{ ipa_extra_dib_elements | default('') }}"
      dib_notmpfs: true
      when:
        - create_ipa_image | bool == true
        - not use_prebuilt_images | bool == false
    - role: bifrost-create-dib-image
      dib_imagetype: "qcow2"
      dib_imagename: "{{deploy_image}}"
      dib_env_vars:
        DIB_PYTHON_VERSION: 2
      dib_os_element: "{{ lookup('env','DIB_OS_ELEMENT') }}"
      dib_os_release: "{{ lookup('env', 'DIB_OS_RELEASE') }}"
      extra_dib_elements: "{{ lookup('env', 'EXTRA_DIB_ELEMENTS') | default('') }}"
      dib_elements: "vm enable-serial-console simple-init devuser openssh-server growroot pip-and-virtualenv {{ extra_dib_elements }}"
      dib_packages: "{{ lookup('env', 'DIB_OS_PACKAGES') }}"
      dib_notmpfs: true
      when:
        - create_image_via_dib | bool == true
        - transform_boot_image | bool == false
        - use_prebuilt_images | bool == false
    - role: bifrost-keystone-client-config
      user: "{{ ansible_env.SUDO_USER }}"
      clouds:
        bifrost:
          config_username: "{{ ironic.keystone.default_username }}"
          config_password: "{{ ironic.keystone.default_password }}"
          config_project_name: "baremetal"
          config_region_name: "{{ keystone.bootstrap.region_name }}"
          config_auth_url: "{{ keystone.bootstrap.public_url }}"
  environment:
    http_proxy: "{{ lookup('env','http_proxy') }}"
    https_proxy: "{{ lookup('env','https_proxy') }}"
    no_proxy: "{{ lookup('env','no_proxy') }}"

- hosts: baremetal
  name: "Enrollment and Deployment"
  vars:
    multinode_testing: "{{ inventory_dhcp | bool == true }}"
  become: no
  connection: local
  gather_facts: yes
  pre_tasks:
    - name: "Override default bifrost DNS if we are behind a proxy"
      set_fact:
         ipv4_nameserver: "192.168.122.1"
      when: lookup('env','http_proxy') != ''
  roles:
    - role: ironic-enroll-dynamic
    - { role: ironic-inspect-node, when: inspect_nodes | default('false') | bool == true }
    - role: bifrost-configdrives-dynamic
    - role: bifrost-deploy-nodes-dynamic
  environment:
    http_proxy: "{{ lookup('env','http_proxy') }}"
    https_proxy: "{{ lookup('env','https_proxy') }}"
    no_proxy: "{{ lookup('env','no_proxy') }}"

- hosts: baremetal
  name: "Deploy machines."
  become: no
  connection: local
  serial: 1
  roles:
    - role: bifrost-prepare-for-test-dynamic