-
Notifications
You must be signed in to change notification settings - Fork 7
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
Add optional installation of Samba and CTDB from git sources #94
Add optional installation of Samba and CTDB from git sources #94
Conversation
97e20d6
to
7391cd7
Compare
It takes ~10m more than the current rpm based installation method to complete a full test run. View temporary GitLab jobs from jenkins to see it in action. |
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.
Instead of having several conditional blocks to install from a repo or install from git, maybe having different tasks files for each option could help separate things and make them cleaner.
playbooks/ansible/roles/samba.install/tasks/cephfs/configure.yml
Outdated
Show resolved
Hide resolved
Another thing to consider: if we are installing from git for development/debugging purposes, why we don't install support for all supported backends and build all vfs modules ? |
Now as you mention it I think this can get rid of backend specific tasks making it even more simpler. But we won't be having necessary repositories enabled to install matching devel packages for other backends for which the environment is not invoked for setup. |
I'll consider defining the tasks separate for git and repo installation. |
If we install from source and using the |
837ba4c
to
44c400c
Compare
As replied earlier, since we use the very same role to install from git sources for both client and server based on a particular backend I have added a generic bootstrap-centos.sh to install common dependencies. |
I am not in favour of this approach. I propose instead a different approach. We go through a pipeline where we first build a lite version of samba rpm packages from a git repo and then make these available to the environments generated by sit-environment. |
The primary use case for the proposed optional installation of samba and ctdb from git sources is to have a pipeline setup for upstream samba GitLab instance so that the merge requests can be tested before any breaking changes gets merged. But that's not the only intention as this can help with development where changes can be tested in a quick fashion once such an environment is configured. Please keep this in mind while reading through my responses below.
I find it difficult to digest the following as problems. Still..
Yes, can you explain how it can be a real problem on servers while running tests?
Yes, and again how does it affect the test runs?
Yes, as stated earlier we don't have a plan to switch the installation method from rpms to git sources for our currently configured nightly runs or for PR triggered test runs in case you were anticipating such a change. If then where do we foresee a problem?
I am not sure about the concern here. We don't have packages and that's the whole point. Even otherwise, at present, how do you expect other environments(different platform etc) to replicate a particular test run? Considering your below suggested approach how the temporarily built packages are made available for consumption outside sit-environment?
Sorry, I have to disagree. We are looking at considerable amount of time in building samba and ctdb rpms every night from master(and other branches) which ultimately adds to the overall test setup time even if its built once per test run. Whereas installation from git sources, in parallel, on cluster nodes can finish within 3-4 minutes. Despite all these facts I don't think we have an option to build a "lite version of samba"(whatever you had in mind) packages suitable for our preferred test environment. Or are you suggesting to build and store each and every build created as part of individual backend specific test run? |
You would not install devel packages on a production machine. Aren't we trying to replicate a production environment here? This is not a major problem but can lead to unforseen problems like dependency issues later.
Maybe we need to look at the build process then and see why it takes time. Build only for the actual environment being used(centos 9?). Maybe skip packaging devel packages, debuginfo packages, etc? we don't need to rebuild ctdb and just reuse those? We could try with a simpler spec file with a narrower scope? By separating the rpm build process from the actual sit-environment repos, we reduce maintanance costs on sit-environment as well. Sit-environment is primarily used to build a Samba test environment with a clustered backend to test against. In my opinion, we should keep the samba build processes out of the scope of this repository. |
If not devel packages our current process of setting up the environment already calls for installation of many dependencies(mostly for ansible and python) and that's a fact. From the top of my mind I can only assume the frequency of such issues w.r.t devel packages installation to be way less than what we normally encounter to successfully maintain error free ansible based setup. Moreover ansible and related issues are found to be more complex than just adding to the list of devel packages for installation from git sources.
Even with your suggested approach I don't think we had an intention to build for multiple platforms as it is pointless to create packages for rest other than the target platform. My previous response was based on just CentOS 9(Stream).
You really want to skip debuginfo packages? In my opinion these play a vital role in debugging process while investigating a failure/crash in samba/ctdb. We will require matching debug packages while replicating the environment.
Reuse ctdb for what? I don't get it. Looks like you are over complicating things at the cost of additional 3 minutes of installing from sources.
So you are asking for another spec file which can drastically reduce the build time(if at all possible) to be maintained separately, huh?
Other than the addition of required dependencies we are not anticipating any complex setup issues compared to what we have currently with ansible and python.
I agree and installation of components is an important part of this project. Proposed change is an optional method for the source of installation which can be considered valid. On top of that the requirement for this change, a CI/CD pipeline for upstream merge requests, calls for a quick installation using git sources which is perfectly normal in a testing automation workflow.
I tend to disagree. My strong request is to have an installation method from git sources. If not here then where? |
I think there could be a better way to proceed with this issue. Let's discuss this at the team call. |
Put the rpm installation of samba and ctdb components behind a configuration object to make way for optional installation from git sources. Signed-off-by: Anoop C S <[email protected]>
Introduce a new role "samba.install" dedicated for handling the installation of samba/ctdb components. Signed-off-by: Anoop C S <[email protected]>
Here we add new configuration objects to settings file which can be used to specify the git source details for installation of samba/ctdb. Signed-off-by: Anoop C S <[email protected]>
Performing the task of ceph repo creation from common.prep role makes it possible to include it as part of preparing client machines. Signed-off-by: Anoop C S <[email protected]>
Add necessary tasks to get samba and ctdb components installed from git sources. Signed-off-by: Anoop C S <[email protected]>
44c400c
to
8c6fe8d
Compare
Let me know if the current version is ready to be taken in. |
|
For smooth and better development workflow a new mechanism to optionally install Samba and CTDB components from git sources is introduced. Following format can be used in settings to indicate and specify the git repository details:
Examples: