Initial support for vsphere as cloud provider
This commit is contained in:
parent
44a14d0b3e
commit
ea04b9381f
7 changed files with 61 additions and 12 deletions
|
@ -123,10 +123,10 @@ dns_server: "{{ kube_service_addresses|ipaddr('net')|ipaddr(2)|ipaddr('address')
|
||||||
|
|
||||||
# There are some changes specific to the cloud providers
|
# There are some changes specific to the cloud providers
|
||||||
# for instance we need to encapsulate packets with some network plugins
|
# for instance we need to encapsulate packets with some network plugins
|
||||||
# If set the possible values are either 'gce', 'aws' or 'openstack'
|
|
||||||
# When openstack is used make sure to source in the openstack credentials
|
|
||||||
# like you would do when using nova-client before starting the playbook.
|
|
||||||
# cloud_provider:
|
# cloud_provider:
|
||||||
|
# If set the possible values are either 'gce', 'aws', 'openstack' or 'vsphere'
|
||||||
|
# When vsphere or openstack are used make sure to source in the openstack/vsphere credentials
|
||||||
|
# like you would do when using nova-client/vsphere before starting the playbook.
|
||||||
|
|
||||||
## Set these proxy values in order to update docker daemon to use proxies
|
## Set these proxy values in order to update docker daemon to use proxies
|
||||||
# http_proxy: ""
|
# http_proxy: ""
|
||||||
|
|
|
@ -36,7 +36,7 @@ spec:
|
||||||
{% endif %}
|
{% endif %}
|
||||||
- --v={{ kube_log_level | default('2') }}
|
- --v={{ kube_log_level | default('2') }}
|
||||||
- --allow-privileged=true
|
- --allow-privileged=true
|
||||||
{% if cloud_provider is defined and cloud_provider == "openstack" %}
|
{% if cloud_provider is defined and (cloud_provider == "openstack" or cloud_provider == 'vsphere') %}
|
||||||
- --cloud-provider={{ cloud_provider }}
|
- --cloud-provider={{ cloud_provider }}
|
||||||
- --cloud-config={{ kube_config_dir }}/cloud_config
|
- --cloud-config={{ kube_config_dir }}/cloud_config
|
||||||
{% elif cloud_provider is defined and cloud_provider == "aws" %}
|
{% elif cloud_provider is defined and cloud_provider == "aws" %}
|
||||||
|
|
|
@ -33,7 +33,7 @@ DOCKER_SOCKET="--docker-endpoint=unix:/var/run/weave/weave.sock"
|
||||||
{% endif %}
|
{% endif %}
|
||||||
# Should this cluster be allowed to run privileged docker containers
|
# Should this cluster be allowed to run privileged docker containers
|
||||||
KUBE_ALLOW_PRIV="--allow-privileged=true"
|
KUBE_ALLOW_PRIV="--allow-privileged=true"
|
||||||
{% if cloud_provider is defined and cloud_provider == "openstack" %}
|
{% if cloud_provider is defined and (cloud_provider == "openstack" or cloud_provider == "vsphere") %}
|
||||||
KUBELET_CLOUDPROVIDER="--cloud-provider={{ cloud_provider }} --cloud-config={{ kube_config_dir }}/cloud_config"
|
KUBELET_CLOUDPROVIDER="--cloud-provider={{ cloud_provider }} --cloud-config={{ kube_config_dir }}/cloud_config"
|
||||||
{% elif cloud_provider is defined and cloud_provider == "aws" %}
|
{% elif cloud_provider is defined and cloud_provider == "aws" %}
|
||||||
KUBELET_CLOUDPROVIDER="--cloud-provider={{ cloud_provider }}"
|
KUBELET_CLOUDPROVIDER="--cloud-provider={{ cloud_provider }}"
|
||||||
|
|
|
@ -45,3 +45,13 @@ openstack_username: "{{ lookup('env','OS_USERNAME') }}"
|
||||||
openstack_password: "{{ lookup('env','OS_PASSWORD') }}"
|
openstack_password: "{{ lookup('env','OS_PASSWORD') }}"
|
||||||
openstack_region: "{{ lookup('env','OS_REGION_NAME') }}"
|
openstack_region: "{{ lookup('env','OS_REGION_NAME') }}"
|
||||||
openstack_tenant_id: "{{ lookup('env','OS_TENANT_ID') }}"
|
openstack_tenant_id: "{{ lookup('env','OS_TENANT_ID') }}"
|
||||||
|
|
||||||
|
# For the vSphere integration kubelet will need credentials to access
|
||||||
|
# the api. Per default this values will be
|
||||||
|
# read from the environment.
|
||||||
|
vsphere_username: "{{ lookup('env', VSPHERE_USERNAME ) }}"
|
||||||
|
vsphere_password: "{{ lookup('env', VSPHERE_PASSWORD ) }}"
|
||||||
|
vsphere_server: "{{ lookup('env', VSPHERE_SERVER ) }}"
|
||||||
|
vsphere_datacenter: "{{ lookup('env', VSPHERE_DATACENTER ) }}"
|
||||||
|
vsphere_datastore: "{{ lookup('env', VSPHERE_DATASTORE ) }}"
|
||||||
|
vsphere_working_dir: "{{ lookup('env', VSPHERE_WORKING_DIR ) }}"
|
||||||
|
|
|
@ -60,11 +60,11 @@
|
||||||
|
|
||||||
- name: check cloud_provider value
|
- name: check cloud_provider value
|
||||||
fail:
|
fail:
|
||||||
msg: "If set the 'cloud_provider' var must be set either to 'generic', 'gce', 'aws' or 'openstack'"
|
msg: "If set the 'cloud_provider' var must be set either to 'generic', 'gce', 'aws', 'openstack' or 'vsphere'"
|
||||||
when: cloud_provider is defined and cloud_provider not in ['generic', 'gce', 'aws', 'openstack']
|
when: cloud_provider is defined and cloud_provider not in ['generic', 'gce', 'aws', 'openstack', 'vsphere']
|
||||||
|
|
||||||
- include: openstack-credential-check.yml
|
- include: "{{ cloud_provider}}-credential-check.yml"
|
||||||
when: cloud_provider is defined and cloud_provider == 'openstack'
|
when: cloud_provider is defined and (cloud_provider == 'openstack' or cloud_provider == 'vsphere')
|
||||||
|
|
||||||
- name: Create cni directories
|
- name: Create cni directories
|
||||||
file:
|
file:
|
||||||
|
@ -122,12 +122,12 @@
|
||||||
when: ansible_os_family == "RedHat"
|
when: ansible_os_family == "RedHat"
|
||||||
changed_when: False
|
changed_when: False
|
||||||
|
|
||||||
- name: Write openstack cloud-config
|
- name: "Write {{ cloud_provider}} cloud-config"
|
||||||
template:
|
template:
|
||||||
src: openstack-cloud-config.j2
|
src: "{{ cloud_provider }}-cloud-config.j2"
|
||||||
dest: "{{ kube_config_dir }}/cloud_config"
|
dest: "{{ kube_config_dir }}/cloud_config"
|
||||||
group: "{{ kube_cert_group }}"
|
group: "{{ kube_cert_group }}"
|
||||||
mode: 0640
|
mode: 0640
|
||||||
when: cloud_provider is defined and cloud_provider == "openstack"
|
when: cloud_provider is defined and (cloud_provider == "openstack" or cloud_provider == "vsphere")
|
||||||
|
|
||||||
- include: etchosts.yml
|
- include: etchosts.yml
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
---
|
||||||
|
- name: check vsphere_username value
|
||||||
|
fail:
|
||||||
|
msg: "vsphere_username is missing"
|
||||||
|
when: vsphere_username is not defined or vsphere_username == ""
|
||||||
|
|
||||||
|
- name: check vsphere_password value
|
||||||
|
fail:
|
||||||
|
msg: "vsphere_password is missing"
|
||||||
|
when: vsphere_password is not defined or vsphere_password == ""
|
||||||
|
|
||||||
|
- name: check vsphere_server value
|
||||||
|
fail:
|
||||||
|
msg: "vsphere_server is missing"
|
||||||
|
when: vsphere_server is not defined or vsphere_server == ""
|
||||||
|
|
||||||
|
- name: check vsphere_datacenter value
|
||||||
|
fail:
|
||||||
|
msg: "vsphere_datacenter is missing"
|
||||||
|
when: vsphere_datacenter is not defined or vsphere_datacenter == ""
|
||||||
|
|
||||||
|
- name: check vsphere_datastore value
|
||||||
|
fail:
|
||||||
|
msg: "vsphere_datastore is missing"
|
||||||
|
when: vsphere_datastore is not defined or vsphere_datastore == ""
|
||||||
|
|
||||||
|
- name: check vsphere_working_dir value
|
||||||
|
fail:
|
||||||
|
msg: "vsphere_working_dir is missing"
|
||||||
|
when: vsphere_working_dir is not defined or vsphere_working_dir == ""
|
|
@ -0,0 +1,9 @@
|
||||||
|
[Global]
|
||||||
|
user = {{ vsphere_username }}
|
||||||
|
password = {{ vsphere_password }}
|
||||||
|
server = {{ vsphere_server }}
|
||||||
|
port = 443
|
||||||
|
insecure-flag = true
|
||||||
|
datacenter = {{ vsphere_datacenter }}
|
||||||
|
datastore = {{ vsphere_datastore }}
|
||||||
|
working-dir = {{ vsphere_working_dir }}
|
Loading…
Reference in a new issue