diff options
| -rw-r--r-- | README_GCE.md | 2 | ||||
| -rw-r--r-- | roles/openshift_examples/defaults/main.yml | 4 | ||||
| -rwxr-xr-x | roles/openshift_examples/examples-sync.sh | 2 | ||||
| -rw-r--r-- | roles/openshift_examples/files/examples/v1.2/image-streams/dotnet_imagestreams.json | 36 | ||||
| -rw-r--r-- | roles/openshift_examples/files/examples/v1.3/image-streams/dotnet_imagestreams.json | 36 | ||||
| -rw-r--r-- | roles/openshift_examples/tasks/main.yml | 11 | ||||
| -rw-r--r-- | utils/src/ooinstall/cli_installer.py | 3 | ||||
| -rw-r--r-- | utils/src/ooinstall/openshift_ansible.py | 108 | ||||
| -rw-r--r-- | utils/test/cli_installer_tests.py | 10 | 
9 files changed, 135 insertions, 77 deletions
diff --git a/README_GCE.md b/README_GCE.md index df9942f24..f909630aa 100644 --- a/README_GCE.md +++ b/README_GCE.md @@ -86,6 +86,8 @@ Install Dependencies    yum install -y ansible python-libcloud  ``` +> Installation using Mac OSX requires pycrypto library +> $ pip install pycrypto  Test The Setup  -------------- diff --git a/roles/openshift_examples/defaults/main.yml b/roles/openshift_examples/defaults/main.yml index 0f5189974..a15285417 100644 --- a/roles/openshift_examples/defaults/main.yml +++ b/roles/openshift_examples/defaults/main.yml @@ -11,7 +11,9 @@ content_version: "{{ openshift.common.examples_content_version }}"  examples_base: "{{ openshift.common.config_base if openshift.common.is_containerized | bool else '/usr/share/openshift' }}/examples"  image_streams_base: "{{ examples_base }}/image-streams"  centos_image_streams: "{{ image_streams_base}}/image-streams-centos7.json" -rhel_image_streams: "{{ image_streams_base}}/image-streams-rhel7.json" +rhel_image_streams: + - "{{ image_streams_base}}/image-streams-rhel7.json" + - "{{ image_streams_base}}/dotnet_imagestreams.json"  db_templates_base: "{{ examples_base }}/db-templates"  xpaas_image_streams: "{{ examples_base }}/xpaas-streams/"  xpaas_templates_base: "{{ examples_base }}/xpaas-templates" diff --git a/roles/openshift_examples/examples-sync.sh b/roles/openshift_examples/examples-sync.sh index ff53a0a4f..236717203 100755 --- a/roles/openshift_examples/examples-sync.sh +++ b/roles/openshift_examples/examples-sync.sh @@ -39,7 +39,7 @@ cp cakephp-ex-master/openshift/templates/* ${EXAMPLES_BASE}/quickstart-templates  mv application-templates-${XPAAS_VERSION}/jboss-image-streams.json ${EXAMPLES_BASE}/xpaas-streams/  find application-templates-${XPAAS_VERSION}/ -name '*.json' ! -wholename '*secret*' ! -wholename '*demo*' -exec mv {} ${EXAMPLES_BASE}/xpaas-templates/ \;  wget https://raw.githubusercontent.com/jboss-fuse/application-templates/master/fis-image-streams.json          -O ${EXAMPLES_BASE}/xpaas-streams/fis-image-streams.json - +wget https://raw.githubusercontent.com/redhat-developer/s2i-dotnetcore/master/dotnet_imagestreams.json         -O ${EXAMPLES_BASE}/image-streams/dotnet_imagestreams.json  wget https://raw.githubusercontent.com/openshift/origin-metrics/master/metrics.yaml                            -O ${EXAMPLES_BASE}/infrastructure-templates/origin/metrics-deployer.yaml  wget https://raw.githubusercontent.com/openshift/origin-metrics/enterprise/metrics.yaml                        -O ${EXAMPLES_BASE}/infrastructure-templates/enterprise/metrics-deployer.yaml  wget https://raw.githubusercontent.com/openshift/origin-aggregated-logging/master/deployer/deployer.yaml     -O ${EXAMPLES_BASE}/infrastructure-templates/origin/logging-deployer.yaml diff --git a/roles/openshift_examples/files/examples/v1.2/image-streams/dotnet_imagestreams.json b/roles/openshift_examples/files/examples/v1.2/image-streams/dotnet_imagestreams.json new file mode 100644 index 000000000..3d7afe4aa --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.2/image-streams/dotnet_imagestreams.json @@ -0,0 +1,36 @@ +{ +    "kind": "List", +    "apiVersion": "v1", +    "metadata": { +        "name": "dotnet-image-streams", +        "annotations": { +            "description": "ImageStream definitions for .Net Core on RHEL" +        } +    }, +    "items": [ +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "dotnetcore-10-rhel7" +            }, +            "spec": { +                "dockerImageRepository": "registry.access.redhat.com/dotnet/dotnetcore-10-rhel7", +                "tags": [ +                    { +                        "name": "1.0", +                        "annotations": { +                            "description": ".Net Core 1.0 S2I image.", +                            "iconClass": "icon-dotnet", +                            "tags": "builder,.net,dotnet,dotnetcore,rh-dotnetcore10", +                            "supports":"dotnet:1.0", +                            "sampleRepo": "https://github.com/redhat-developer/s2i-dotnetcore.git", +                            "sampleContextDir": "1.0/test/asp-net-hello-world", +                            "version": "1.0" +                        } +                    } +                ] +            } +        } +    ] +} diff --git a/roles/openshift_examples/files/examples/v1.3/image-streams/dotnet_imagestreams.json b/roles/openshift_examples/files/examples/v1.3/image-streams/dotnet_imagestreams.json new file mode 100644 index 000000000..3d7afe4aa --- /dev/null +++ b/roles/openshift_examples/files/examples/v1.3/image-streams/dotnet_imagestreams.json @@ -0,0 +1,36 @@ +{ +    "kind": "List", +    "apiVersion": "v1", +    "metadata": { +        "name": "dotnet-image-streams", +        "annotations": { +            "description": "ImageStream definitions for .Net Core on RHEL" +        } +    }, +    "items": [ +        { +            "kind": "ImageStream", +            "apiVersion": "v1", +            "metadata": { +                "name": "dotnetcore-10-rhel7" +            }, +            "spec": { +                "dockerImageRepository": "registry.access.redhat.com/dotnet/dotnetcore-10-rhel7", +                "tags": [ +                    { +                        "name": "1.0", +                        "annotations": { +                            "description": ".Net Core 1.0 S2I image.", +                            "iconClass": "icon-dotnet", +                            "tags": "builder,.net,dotnet,dotnetcore,rh-dotnetcore10", +                            "supports":"dotnet:1.0", +                            "sampleRepo": "https://github.com/redhat-developer/s2i-dotnetcore.git", +                            "sampleContextDir": "1.0/test/asp-net-hello-world", +                            "version": "1.0" +                        } +                    } +                ] +            } +        } +    ] +} diff --git a/roles/openshift_examples/tasks/main.yml b/roles/openshift_examples/tasks/main.yml index d80e7f086..4150fabec 100644 --- a/roles/openshift_examples/tasks/main.yml +++ b/roles/openshift_examples/tasks/main.yml @@ -49,8 +49,10 @@  # RHEL and Centos image streams are mutually exclusive  - name: Import RHEL streams    command: > -    {{ openshift.common.client_binary }} {{ openshift_examples_import_command }} -n openshift -f {{ rhel_image_streams }} +    {{ openshift.common.client_binary }} {{ openshift_examples_import_command }} -n openshift -f {{ item }}    when: openshift_examples_load_rhel | bool +  with_items: +    - "{{ rhel_image_streams }}"    register: oex_import_rhel_streams    failed_when: "'already exists' not in oex_import_rhel_streams.stderr and oex_import_rhel_streams.rc != 0"    changed_when: false @@ -100,12 +102,15 @@      path: "{{ item }}"      state: absent    with_items: -    - "{{ xpaas_templates }}/sso70-basic.json" +    - "{{ xpaas_templates_base }}/sso70-basic.json"  - name: Remove old xPaas templates from openshift namespace -  command: oc delete -n openshift {{ item }} +  command: "{{ openshift.common.client_binary }} -n openshift delete templates/{{ item }}"    with_items:      - sso70-basic +  register: oex_delete_old_xpaas_templates +  failed_when: "'not found' not in oex_delete_old_xpaas_templates.stderr and oex_delete_old_xpaas_templates.rc != 0" +  changed_when: false  - name: Import xPaas image streams    command: > diff --git a/utils/src/ooinstall/cli_installer.py b/utils/src/ooinstall/cli_installer.py index 9fbb61a46..b9750fad1 100644 --- a/utils/src/ooinstall/cli_installer.py +++ b/utils/src/ooinstall/cli_installer.py @@ -121,7 +121,7 @@ http://docs.openshift.com/enterprise/latest/architecture/infrastructure_componen      click.echo(message)      hosts = [] -    roles = set(['master', 'node', 'storage']) +    roles = set(['master', 'node', 'storage', 'etcd'])      more_hosts = True      num_masters = 0      while more_hosts: @@ -133,6 +133,7 @@ http://docs.openshift.com/enterprise/latest/architecture/infrastructure_componen          if not masters_set:              if click.confirm('Will this host be an OpenShift Master?'):                  host_props['roles'].append('master') +                host_props['roles'].append('etcd')                  num_masters += 1                  if oo_cfg.settings['variant_version'] == '3.0': diff --git a/utils/src/ooinstall/openshift_ansible.py b/utils/src/ooinstall/openshift_ansible.py index bcf06b599..54178f0cd 100644 --- a/utils/src/ooinstall/openshift_ansible.py +++ b/utils/src/ooinstall/openshift_ansible.py @@ -1,5 +1,3 @@ -# TODO: Temporarily disabled due to importing old code into openshift-ansible -# repo. We will work on these over time.  # pylint: disable=bad-continuation,missing-docstring,no-self-use,invalid-name,global-statement,global-variable-not-assigned  import socket @@ -14,7 +12,9 @@ CFG = None  ROLES_TO_GROUPS_MAP = {      'master': 'masters',      'node': 'nodes', -    'storage': 'nfs' +    'etcd': 'etcd', +    'storage': 'nfs', +    'master_lb': 'lb'  }  VARIABLES_MAP = { @@ -34,75 +34,52 @@ def set_config(cfg):  def generate_inventory(hosts):      global CFG +      masters = [host for host in hosts if host.is_master()] -    nodes = [host for host in hosts if host.is_node()] -    new_nodes = [host for host in hosts if host.is_node() and host.new_host] -    proxy = determine_proxy_configuration(hosts) -    storage = determine_storage_configuration(hosts)      multiple_masters = len(masters) > 1 + +    new_nodes = [host for host in hosts if host.is_node() and host.new_host]      scaleup = len(new_nodes) > 0 +    lb = determine_lb_configuration(hosts) +      base_inventory_path = CFG.settings['ansible_inventory_path']      base_inventory = open(base_inventory_path, 'w') -    write_inventory_children(base_inventory, multiple_masters, proxy, scaleup) - -    write_inventory_vars(base_inventory, multiple_masters, proxy) - - - -    base_inventory.write('\n[masters]\n') -    for master in masters: -        write_host(master, base_inventory) - -    if len(masters) > 1: -        base_inventory.write('\n[etcd]\n') -        for master in masters: -            write_host(master, base_inventory) +    write_inventory_children(base_inventory, scaleup) -    base_inventory.write('\n[nodes]\n') +    write_inventory_vars(base_inventory, multiple_masters, lb) -    for node in nodes: -        # Let the fact defaults decide if we're not a master: -        schedulable = None - -        # If the node is also a master, we must explicitly set schedulablity: -        if node.is_master(): -            schedulable = node.is_schedulable_node(hosts) -        write_host(node, base_inventory, schedulable) - -    if not getattr(proxy, 'preconfigured', True): -        base_inventory.write('\n[lb]\n') -        write_host(proxy, base_inventory) +    #write_inventory_hosts +    for role in CFG.deployment.roles: +        # write group block +        group = ROLES_TO_GROUPS_MAP.get(role, role) +        base_inventory.write("\n[{}]\n".format(group)) +        # write each host +        group_hosts = [host for host in hosts if role in host.roles] +        for host in group_hosts: +            schedulable = host.is_schedulable_node(hosts) +            write_host(host, role, base_inventory, schedulable)      if scaleup:          base_inventory.write('\n[new_nodes]\n')          for node in new_nodes: -            write_host(node, base_inventory) - -    if storage: -        base_inventory.write('\n[nfs]\n') -        write_host(storage, base_inventory) +            write_host(node, 'new_nodes', base_inventory)      base_inventory.close()      return base_inventory_path -def determine_proxy_configuration(hosts): -    proxy = next((host for host in hosts if host.is_master_lb()), None) -    if proxy: -        if proxy.hostname == None: -            proxy.hostname = proxy.connect_to -            proxy.public_hostname = proxy.connect_to - -    return proxy +def determine_lb_configuration(hosts): +    lb = next((host for host in hosts if host.is_master_lb()), None) +    if lb: +        if lb.hostname == None: +            lb.hostname = lb.connect_to +            lb.public_hostname = lb.connect_to -def determine_storage_configuration(hosts): -    storage = next((host for host in hosts if host.is_storage()), None) +    return lb -    return storage - -def write_inventory_children(base_inventory, multiple_masters, proxy, scaleup): +def write_inventory_children(base_inventory, scaleup):      global CFG      base_inventory.write('\n[OSEv3:children]\n') @@ -112,13 +89,10 @@ def write_inventory_children(base_inventory, multiple_masters, proxy, scaleup):      if scaleup:          base_inventory.write('new_nodes\n') -    if multiple_masters: -        base_inventory.write('etcd\n') -    if not getattr(proxy, 'preconfigured', True): -        base_inventory.write('lb\n') +  # pylint: disable=too-many-branches -def write_inventory_vars(base_inventory, multiple_masters, proxy): +def write_inventory_vars(base_inventory, multiple_masters, lb):      global CFG      base_inventory.write('\n[OSEv3:vars]\n') @@ -135,11 +109,11 @@ def write_inventory_vars(base_inventory, multiple_masters, proxy):      if CFG.settings['ansible_ssh_user'] != 'root':          base_inventory.write('ansible_become=yes\n') -    if multiple_masters and proxy is not None: +    if multiple_masters and lb is not None:          base_inventory.write('openshift_master_cluster_method=native\n') -        base_inventory.write("openshift_master_cluster_hostname={}\n".format(proxy.hostname)) +        base_inventory.write("openshift_master_cluster_hostname={}\n".format(lb.hostname))          base_inventory.write( -            "openshift_master_cluster_public_hostname={}\n".format(proxy.public_hostname)) +            "openshift_master_cluster_public_hostname={}\n".format(lb.public_hostname))      if CFG.settings.get('variant_version', None) == '3.1':          #base_inventory.write('openshift_image_tag=v{}\n'.format(CFG.settings.get('variant_version'))) @@ -195,9 +169,12 @@ def write_proxy_settings(base_inventory):  # pylint: disable=too-many-branches -def write_host(host, inventory, schedulable=None): +def write_host(host, role, inventory, schedulable=None):      global CFG +    if host.preconfigured: +        return +      facts = ''      if host.ip:          facts += ' openshift_ip={}'.format(host.ip) @@ -215,14 +192,13 @@ def write_host(host, inventory, schedulable=None):      if host.node_labels:          facts += ' openshift_node_labels="{}"'.format(host.node_labels) +      # Distinguish between three states, no schedulability specified (use default),      # explicitly set to True, or explicitly set to False: -    if schedulable is None: +    if role != 'node' or schedulable is None:          pass -    elif schedulable: -        facts += ' openshift_schedulable=True' -    elif not schedulable: -        facts += ' openshift_schedulable=False' +    else: +        facts += " openshift_schedulable={}".format(schedulable)      installer_host = socket.gethostname()      if installer_host in [host.connect_to, host.hostname, host.public_hostname]: diff --git a/utils/test/cli_installer_tests.py b/utils/test/cli_installer_tests.py index 13973f22f..d79163e91 100644 --- a/utils/test/cli_installer_tests.py +++ b/utils/test/cli_installer_tests.py @@ -815,9 +815,9 @@ class AttendedCliTests(OOCliFixture):          self.assert_inventory_host_var(inventory, 'nodes', '10.0.0.1',                                   'openshift_schedulable=False')          self.assert_inventory_host_var_unset(inventory, 'nodes', '10.0.0.2', -                                 'openshift_schedulable') +                                 'openshift_schedulable=True')          self.assert_inventory_host_var_unset(inventory, 'nodes', '10.0.0.3', -                                 'openshift_schedulable') +                                 'openshift_schedulable=True')      # interactive with config file and some installed some uninstalled hosts      @patch('ooinstall.openshift_ansible.run_main_playbook') @@ -939,7 +939,7 @@ class AttendedCliTests(OOCliFixture):          self.assert_inventory_host_var(inventory, 'nodes', '10.0.0.3',                                         'openshift_schedulable=False')          self.assert_inventory_host_var_unset(inventory, 'nodes', '10.0.0.4', -                                             'openshift_schedulable') +                                             'openshift_schedulable=True')          self.assertTrue(inventory.has_section('etcd'))          self.assertEquals(3, len(inventory.items('etcd'))) @@ -1122,9 +1122,9 @@ class AttendedCliTests(OOCliFixture):          self.assert_inventory_host_var(inventory, 'nodes', '10.0.0.1',                                   'openshift_schedulable=False')          self.assert_inventory_host_var_unset(inventory, 'nodes', '10.0.0.2', -                                 'openshift_schedulable') +                                 'openshift_schedulable=True')          self.assert_inventory_host_var_unset(inventory, 'nodes', '10.0.0.3', -                                 'openshift_schedulable') +                                 'openshift_schedulable=True')  # TODO: test with config file, attended add node  | 
