aboutsummaryrefslogtreecommitdiff
path: root/ansible/roles/octavia/tasks/config.yml
blob: 63910990c12c19cfe621b9c40c9838c247011253 (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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
---
- include_tasks: get_resources_info.yml
  when: octavia_auto_configure | bool

- name: Ensuring config directories exist
  file:
    path: "{{ node_config_directory }}/{{ item.key }}"
    state: "directory"
    owner: "{{ config_owner_user }}"
    group: "{{ config_owner_group }}"
    mode: "0770"
  become: true
  with_dict: "{{ octavia_services | select_services_enabled_and_mapped_to_host }}"

- name: Check if policies shall be overwritten
  stat:
    path: "{{ item }}"
  delegate_to: localhost
  run_once: True
  register: octavia_policy
  with_first_found:
    - files: "{{ supported_policy_format_list }}"
      paths:
        - "{{ node_custom_config }}/octavia/"
      skip: true

- name: Set octavia policy file
  set_fact:
    octavia_policy_file: "{{ octavia_policy.results.0.stat.path | basename }}"
    octavia_policy_file_path: "{{ octavia_policy.results.0.stat.path }}"
  when:
    - octavia_policy.results | length > 0

- name: Copying over existing policy file
  template:
    src: "{{ octavia_policy_file_path }}"
    dest: "{{ node_config_directory }}/{{ item.key }}/{{ octavia_policy_file }}"
    mode: "0660"
  become: true
  when:
    - octavia_policy_file is defined
  with_dict: "{{ octavia_services | select_services_enabled_and_mapped_to_host }}"

- include_tasks: copy-certs.yml
  when:
    - octavia_copy_certs | bool

- name: Copying over config.json files for services
  template:
    src: "{{ item.key }}.json.j2"
    dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
    mode: "0660"
  become: true
  with_dict: "{{ octavia_services | select_services_enabled_and_mapped_to_host }}"

- name: Copying over octavia-wsgi.conf
  vars:
    service: "{{ octavia_services['octavia-api'] }}"
  become: true
  template:
    src: "{{ item }}"
    dest: "{{ node_config_directory }}/octavia-api/octavia-wsgi.conf"
    mode: "0660"
  with_first_found:
    - "{{ node_custom_config }}/octavia/{{ inventory_hostname }}/octavia-wsgi.conf"
    - "{{ node_custom_config }}/octavia/octavia-wsgi.conf"
    - "octavia-wsgi.conf.j2"
  when:
    - service | service_enabled_and_mapped_to_host
    - octavia_wsgi_provider == "apache"

- name: "Configure uWSGI for Octavia"
  include_role:
    name: service-uwsgi-config
  vars:
    project_services: "{{ octavia_services }}"
    service: "{{ octavia_services['octavia-api'] }}"
    service_name: "octavia-api"
    service_uwsgi_config_http_port: "{{ octavia_api_listen_port }}"
    service_uwsgi_config_log_file_chmod: "644"
    service_uwsgi_config_module: "{{ service.wsgi }}"
    service_uwsgi_config_tls_backend: "{{ octavia_enable_tls_backend | bool }}"
    service_uwsgi_config_tls_cert: "/etc/octavia/certs/octavia-cert.pem"
    service_uwsgi_config_tls_key: "/etc/octavia/certs/octavia-key.pem"
    service_uwsgi_config_uid: "octavia"
  when:
    - service | service_enabled_and_mapped_to_host
    - octavia_wsgi_provider == "uwsgi"

- name: Copying over octavia.conf
  vars:
    service_name: "{{ item.key }}"
  merge_configs:
    sources:
      - "{{ role_path }}/templates/octavia.conf.j2"
      - "{{ node_custom_config }}/global.conf"
      - "{{ node_custom_config }}/octavia.conf"
      - "{{ node_custom_config }}/octavia/{{ item.key }}.conf"
      - "{{ node_custom_config }}/octavia/{{ inventory_hostname }}/octavia.conf"
    dest: "{{ node_config_directory }}/{{ item.key }}/octavia.conf"
    mode: "0660"
  become: true
  with_dict: "{{ octavia_services | select_services_enabled_and_mapped_to_host }}"

- block:

    - name: Copying over Octavia SSH key
      template:
        src: "octavia-ssh-key.j2"
        dest: "{{ node_config_directory }}/octavia-worker/{{ octavia_amp_ssh_key_name }}"
        owner: "{{ config_owner_user }}"
        group: "{{ config_owner_group }}"
        mode: "0400"
      become: True
      when:
        - inventory_hostname in groups[octavia_services['octavia-worker']['group']]
        - octavia_auto_configure | bool

    - name: Copying certificate files for octavia-worker
      vars:
        service: "{{ octavia_services['octavia-worker'] }}"
      copy:
        src: "{{ node_custom_config }}/octavia/{{ item }}"
        dest: "{{ node_config_directory }}/octavia-worker/{{ item }}"
        mode: "0660"
      become: true
      when: service | service_enabled_and_mapped_to_host
      with_items: "{{ octavia_amphora_keys }}"

    - name: Copying certificate files for octavia-housekeeping
      vars:
        service: "{{ octavia_services['octavia-housekeeping'] }}"
      copy:
        src: "{{ node_custom_config }}/octavia/{{ item }}"
        dest: "{{ node_config_directory }}/octavia-housekeeping/{{ item }}"
        mode: "0660"
      become: true
      when: service | service_enabled_and_mapped_to_host
      with_items: "{{ octavia_amphora_keys }}"

    - name: Copying certificate files for octavia-health-manager
      vars:
        service: "{{ octavia_services['octavia-health-manager'] }}"
      copy:
        src: "{{ node_custom_config }}/octavia/{{ item }}"
        dest: "{{ node_config_directory }}/octavia-health-manager/{{ item }}"
        mode: "0660"
      become: true
      when: service | service_enabled_and_mapped_to_host
      with_items: "{{ octavia_amphora_keys }}"

  when: "'amphora' in octavia_provider_drivers"
  vars:
    octavia_amphora_keys:
      - client.cert-and-key.pem
      - client_ca.cert.pem
      - server_ca.cert.pem
      - server_ca.key.pem