Merge "Require Ceph network parameters to be passed to deployed_ceph playbook"

This commit is contained in:
Zuul 2021-11-26 00:21:02 +00:00 committed by Gerrit Code Review
commit 37e713a6ab
3 changed files with 49 additions and 29 deletions

View File

@ -117,47 +117,35 @@
vars:
tripleo_cephadm_spec_on_bootstrap: false
tripleo_cephadm_spec_ansible_host: "{{ ceph_spec_path }}"
storage_network_name: Storage
storage_mgmt_network_name: StorageMgmt
tripleo_cephadm_bootstrap_host: "{{ inventory_hostname_short }}"
pre_tasks:
- name: ensure ceph_spec_path is defined
- name: Ensure ceph_spec_path is defined
set_fact:
ceph_spec_path: "{{ working_dir }}/generated_ceph_spec.yaml"
when:
- ceph_spec_path is undefined
- name: Ensure storage networks are in the inventory
- name: Ensure public_network and cluster_network are defined
fail:
msg: >
Both {{ storage_network_name }} and {{ storage_mgmt_network_name }}
should be in {{ networks }} but are not. If desired, override the
network name variables, e.g. -e storage_network_name=ctlplane
-e storage_mgmt_network_name=ctlplane
The following four variables must be passed to this playbook
public_network ({{ public_network }}) |
public_network_name ({{ public_network_name }}) |
cluster_network ({{ cluster_network }}) |
cluster_network_name ({{ cluster_network_name }})
when:
- storage_network_name not in networks or
storage_mgmt_network_name not in networks
vars:
networks: "{{ hostvars[inventory_hostname_short]['networks_all']
| union(['ctlplane']) | list | unique }}"
- (public_network is undefined or public_network | length == 0) or
(public_network_name is undefined or public_network_name | length == 0) or
(cluster_network is undefined or cluster_network | length == 0) or
(cluster_network_name is undefined or cluster_network_name | length == 0)
- name: Set Network Facts
- name: Set IP address of first monitor
set_fact:
tripleo_cephadm_bootstrap_host: "{{ inventory_hostname_short }}"
tripleo_cephadm_first_mon_ip: "{{ hv[netmap[storage_network_name] + '_ip'] }}"
storage_mgmt_network_ip: "{{ hv[netmap[storage_mgmt_network_name] + '_ip'] }}"
storage_network_cidr: "{{ hv[netmap[storage_network_name] + '_cidr'] }}"
storage_mgmt_network_cidr: "{{ hv[netmap[storage_mgmt_network_name] + '_cidr' ]}}"
tripleo_cephadm_first_mon_ip: "{{ hv[public_network_name + '_ip'] }}"
vars:
hv: "{{ hostvars[inventory_hostname_short] }}"
netmap: "{{ hostvars[inventory_hostname_short]['networks_lower'] }}"
- name: Set public and cluster networks
set_fact:
public_network: "{{ public | ansible.netcommon.ipaddr('network/prefix') }}"
cluster_network: "{{ private | ansible.netcommon.ipaddr('network/prefix') }}"
vars:
public: "{{ tripleo_cephadm_first_mon_ip }}/{{ storage_network_cidr }}"
private: "{{ storage_mgmt_network_ip }}/{{ storage_mgmt_network_cidr }}"
when:
- tripleo_cephadm_first_mon_ip is undefined
tasks:
- name: Satisfy Ceph prerequisites

View File

@ -103,7 +103,30 @@
become: true
when: tripleo_cephadm_spec_stat_host.stat.exists
- name: generate pre ceph.conf configuration file for initial bootstrap
- name: was a tripleo_cephadm_bootstrap_conf passed?
when:
- tripleo_cephadm_bootstrap_conf is defined
- tripleo_cephadm_bootstrap_conf | length > 0
block:
- name: stat tripleo_cephadm_bootstrap_conf file
stat:
path: "{{ tripleo_cephadm_bootstrap_conf }}"
register: stat_bootstrap_conf
become: true
delegate_to: localhost
ignore_errors: true
- name: push it to tripleo_cephadm_assimilate_conf on bootstrap node
copy:
src: "{{ tripleo_cephadm_bootstrap_conf }}"
dest: "{{ tripleo_cephadm_assimilate_conf }}"
owner: "{{ tripleo_cephadm_ssh_user }}"
group: "{{ tripleo_cephadm_ssh_user }}"
mode: '0644'
become: true
when: stat_bootstrap_conf.stat.exists
- name: generate tripleo_cephadm_assimilate_conf on bootstrap node
action: config_template
args:
src: "ceph.conf.j2"
@ -114,3 +137,6 @@
config_overrides: "{{ tripleo_cephadm_conf_overrides }}"
config_type: ini
become: true
when:
- tripleo_cephadm_bootstrap_conf is not defined or
tripleo_cephadm_bootstrap_conf | length == 0

View File

@ -18,6 +18,12 @@ public network = {{ public_network | regex_replace(' ', '') }}
{% if cluster_network is defined %}
cluster network = {{ cluster_network | regex_replace(' ', '') }}
{% endif %}
{% if ms_bind_ipv4 is defined %}
ms_bind_ipv4 = {{ ms_bind_ipv4 }}
{% endif %}
{% if ms_bind_ipv6 is defined %}
ms_bind_ipv6 = {{ ms_bind_ipv6 }}
{% endif %}
{# Build CephConfigOverrides #}
{% for key, value in (ceph_conf_overrides | default({})).items() %}