Alfresco DevCon 2020 – The Unanswered Questions

cancel
Showing results for 
Search instead for 
Did you mean: 

Alfresco DevCon 2020 – The Unanswered Questions

Community Manager
Community Manager
1 0 252

As the English medieval writer Geoffrey Chaucer wrote, ‘Time and tide wait for no man’, and so it is with a live conference. Time constraints, which are even more rigid with a virtual conference, often mean that the Q&A session has to be cut short. While this is often a signal that a speaker’s session has been engaging, it is nonetheless frustrating for those whose questions went unanswered.

So, without further ado, we will now turn to those answered questions. Thankfully the DevCon speakers are responding to our request to address those questions, and here they are. More answers will be added when they arrive.

Stefan Kopf, Writing Future-Proof AMPs.

Question

Answer

Why extending the WebScrips API is discouraged? How to extend then Share and ADF based applications if a new REST service is required?

 

Webscripts are not discouraged per-se. But it is not recommended to host massive business logic inside the repository. To extend Share, you will need to create custom webscripts. But if you build an ADF based application, then you should consider hosting your business logic in a separate service outside of the repository.

 

For some use cases there are no extension mechanism available (like Repo WebScript). What can be done in this case (as it's not recommended to overwrite the file)?

 

I assume this question is referring to webscripts backing some pages in Share. Problems like these are one of the reasons why we started to invest in a general-purpose REST API and the Alfresco Development Framework a couple of years ago.

In some situations, this is the only available option. But you need to be aware that you need to adopt your changes whenever the base file you are overwriting is changing.

 

From what version for alfresco, this extension inspector is available?

 

 

It currently knows all supported versions of Alfresco starting from 5.2 onwards.

Where can I get the alfresco-extension-inspector?

 

It has not yet been released yet. However, the plans are to release it in Q1 2021.

Implement policies and behaviours as events can only be done when the business logic can run in a async way and doesn't require transactionality, correct?

 

Yes correct. We are aware that there are use cases where an extension needs to run code inside the repository. But these use cases are quite rare. You should still consider to host the majority of your extensions outside of the repository, and limit the code in your AMP or Simple jar modules.

Will there be new maven archetype for creating extension outside Alfresco?

We are currently planning a new SDK that supports building services outside of the ACS repository. But it is too early to tell yet.

Does the tool get the information about Alfresco repository from the Alfresco source code on GitHub or does it have it built in?

The tool has the inventories of all supported Alfresco versions built-in.

   

 

Jeff Potts, No Docker?  No Problem. Automating Install & Config Management with Ansible

 

Question

Answer

What tools are best used for pipeline and IaS?

Ansible does not care where your servers are running. They can be on-premises or on any cloud provider.

Is there an open source Ansible playbook sample avaliable ? For Linux ? For Windows ?

Yes, the playbooks and tasks I've set up to do installation and configuration management for a base installation of either Enterprise or Community are available here: https://github.com/jpotts/ansible-alfresco

Video quality is very poor.

I will record my demo and post it on YouTube.

Do we need to worry about the differences between Ansible and Ansible Tower?- any changes to the language or deployment approach? - How would you tie this into an infrastructure deployment ?

Ansible is the command line tool that runs the playbooks. Ansible Tower is a web application that can be used to help teams execute playbooks from a GUI rather than only from the command line. If you decide to use Ansible Tower any playbooks you created with Ansible will still function as-is, as far as I know.

Which installation you recommend if I want to go production with a client today and "on premis"? Docker-compose, K8s, Ansible or Zip? Can you answer for both requirements HA with cluster or a single installation. Thx

I cannot provide a generic answer to this question because it depends on the people, processes, and technology that the client has in place. If the client is already experienced with Docker and Kubernetes, I would go with Docker and Kubernetes. If they are not, I would go with Ansible.

What’s the difference between ansible and puppet? - they do similar things?

But can be categorized under "IT automation" tools, but beyond that, I am not a Puppet expert so I will differ to others on how they differ from a technical standpoint.

Would you suggest to use Ansible also to automate backups, log rotation and generic alfresco maintenance?

You could use Ansible to automate backups and perform other maintenance tasks. For log rotation I would use something like logrotate.

Is it compatible with Windows? Is this ansible project supported by alfresco and downloadable? Can it run on Windows?

You can use Ansible to manage Windows servers, but you cannot yet run Ansible from a Windows machine, according to the Ansible Windows FAQ (link below). The Ansible project I've linked to is an example project based on what has worked well for my customers. Alfresco does not officially support that project or any community-contributed add-on/extension. However, Alfresco has said that providing supported Ansible playbooks is on their roadmap.

Would you say that Ansible is better than Chef or Puppet? if so why?

I like Ansible better because it does not require me to install anything on any of the servers being managed. However, all tools have trade-offs, and you should consider what works best for your projects given your context.

How do you deal with files that need to be removed on a rollback?

A rollback is not a different action that simply pushing out config. If you have a file that gets updated when you push from one branch and also gets updated when you push from another branch, then no special rollback handling is needed. You simply push config from the appropriate branch. If your playbook creates a new file, then your playbook would need to handle when that file should be present and when it should be absent. It would probably base this decision on a variable. When this is working properly, rolling back is, again, just a matter of running the playbook with the variables set to the desired values.

Do you also have tested to use ZFS features together with ansible changes to roll back and forward?

I have not used ZFS features together with Ansible to manage changes.

For the testing playbooks, are there unit testing tools you would recommend?

I use locally installed Vagrant boxes to test my playbooks. I just bring up the Vagrant boxes, which will be provisioned by Vagrant to be configured as if the box was just handed to me by the infrastructure team, and then I test my playbooks against those boxes. Other than that, I have no specific testing frameworks in mind.

For the install steps, how do you get the binaries by switching git branches

I don't. If I have multiple branches that install different versions of Alfresco, for example, then my files/third-party directory will have all versions of all binaries that I need for those playbooks to run. We do not check binaries into source code control. On some of my clients we have a script that downloads the binaries from various sources prior to running the install playbook. In the example playbook I've provided, it is up to you to gather those manually.

You can't run on Windows yet (but Ansible does manage Windows hosts)

 

Thanks, that's what I suspected.

 

https://docs.ansible.com/ansible/latest/user_guide/windows_faq.html

 

 

Vijay Prince, Running ACS on Kubernetes: From Development to Production

 

Question

Answer

what will happen if we use docker compose on production?

There is no reason why you cannot run Alfresco using Docker Compose in Production. As you can see in the link https://docs.alfresco.com/support/concepts/su-containerization-policy.html, Alfresco does not really care how you deploy the containers. Alfresco will support the underlying image. But it is generally best practice to deploy your containers using a Container Orchestration system like Kubernetes. The reason for this confusion is because https://docs.alfresco.com/6.2/tasks/deploy-docker-compose.html seems to suggest we should not use docker compose for Production. It is just a recommendation because Docker Compose does not have a lot of capabilities

Do these steps apply for running ACS 6.2 on EKS (AWS)

Yes. You can use a custom helm chart to spin up Alfresco and your customizations in EKS as mentioned in my presentation. More details to run ACS 6.2 on EKS can be found at https://github.com/Alfresco/acs-deployment/blob/master/docs/helm/eks-deployment.md

Can you explain in some details why Docker compose is still not for production?

Alfresco will support their docker images even if they are run in Docker Compose. But it is best practice to run using Kubernetes or other orchestration tools for containerized deployments. As you can see in the link https://docs.alfresco.com/support/concepts/su-containerization-policy.html, Alfresco does not really care how you deploy the containers. The docker images will be supported. The reason for this confusion is because https://docs.alfresco.com/6.2/tasks/deploy-docker-compose.html seems to suggest we should not use Docker Compose for Production. It is just a recommendation because Docker Compose does not have a lot of capabilities.

Is this K8s installation can be done on premise for production? is it supported?

Yes. The following link gives more details. https://docs.alfresco.com/support/concepts/su-containerization-policy.html

AWS AKS or Kops are supported. What about other cloud services (Azure, Google cloud etc..) or on-premise installation?

Alfresco supports their docker images wherever they are deployed. The following link gives more details. https://docs.alfresco.com/support/concepts/su-containerization-policy.html

Is the acs-deployment helm chart exclusively on helm2, is it on the road map to move to helm3?

Helm Chart 5.0.0 has Helm 3 support. Using this chart, we should be able to spin up ACS 6.x using Helm 3. Since this was a recent addition, I have not yet had a chance to test.

In order to set up all this on my local for development work. Is Windows 10 laptop good? Any special requirement?

I have had a colleague running Docker Desktop on Windows run into issues I have not experienced in my Mac. Since I have not looked into these issues in detail, kindly take it for what it’s worth.

Have you attempted to spin up alfresco on kubernetes on a different provider to amazon ?

Not yet. In the near future, I plan to spin up Alfresco on GKE and AKS

 

We will update this blog post as more information comes in.

About the Author
My own background is in Java and PHP development. I’ve previously worked with Alfresco and more recently with Open Source software such as Joomla & Magento as a freelance developer.