-
Notifications
You must be signed in to change notification settings - Fork 404
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Kafka Connect for z/OS support #1323
base: 7.3.x
Are you sure you want to change the base?
Conversation
Copy only MQ jars to ext folder to be loaded by the extension classloader
@@ -2,7 +2,7 @@ | |||
- name: Host Prerequisites | |||
hosts: zookeeper:kafka_broker:schema_registry:kafka_connect:ksql:control_center:kafka_rest:kafka_connect_replicator | |||
gather_facts: false | |||
environment: "{{ proxy_env }}" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a good but breaking change. Can we make an alias for backward compatibility and deprecate proxy_env
for couple of releases.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agreed
|
||
- name: Copy Files (z/OS) | ||
when: ansible_os_family == "OS/390" | ||
ibm.ibm_zos_core.zos_copy: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If this part of ansible core? If not, we need to add this dependency in our documentation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
@@ -91,111 +96,114 @@ | |||
"Not enough free disk space for package installation. Minimum space required is {{ required_disk_space_mb }}MB, please free up more disk space | |||
to continue installation. To skip host validations, set validate_hosts to false." | |||
when: (item.size_available < required_disk_space_mb|float) | |||
with_items: "{{ ansible_mounts }}" | |||
with_items: "{{ ansible_mounts if ansible_mounts is defined else {} }}" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We have used default
keys for such conditions in many places.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
- name: Check Internet Access | ||
# for z/OS we don't download the archive from the internet | ||
# but rather download it locally on your laptop, and then push to z/os node | ||
when: ansible_os_family != "OS/390" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Will there be no check for Z/OS ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No need to check internet access, because z/OS won't download anything from the internet.
I think it was done due to z/os python not being able to validate any ssl certificates, even when I setup correct ssl flags, but I might be wrong, it's been a while :)
- validate | ||
- validate_memory_usage | ||
- validate_memory_usage_zookeeper | ||
- name: Validate memory usage |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for this!
@@ -62,6 +62,11 @@ | |||
tags: | |||
- validate | |||
|
|||
- name: Symlink bash on z/OS |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we please use ansible file or some other core module for the this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wanted to, originally, but built in module was failing, complaining /bin/bash didn't exist.
- installation_method == "archive" | ||
- ansible_os_family != "OS/390" | ||
|
||
- name: Expand remote Confluent Platform archive (z/OS) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a good improvement but its diverging from existing structure. I would like to take this up in separate PR and probably implement for all OS
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Existing structure just wouldn't work for z/OS, because it is way too special :D
@@ -4,6 +4,13 @@ | |||
when: not common_role_completed|bool | |||
tags: common | |||
|
|||
- name: Check z/OS Preconditions | |||
fail: | |||
msg: 'z/OS must be installed from archive' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should I read it as "On z/OS, Connect service can be installed via archive"
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, I'll change it to "On z/OS Confluent Platform Services MUST be installed via archive"
Thanks @nsharma-git , I don't have much bandwidth these days, but I'll try to address your comments in the oncoming weeks. For anything where z/os diverges from the way we do things on other platforms it's done so out of necessity, e.g. z/os cannot unpack tar.gz files, it can only work with uncompressed tar or some weird compression algorithm, but not gz or bz2. That's why we download archive locally first, unzip but not untar it, and then move to the remote machine. We don't untar it locally because un-taring it on z/os updates encoding tags on the files correctly, if memory serves |
Veerabhadra seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account. You have signed the CLA already but the status is still pending? Let us recheck it. |
Description
This PR adds support for running kafka connect on z/OS. This is in BETA, as in not everything has been tested and some things don't work.
I'm not really familiar with your branching strategy and where to point this PR, would appreciate any pointers.
I've tested it using IBM zD&T and cp-env.
A sister PR for cp-env is here: https://github.com/confluentinc/cp-test-env-manager/pull/136
Implementation details:
environment
for all tasks automatically. I've renamed itenv_vars
to be more explicit about what the variable does. This is the only breaking change, all the rest of the changes are hidden behind theansible_os_family
check.health_check_hostname
var, to make sure guest OS hits its guest IP rather than host IP when doing health checks. I'll do more tests without it as well to make sure the issues I was having were not a fluke, but in any case this change is non breaking.Limitations and unknowns:
Type of change
Bug fix (non-breaking change which fixes an issue)
[x ] New feature (non-breaking change which adds functionality)
Breaking change (fix or feature that would cause existing functionality to not work as expected)
This change requires a documentation update
Any variable changes have been validated to be backwards compatible
Checklist: