diff options
5 files changed, 115 insertions, 1 deletions
| diff --git a/playbooks/openstack/sample-inventory/group_vars/all.yml b/playbooks/openstack/sample-inventory/group_vars/all.yml index c7afe9a24..d63229120 100644 --- a/playbooks/openstack/sample-inventory/group_vars/all.yml +++ b/playbooks/openstack/sample-inventory/group_vars/all.yml @@ -7,6 +7,7 @@ openshift_openstack_dns_nameservers: []  # # - set custom hostnames for roles by uncommenting corresponding lines  #openshift_openstack_master_hostname: "master"  #openshift_openstack_infra_hostname: "infra-node" +#openshift_openstack_cns_hostname: "cns"  #openshift_openstack_node_hostname: "app-node"  #openshift_openstack_lb_hostname: "lb"  #openshift_openstack_etcd_hostname: "etcd" @@ -30,6 +31,7 @@ openshift_openstack_external_network_name: "public"  # # - note: do not remove openshift_openstack_default_image_name definition  #openshift_openstack_master_image_name: "centos7"  #openshift_openstack_infra_image_name: "centos7" +#openshift_openstack_cns_image_name: "centos7"  #openshift_openstack_node_image_name: "centos7"  #openshift_openstack_lb_image_name: "centos7"  #openshift_openstack_etcd_image_name: "centos7" @@ -37,6 +39,7 @@ openshift_openstack_default_image_name: "centos7"  openshift_openstack_num_masters: 1  openshift_openstack_num_infra: 1 +openshift_openstack_num_cns: 0  openshift_openstack_num_nodes: 2  # # Used Flavors @@ -44,6 +47,7 @@ openshift_openstack_num_nodes: 2  # # - note: do note remove openshift_openstack_default_flavor definition  #openshift_openstack_master_flavor: "m1.medium"  #openshift_openstack_infra_flavor: "m1.medium" +#openshift_openstack_cns_flavor: "m1.medium"  #openshift_openstack_node_flavor: "m1.medium"  #openshift_openstack_lb_flavor: "m1.medium"  #openshift_openstack_etcd_flavor: "m1.medium" @@ -57,6 +61,7 @@ openshift_openstack_default_flavor: "m1.medium"  # # - note: do not remove docker_default_volume_size definition  #openshift_openstack_docker_master_volume_size: "15"  #openshift_openstack_docker_infra_volume_size: "15" +#openshift_openstack_docker_cns_volume_size: "15"  #openshift_openstack_docker_node_volume_size: "15"  #openshift_openstack_docker_etcd_volume_size: "2"  #openshift_openstack_docker_lb_volume_size: "5" diff --git a/playbooks/openstack/sample-inventory/inventory.py b/playbooks/openstack/sample-inventory/inventory.py index ad3fd936b..084b5c0a0 100755 --- a/playbooks/openstack/sample-inventory/inventory.py +++ b/playbooks/openstack/sample-inventory/inventory.py @@ -42,7 +42,10 @@ def build_inventory():             if server.metadata['host-type'] == 'node' and             server.metadata['sub-host-type'] == 'app'] -    nodes = list(set(masters + infra_hosts + app)) +    cns = [server.name for server in cluster_hosts +           if server.metadata['host-type'] == 'cns'] + +    nodes = list(set(masters + infra_hosts + app + cns))      dns = [server.name for server in cluster_hosts             if server.metadata['host-type'] == 'dns'] @@ -59,6 +62,7 @@ def build_inventory():      inventory['nodes'] = {'hosts': nodes}      inventory['infra_hosts'] = {'hosts': infra_hosts}      inventory['app'] = {'hosts': app} +    inventory['glusterfs'] = {'hosts': cns}      inventory['dns'] = {'hosts': dns}      inventory['lb'] = {'hosts': load_balancers} @@ -93,6 +97,9 @@ def build_inventory():              hostvars['openshift_hostname'] = server.private_v4          hostvars['openshift_public_hostname'] = server.name +        if server.metadata['host-type'] == 'cns': +            hostvars['glusterfs_devices'] = ['/dev/nvme0n1'] +          node_labels = server.metadata.get('node_labels')          if node_labels:              hostvars['openshift_node_labels'] = node_labels diff --git a/roles/openshift_openstack/defaults/main.yml b/roles/openshift_openstack/defaults/main.yml index 65a647b8f..77be1f2b1 100644 --- a/roles/openshift_openstack/defaults/main.yml +++ b/roles/openshift_openstack/defaults/main.yml @@ -8,6 +8,7 @@ openshift_openstack_num_etcd: 0  openshift_openstack_num_masters: 1  openshift_openstack_num_nodes: 1  openshift_openstack_num_infra: 1 +openshift_openstack_num_cns: 0  openshift_openstack_dns_nameservers: []  openshift_openstack_nodes_to_remove: [] @@ -57,6 +58,7 @@ openshift_openstack_stack_name: "{{ openshift_openstack_clusterid }}.{{ openshif  openshift_openstack_subnet_prefix: "192.168.99"  openshift_openstack_master_hostname: master  openshift_openstack_infra_hostname: infra-node +openshift_openstack_cns_hostname: cns  openshift_openstack_node_hostname: app-node  openshift_openstack_lb_hostname: lb  openshift_openstack_etcd_hostname: etcd @@ -66,8 +68,10 @@ openshift_openstack_etcd_flavor: "{{ openshift_openstack_default_flavor }}"  openshift_openstack_master_flavor: "{{ openshift_openstack_default_flavor }}"  openshift_openstack_node_flavor: "{{ openshift_openstack_default_flavor }}"  openshift_openstack_infra_flavor: "{{ openshift_openstack_default_flavor }}" +openshift_openstack_cns_flavor: "{{ openshift_openstack_default_flavor }}"  openshift_openstack_master_image: "{{ openshift_openstack_default_image_name }}"  openshift_openstack_infra_image: "{{ openshift_openstack_default_image_name }}" +openshift_openstack_cns_image: "{{ openshift_openstack_default_image_name }}"  openshift_openstack_node_image: "{{ openshift_openstack_default_image_name }}"  openshift_openstack_lb_image: "{{ openshift_openstack_default_image_name }}"  openshift_openstack_etcd_image: "{{ openshift_openstack_default_image_name }}" @@ -84,6 +88,7 @@ openshift_openstack_infra_server_group_policies: []  openshift_openstack_docker_volume_size: 15  openshift_openstack_master_volume_size: "{{ openshift_openstack_docker_volume_size }}"  openshift_openstack_infra_volume_size: "{{ openshift_openstack_docker_volume_size }}" +openshift_openstack_cns_volume_size: "{{ openshift_openstack_docker_volume_size }}"  openshift_openstack_node_volume_size: "{{ openshift_openstack_docker_volume_size }}"  openshift_openstack_etcd_volume_size: 2  openshift_openstack_lb_volume_size: 5 diff --git a/roles/openshift_openstack/tasks/check-prerequisites.yml b/roles/openshift_openstack/tasks/check-prerequisites.yml index 30996cc47..1e487d434 100644 --- a/roles/openshift_openstack/tasks/check-prerequisites.yml +++ b/roles/openshift_openstack/tasks/check-prerequisites.yml @@ -91,6 +91,7 @@    with_items:    - "{{ openshift_openstack_master_image }}"    - "{{ openshift_openstack_infra_image }}" +  - "{{ openshift_openstack_cns_image }}"    - "{{ openshift_openstack_node_image }}"    - "{{ openshift_openstack_lb_image }}"    - "{{ openshift_openstack_etcd_image }}" @@ -100,6 +101,7 @@    with_items:    - "{{ openshift_openstack_master_flavor }}"    - "{{ openshift_openstack_infra_flavor }}" +  - "{{ openshift_openstack_cns_flavor }}"    - "{{ openshift_openstack_node_flavor }}"    - "{{ openshift_openstack_lb_flavor }}"    - "{{ openshift_openstack_etcd_flavor }}" diff --git a/roles/openshift_openstack/templates/heat_stack.yaml.j2 b/roles/openshift_openstack/templates/heat_stack.yaml.j2 index 8d13eb81e..1be5d3a62 100644 --- a/roles/openshift_openstack/templates/heat_stack.yaml.j2 +++ b/roles/openshift_openstack/templates/heat_stack.yaml.j2 @@ -419,6 +419,46 @@ resources:            port_range_min: 443            port_range_max: 443 +  cns-secgrp: +    type: OS::Neutron::SecurityGroup +    properties: +      name: +        str_replace: +          template: openshift-ansible-cluster_id-cns-secgrp +          params: +            cluster_id: {{ openshift_openstack_stack_name }} +      description: +        str_replace: +          template: Security group for cluster_id OpenShift cns cluster nodes +          params: +            cluster_id: {{ openshift_openstack_stack_name }} +      rules: +        # glusterfs_sshd +        - direction: ingress +          protocol: tcp +          port_range_min: 2222 +          port_range_max: 2222 +        # heketi dialing backends +        - direction: ingress +          protocol: tcp +          port_range_min: 10250 +          port_range_max: 10250 +        # glusterfs_management +        - direction: ingress +          protocol: tcp +          port_range_min: 24007 +          port_range_max: 24007 +        # glusterfs_rdma +        - direction: ingress +          protocol: tcp +          port_range_min: 24008 +          port_range_max: 24008 +        # glusterfs_bricks +        - direction: ingress +          protocol: tcp +          port_range_min: 49152 +          port_range_max: 49251 +  {% if openshift_openstack_num_masters|int > 1 %}    lb-secgrp:      type: OS::Neutron::SecurityGroup @@ -764,3 +804,58 @@ resources:      depends_on:        - interface  {% endif %} + +  cns: +    type: OS::Heat::ResourceGroup +    properties: +      count: {{ openshift_openstack_num_cns }} +      resource_def: +        type: server.yaml +        properties: +          name: +            str_replace: +              template: sub_type_k8s_type-%index%.cluster_id +              params: +                cluster_id: {{ openshift_openstack_stack_name }} +                sub_type_k8s_type: {{ openshift_openstack_cns_hostname }} +          cluster_env: {{ openshift_openstack_public_dns_domain }} +          cluster_id:  {{ openshift_openstack_stack_name }} +          group: +            str_replace: +              template: k8s_type.cluster_id +              params: +                k8s_type: cns +                cluster_id: {{ openshift_openstack_stack_name }} +          type:        cns +          image:       {{ openshift_openstack_cns_image }} +          flavor:      {{ openshift_openstack_cns_flavor }} +          key_name:    {{ openshift_openstack_keypair_name }} +{% if openshift_openstack_provider_network_name %} +          net:         {{ openshift_openstack_provider_network_name }} +          net_name:    {{ openshift_openstack_provider_network_name }} +{% else %} +          net:         { get_resource: net } +          subnet:      { get_resource: subnet } +          net_name: +            str_replace: +              template: openshift-ansible-cluster_id-net +              params: +                cluster_id: {{ openshift_openstack_stack_name }} +{% if openshift_use_flannel|default(False)|bool %} +          attach_data_net: true +          data_net:    { get_resource: data_net } +          data_subnet: { get_resource: data_subnet } +{% endif %} +{% endif %} +          secgrp: +{% if openshift_openstack_flat_secgrp|default(False)|bool %} +            - { get_resource: flat-secgrp } +{% else %} +            - { get_resource: node-secgrp } +{% endif %} +            - { get_resource: cns-secgrp } +            - { get_resource: common-secgrp } +{% if not openshift_openstack_provider_network_name %} +          floating_network: {{ openshift_openstack_external_network_name }} +{% endif %} +          volume_size: {{ openshift_openstack_cns_volume_size }} | 
