summaryrefslogtreecommitdiffstats
path: root/lib/ansible/playbooks/deploy_overcloud.yml
blob: 18ddab48d9ccb48c8a14091792d5832965c41b3b (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
---
- hosts: all
  tasks:
    - name: Copy all files to undercloud
      copy:
        src: "{{ apex_temp_dir }}/{{ item }}"
        dest: "/home/stack/{{ item }}"
        owner: stack
        group: stack
        mode: 0644
      with_items:
        - network-environment.yaml
        - instackenv.json
        - overcloud-full.qcow2
        - deploy_command
        - virtual-environment.yaml
        - baremetal-environment.yaml
        - "{{ apex_env_file }}"
    - name: Copy network data to undercloud
      copy:
        src: "{{ apex_temp_dir }}/network_data.yaml"
        dest: "/home/stack/network_data.yaml"
        owner: stack
        group: stack
        mode: 0644
      when: os_version != 'ocata'
    - copy:
        src: "{{ apex_temp_dir }}/storage-environment.yaml"
        dest: /usr/share/openstack-tripleo-heat-templates/environments/storage-environment.yaml
        owner: root
        group: root
        mode: 0664
    - copy:
        src: "{{ apex_temp_dir }}/neutron-opendaylight-sriov.yaml"
        dest: /usr/share/openstack-tripleo-heat-templates/environments/neutron-opendaylight-sriov.yaml
        owner: root
        group: root
        mode: 0664
    - systemd:
        name: openstack-swift-proxy
        state: restarted
        enabled: yes
      become: yes
    - name: Workaround to downgrade pacemaker (LP#1770692)
      block:
        - name: Pull haproxy container
          shell: docker pull {{ undercloud_ip }}:8787/tripleo{{ os_version }}/centos-binary-haproxy:current-tripleo-rdo
        - name: Find container pacemaker version
          shell: docker run {{ undercloud_ip }}:8787/tripleo{{ os_version }}/centos-binary-haproxy:current-tripleo-rdo /bin/rpm -q pacemaker
          register: pcs_version
        - name: Create centos74 repo (contains older pacemaker)
          copy:
            dest: /tmp/centos74.repo
            content: |
              [centos74-updates]
              name=CentOS-74 - Updates
              baseurl=http://mirror.centos.org/centos/7.4.1708/updates/$basearch/
              gpgcheck=1
              gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
              enabled=1
            mode: 0644
        - name: Install container pacemaker version to overcloud image
          shell: >
            LIBGUESTFS_BACKEND=direct virt-customize -a /home/stack/overcloud-full.qcow2
            --upload /tmp/centos74.repo:/etc/yum.repos.d/
            --run-command "yum remove -y pacemaker-cluster-libs pacemaker-libs pacemaker pacemaker-cli"
            --run-command "yum install -y {{ pcs_version.stdout }}" -v
            --install "pcs"
      become: yes
      when: ha_enabled
    - name: Remove Ceph OSD from ceph storage role
      lineinfile:
        path: /usr/share/openstack-tripleo-heat-templates/roles_data.yaml
        line: '    - OS::TripleO::Services::CephOSD'
        owner: root
        group: root
        state: absent
      become: yes
    - name: Insert Ceph OSDs into Compute role
      lineinfile:
        path: /usr/share/openstack-tripleo-heat-templates/roles_data.yaml
        insertbefore:  '^\s*-\sOS::TripleO::Services::NovaCompute$'
        line: '    - OS::TripleO::Services::CephOSD'
        owner: root
        group: root
      become: yes
    - name: Upload glance images
      shell: "{{ stackrc }} && openstack overcloud image upload"
      become: yes
      become_user: stack
    - name: Import inventory (baremetal)
      shell: "{{ stackrc }} && openstack overcloud node import instackenv.json"
      when: introspect
    - name: Introspect inventory (baremetal)
      shell: "{{ stackrc }} && openstack overcloud node introspect --all-manageable --provide"
      when: introspect
    - name: Import inventory (virtual)
      shell: "{{ stackrc }} && openstack overcloud node import --provide instackenv.json"
      when: not introspect
    - name: Set flavors
      shell: '{{ stackrc }} && openstack flavor set --property "cpu_arch"="{{ ansible_architecture }}" {{ item }}'
      with_items:
        - baremetal
        - control
        - compute
    - name: Configure DNS server for ctlplane network
      shell: "{{ stackrc }} && openstack subnet set ctlplane-subnet {{ dns_server_args }}"
    - block:
        - name: Execute Overcloud Deployment
          shell: "{{ stackrc }} && bash deploy_command"

      rescue:
        - name: Show overcloud failures
          shell: "{{ stackrc }} && openstack stack failures list overcloud --long"
      become: yes
      become_user: stack
    - name: Show Keystone output
      shell: "{{ overcloudrc }} && {{ item }}"
      when: debug
      with_items:
        - openstack endpoint list
        - openstack service list
    - name: Get overcloud nodes and IPs
      shell: "{{ stackrc }} && openstack server list -f json"
      register: nova_list
    - name: Write nova list output to file
      local_action: copy content="{{ nova_list.stdout }}" dest="{{ apex_temp_dir }}/nova_output"
    - name: Fetch overcloudrc
      fetch:
        src: /home/stack/overcloudrc
        dest: "{{ apex_temp_dir }}/"
        flat: yes