Deploy OpenShift using OOO on the overcloud
Add external_deploy_tasks for OpenShift installation. This makes OpenShift installation work with the config download mechanism. Co-Authored-By: Jiri Stransky <jistr@redhat.com> Depends-On: I9786f1a27cb7c765211dffe0ea06afd75f8e5275 Change-Id: I4c995dcfd97b5c9ccb751862ff77ab785ad0ac5b
This commit is contained in:
parent
465ec1d909
commit
8dd99ba7fd
55
ci/environments/scenario009-multinode.yaml
Normal file
55
ci/environments/scenario009-multinode.yaml
Normal file
@ -0,0 +1,55 @@
|
||||
resource_registry:
|
||||
OS::TripleO::Controller::Net::SoftwareConfig: ../common/net-config-multinode.yaml
|
||||
OS::TripleO::Compute::Net::SoftwareConfig: ../common/net-config-multinode.yaml
|
||||
OS::TripleO::Services::SwiftProxy: OS::Heat::None
|
||||
OS::TripleO::Services::SwiftStorage: OS::Heat::None
|
||||
OS::TripleO::Services::SwiftRingBuilder: OS::Heat::None
|
||||
OS::TripleO::Services::Keystone: OS::Heat::None
|
||||
OS::TripleO::Services::GlanceApi: OS::Heat::None
|
||||
OS::TripleO::Services::MySQL: OS::Heat::None
|
||||
OS::TripleO::Services::MySQLClient: OS::Heat::None
|
||||
OS::TripleO::Services::NeutronBgpVpnApi: OS::Heat::None
|
||||
OS::TripleO::Services::NeutronDhcpAgent: OS::Heat::None
|
||||
OS::TripleO::Services::NeutronL3Agent: OS::Heat::None
|
||||
OS::TripleO::Services::NeutronMetadataAgent: OS::Heat::None
|
||||
OS::TripleO::Services::NeutronServer: OS::Heat::None
|
||||
OS::TripleO::Services::NeutronCorePlugin: OS::Heat::None
|
||||
OS::TripleO::Services::NeutronOvsAgent: OS::Heat::None
|
||||
OS::TripleO::Services::RabbitMQ: OS::Heat::None
|
||||
OS::TripleO::Services::HAproxy: OS::Heat::None
|
||||
OS::TripleO::Services::Keepalived: OS::Heat::None
|
||||
OS::TripleO::Services::Memcached: OS::Heat::None
|
||||
OS::TripleO::Services::NovaConductor: OS::Heat::None
|
||||
OS::TripleO::Services::NovaApi: OS::Heat::None
|
||||
OS::TripleO::Services::NovaPlacement: OS::Heat::None
|
||||
OS::TripleO::Services::NovaMetadata: OS::Heat::None
|
||||
OS::TripleO::Services::NovaScheduler: OS::Heat::None
|
||||
OS::TripleO::Services::NovaCompute: OS::Heat::None
|
||||
OS::TripleO::Services::NovaLibvirt: OS::Heat::None
|
||||
OS::TripleO::Services::Docker: ../../puppet/services/docker.yaml
|
||||
|
||||
|
||||
|
||||
parameter_defaults:
|
||||
ControllerServices:
|
||||
- OS::TripleO::Services::Docker
|
||||
- OS::TripleO::Services::Kernel
|
||||
- OS::TripleO::Services::Ntp
|
||||
- OS::TripleO::Services::Snmp
|
||||
- OS::TripleO::Services::Timezone
|
||||
- OS::TripleO::Services::TripleoPackages
|
||||
- OS::TripleO::Services::TripleoFirewall
|
||||
- OS::TripleO::Services::Sshd
|
||||
- OS::TripleO::Services::OpenShift::Master
|
||||
- OS::TripleO::Services::OpenShift::Worker
|
||||
ComputeServices:
|
||||
- OS::TripleO::Services::Docker
|
||||
- OS::TripleO::Services::Kernel
|
||||
- OS::TripleO::Services::Ntp
|
||||
- OS::TripleO::Services::Snmp
|
||||
- OS::TripleO::Services::Timezone
|
||||
- OS::TripleO::Services::TripleoPackages
|
||||
- OS::TripleO::Services::TripleoFirewall
|
||||
- OS::TripleO::Services::Sshd
|
||||
- OS::TripleO::Services::OpenShift::Worker
|
||||
Debug: true
|
4
environments/openshift.yaml
Normal file
4
environments/openshift.yaml
Normal file
@ -0,0 +1,4 @@
|
||||
resource_registry:
|
||||
OS::TripleO::Services::Docker: ../puppet/services/docker.yaml
|
||||
OS::TripleO::Services::OpenShift::Worker: ../extraconfig/services/openshift-worker.yaml
|
||||
OS::TripleO::Services::OpenShift::Master: ../extraconfig/services/openshift-master.yaml
|
176
extraconfig/services/openshift-master.yaml
Normal file
176
extraconfig/services/openshift-master.yaml
Normal file
@ -0,0 +1,176 @@
|
||||
heat_template_version: ocata
|
||||
|
||||
description: External tasks definition for OpenShift
|
||||
|
||||
parameters:
|
||||
RoleNetIpMap:
|
||||
default: {}
|
||||
type: json
|
||||
ServiceData:
|
||||
default: {}
|
||||
description: Dictionary packing service data
|
||||
type: json
|
||||
ServiceNetMap:
|
||||
default: {}
|
||||
description: Mapping of service_name -> network name. Typically set
|
||||
via parameter_defaults in the resource registry. This
|
||||
mapping overrides those in ServiceNetMapDefaults.
|
||||
type: json
|
||||
DefaultPasswords:
|
||||
default: {}
|
||||
type: json
|
||||
RoleName:
|
||||
default: ''
|
||||
description: Role name on which the service is applied
|
||||
type: string
|
||||
RoleParameters:
|
||||
default: {}
|
||||
description: Parameters specific to the role
|
||||
type: json
|
||||
EndpointMap:
|
||||
default: {}
|
||||
description: Mapping of service endpoint -> protocol. Typically set
|
||||
via parameter_defaults in the resource registry.
|
||||
type: json
|
||||
|
||||
outputs:
|
||||
role_data:
|
||||
description: Role data for the Openshift Service
|
||||
value:
|
||||
service_name: openshift_master
|
||||
config_settings:
|
||||
tripleo.openshift_master.firewall_rules:
|
||||
'200 openshift-master api':
|
||||
dport: 6443
|
||||
proto: tcp
|
||||
'200 openshift-master etcd':
|
||||
dport:
|
||||
- 2379
|
||||
- 2380
|
||||
proto: tcp
|
||||
upgrade_tasks: []
|
||||
step_config: ''
|
||||
external_deploy_tasks:
|
||||
- name: openshift_master step 2
|
||||
when: step == '2'
|
||||
block:
|
||||
- name: create openshift temp dirs
|
||||
file:
|
||||
path: "{{item}}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{playbook_dir}}/openshift"
|
||||
- name: generate openshift inventory
|
||||
copy:
|
||||
dest: "{{playbook_dir}}/openshift/inventory.yml"
|
||||
content: |
|
||||
masters:
|
||||
hosts:
|
||||
{% for host in groups['openshift_master'] -%}
|
||||
{{ hostvars.raw_get(host)['ansible_hostname'] }}:
|
||||
ansible_user: {{ hostvars.raw_get(host)['ansible_user'] | default(hostvars.raw_get(host)['ansible_ssh_user']) | default('root') }}
|
||||
ansible_host: {{ hostvars.raw_get(host)['ansible_host'] | default(host) }}
|
||||
ansible_become: true
|
||||
{% endfor %}
|
||||
|
||||
nodes:
|
||||
hosts:
|
||||
{% for host in groups['openshift_worker'] -%}
|
||||
{{ hostvars.raw_get(host)['ansible_hostname'] }}:
|
||||
ansible_user: {{ hostvars.raw_get(host)['ansible_user'] | default(hostvars.raw_get(host)['ansible_ssh_user']) | default('root') }}
|
||||
ansible_host: {{ hostvars.raw_get(host)['ansible_host'] | default(host) }}
|
||||
ansible_become: true
|
||||
{% endfor %}
|
||||
|
||||
etcd:
|
||||
children:
|
||||
masters: {}
|
||||
|
||||
OSEv3:
|
||||
children:
|
||||
masters: {}
|
||||
nodes: {}
|
||||
|
||||
- name: generate openshift global vars
|
||||
copy:
|
||||
dest: "{{playbook_dir}}/openshift/global_vars.yml"
|
||||
content: |
|
||||
containerized: true
|
||||
openshift_master_cluster_method: native
|
||||
openshift_use_dnsmasq: true
|
||||
openshift_deployment_type: origin
|
||||
openshift_release: '3.6'
|
||||
openshift_image_tag: v3.6.1
|
||||
enable_excluders: false
|
||||
openshift_docker_selinux_enabled: false
|
||||
osm_etcd_image: "registry.fedoraproject.org/f27/etcd"
|
||||
# NOTE(flaper87): Needed for the gate
|
||||
openshift_disable_check: disk_availability,docker_storage,memory_availability,docker_image_availability
|
||||
skip_ovs_svc_handlers: true
|
||||
|
||||
- name: generate openshift playbook
|
||||
copy:
|
||||
dest: "{{playbook_dir}}/openshift/playbook.yml"
|
||||
content: |
|
||||
# NOTE(flaper87): The NetworkManager setup has been moved
|
||||
# into openshift-ansible but it's not been released yet.
|
||||
# This code will go away as soon as an rpm with the required
|
||||
# roles hits the repo.
|
||||
- name: Install NetworkManager
|
||||
hosts: all
|
||||
|
||||
tasks:
|
||||
- name: install NetworkManager
|
||||
package:
|
||||
name: NetworkManager
|
||||
state: present
|
||||
|
||||
- name: generate nm dispatcher script
|
||||
copy:
|
||||
dest: "/etc/NetworkManager/dispatcher.d/99-os-net-config-origin-dns.sh"
|
||||
owner: root
|
||||
mode: 0755
|
||||
content: >-
|
||||
#!/bin/bash -x
|
||||
|
||||
for dev in $(jq '.network_config[] | {name}.name' /etc/os-net-config/config.json);
|
||||
do
|
||||
temp="${dev%\"}"
|
||||
temp="${temp#\"}"
|
||||
export DEVICE_IFACE=$temp
|
||||
|
||||
/etc/NetworkManager/dispatcher.d/99-origin-dns.sh $DEVICE_IFACE up
|
||||
done
|
||||
|
||||
- name: Enable NetworkManager
|
||||
service:
|
||||
name: NetworkManager
|
||||
state: restarted
|
||||
enabled: yes
|
||||
|
||||
- include: /usr/share/ansible/openshift-ansible/playbooks/byo/config.yml
|
||||
- name: set openshift command
|
||||
set_fact:
|
||||
openshift_command: >-
|
||||
{%- if openshift_command is defined -%}
|
||||
{{openshift_command}}
|
||||
{%- else -%}
|
||||
ANSIBLE_HOST_KEY_CHECKING=False
|
||||
ansible-playbook
|
||||
-i '{{playbook_dir}}/openshift/inventory.yml'
|
||||
--extra-vars '@{{playbook_dir}}/openshift/global_vars.yml'
|
||||
'{{playbook_dir}}/openshift/playbook.yml'
|
||||
{%- endif -%}
|
||||
- name: print openshift command
|
||||
debug:
|
||||
var: openshift_command
|
||||
- name: run openshift (immediate log at {{playbook_dir}}/openshift/playbook.log)
|
||||
shell: |
|
||||
{{openshift_command}} 2>&1 | tee {{playbook_dir}}/openshift/playbook.log
|
||||
exit ${PIPESTATUS[0]}
|
||||
register: outputs
|
||||
- name: print openshift outputs
|
||||
debug:
|
||||
var: (outputs.stderr|default('')).split('\n')|union(outputs.stdout_lines|default([]))
|
||||
failed_when: outputs|failed
|
||||
when: outputs is defined
|
54
extraconfig/services/openshift-worker.yaml
Normal file
54
extraconfig/services/openshift-worker.yaml
Normal file
@ -0,0 +1,54 @@
|
||||
heat_template_version: ocata
|
||||
|
||||
description: External tasks definition for OpenShift
|
||||
|
||||
parameters:
|
||||
RoleNetIpMap:
|
||||
default: {}
|
||||
type: json
|
||||
ServiceData:
|
||||
default: {}
|
||||
description: Dictionary packing service data
|
||||
type: json
|
||||
ServiceNetMap:
|
||||
default: {}
|
||||
description: Mapping of service_name -> network name. Typically set
|
||||
via parameter_defaults in the resource registry. This
|
||||
mapping overrides those in ServiceNetMapDefaults.
|
||||
type: json
|
||||
DefaultPasswords:
|
||||
default: {}
|
||||
type: json
|
||||
RoleName:
|
||||
default: ''
|
||||
description: Role name on which the service is applied
|
||||
type: string
|
||||
RoleParameters:
|
||||
default: {}
|
||||
description: Parameters specific to the role
|
||||
type: json
|
||||
EndpointMap:
|
||||
default: {}
|
||||
description: Mapping of service endpoint -> protocol. Typically set
|
||||
via parameter_defaults in the resource registry.
|
||||
type: json
|
||||
|
||||
outputs:
|
||||
role_data:
|
||||
description: Role data for the Openshift Service
|
||||
value:
|
||||
# This service template essentially tags the nodes that we want
|
||||
# as workers. The actual installation is performed in
|
||||
# openshift-master service template.
|
||||
service_name: openshift_worker
|
||||
config_settings:
|
||||
tripleo.openshift_worker.firewall_rules:
|
||||
'200 openshift-worker kubelet':
|
||||
dport:
|
||||
- 10250
|
||||
- 10255
|
||||
proto: tcp
|
||||
'200 openshift-worker external services':
|
||||
dport: '30000-32767'
|
||||
upgrade_tasks: []
|
||||
step_config: ''
|
@ -208,6 +208,8 @@ resource_registry:
|
||||
OS::TripleO::Services::NovaMigrationTarget: puppet/services/nova-migration-target.yaml
|
||||
OS::TripleO::Services::Ntp: puppet/services/time/ntp.yaml
|
||||
OS::TripleO::Services::ContainersLogrotateCrond: OS::Heat::None
|
||||
OS::TripleO::Services::OpenShift::Master: OS::Heat::None
|
||||
OS::TripleO::Services::OpenShift::Worker: OS::Heat::None
|
||||
OS::TripleO::Services::SwiftProxy: puppet/services/swift-proxy.yaml
|
||||
OS::TripleO::Services::SwiftDispersion: puppet/services/swift-dispersion.yaml
|
||||
OS::TripleO::Services::ExternalSwiftProxy: OS::Heat::None
|
||||
|
Loading…
Reference in New Issue
Block a user