Get Appointment

  • contact@wellinor.com
  • +(123)-456-7890

Blog & Insights

WP_Query Object ( [query] => Array ( [post_type] => post [showposts] => 8 [orderby] => Array ( [date] => desc ) [autosort] => 0 [paged] => 13 ) [query_vars] => Array ( [post_type] => post [showposts] => 8 [orderby] => Array ( [date] => desc ) [autosort] => 0 [paged] => 13 [error] => [m] => [p] => 0 [post_parent] => [subpost] => [subpost_id] => [attachment] => [attachment_id] => 0 [name] => [pagename] => [page_id] => 0 [second] => [minute] => [hour] => [day] => 0 [monthnum] => 0 [year] => 0 [w] => 0 [category_name] => [tag] => [cat] => [tag_id] => [author] => [author_name] => [feed] => [tb] => [meta_key] => [meta_value] => [preview] => [s] => [sentence] => [title] => [fields] => [menu_order] => [embed] => [category__in] => Array ( ) [category__not_in] => Array ( ) [category__and] => Array ( ) [post__in] => Array ( ) [post__not_in] => Array ( ) [post_name__in] => Array ( ) [tag__in] => Array ( ) [tag__not_in] => Array ( ) [tag__and] => Array ( ) [tag_slug__in] => Array ( ) [tag_slug__and] => Array ( ) [post_parent__in] => Array ( ) [post_parent__not_in] => Array ( ) [author__in] => Array ( ) [author__not_in] => Array ( ) [search_columns] => Array ( ) [ignore_sticky_posts] => [suppress_filters] => [cache_results] => 1 [update_post_term_cache] => 1 [update_menu_item_cache] => [lazy_load_term_meta] => 1 [update_post_meta_cache] => 1 [posts_per_page] => 8 [nopaging] => [comments_per_page] => 50 [no_found_rows] => [order] => DESC ) [tax_query] => WP_Tax_Query Object ( [queries] => Array ( ) [relation] => AND [table_aliases:protected] => Array ( ) [queried_terms] => Array ( ) [primary_table] => wp_yjtqs8r8ff_posts [primary_id_column] => ID ) [meta_query] => WP_Meta_Query Object ( [queries] => Array ( ) [relation] => [meta_table] => [meta_id_column] => [primary_table] => [primary_id_column] => [table_aliases:protected] => Array ( ) [clauses:protected] => Array ( ) [has_or_relation:protected] => ) [date_query] => [request] => SELECT SQL_CALC_FOUND_ROWS wp_yjtqs8r8ff_posts.ID FROM wp_yjtqs8r8ff_posts WHERE 1=1 AND ((wp_yjtqs8r8ff_posts.post_type = 'post' AND (wp_yjtqs8r8ff_posts.post_status = 'publish' OR wp_yjtqs8r8ff_posts.post_status = 'expired' OR wp_yjtqs8r8ff_posts.post_status = 'acf-disabled' OR wp_yjtqs8r8ff_posts.post_status = 'tribe-ea-success' OR wp_yjtqs8r8ff_posts.post_status = 'tribe-ea-failed' OR wp_yjtqs8r8ff_posts.post_status = 'tribe-ea-schedule' OR wp_yjtqs8r8ff_posts.post_status = 'tribe-ea-pending' OR wp_yjtqs8r8ff_posts.post_status = 'tribe-ea-draft'))) ORDER BY wp_yjtqs8r8ff_posts.post_date DESC LIMIT 96, 8 [posts] => Array ( [0] => WP_Post Object ( [ID] => 1149 [post_author] => 7 [post_date] => 2019-02-19 19:48:42 [post_date_gmt] => 2019-02-19 19:48:42 [post_content] => This technical guide will walk you through the installations of Ansible v2.4.2.0, an open source configuration management and deployment tool, and Ansible Tower (web layer for Ansible) v3.4.1 on a RHEL 7 virtual machine. Ansible Tower is a RedHat supported and paid version of AWX, which is open source. We will first enable the required repos:
sudo subscription-manager repos --enable rhel-7-server-ansible-2.6-rpms 
subscription-manager repos --enable rhel-7-desktop-optional-rpms
You can install the latest version of ansible using Yum:
yum install ansible
(Since we will be installing Ansible Tower on this same machine, it is recommended to use the Yum method to install Ansible). -OR- You can build the RPM package by downloading the latest version of Ansible code from Git. If choosing this method, first we will need to get all the pre-requisite libraries ready (some of these are optional):
yum update 
yum install python-dev python-pip wget 
yum install git 
yum update -y nss curl libcurl 
yum install rpm-build 
yum -y install python
Download the latest code, and build:
mkdir ansible 
cd ansible/ 
git clone https://github.com/ansible/ansible.git 
systemctl stop firewalld 
systemctl disable firewalld 
cd ./ansible/ 
make rpm 
rpm -Uvh ./rpm-build/ansible-*.noarch.rpm
Once installed, you can view and modify the default Ansible hosts file at /etc/ansible/hosts You can also verify successful installation using the command:
ansible –-version
Now, we can go ahead and set up Ansible Tower on this machine. We will be using the integrated installation, which installs the GUI, the REST API, and the database – all on the same machine:
mkdir ansible-tower 
cd ansible-tower/ 
wget https://releases.ansible.com/ansible-tower/setup-bundle/ansible-tower-setup-bundle-3.4.1-1.el7.tar.gz 
tar xvzf ansible-tower-setup-bundle-3.4.1-1.el7.tar.gz 
cd ansible-tower-setup-bundle-3.4.1-1.el7/
Tower connects to the PostgreSQL database using password authentication. We will need to create a md5 hash to configure Tower to talk with the database. Replace <CUSTOM-DB-PASSWORD> with a password of your choosing:
python -c 'from hashlib import md5; print("md5" + md5("<CUSTOM-DB-PASSWORD>" + "awx").hexdigest())'
Make a note of the hash key generated from this command. We will use it for our next step. We have to now update the inventory file (located within ansible-tower-setup-bundle-3.4.1-1.el7 directory) with the passwords for the database, the hash key generated above, and a custom password of our choosing for rabbit_mq. Find the following lines and update them accordingly. First, for setting the admin password for the console
admin_password='AdminPassword'
Next, set the password for database connectivity. Please note, this password should be the same as what you used to replace <CUSTOM-DB-PASSWORD> during the hash key generation step above. Also, we will paste the copied hash key, and set it for the hashed password line
pg_password='password' 
pg_hashed_password='md5f58b4d5d85dbde46651335d78bb56b8c'
And finally, choose a custom password for rabbit_mq
rabbitmq_password='password'
We are now ready to run the setup script
./setup.sh
Once all the steps are completed successfully, you can verify the Tower installation by going to the URL
https://<MACHINE-IP-OR-FQDN>:443
You can use the admin credentials (username: admin, password: admin password as defined in the inventory file) to log in and access the console. You can request a free Ansible Tower license for an evaluation environment of up to 10 nodes, or can purchase a RedHat subscription for larger environments, and some additional logging, management and support features. If you have any questions about the steps documented here, would like more information on the installation procedure, or have any feedback or requests, please let us know at info@keyvatech.com.
CTO Anuj Tuli Anuj joined Keyva from Tech Data where he was the Director of Automation Solutions. In this role, he specializes in developing and delivering vendor-agnostic solutions that avoid the “rip-and-replace” of existing IT investments. Tuli has worked on Cloud Automation, DevOps, Cloud Readiness Assessments and Migrations projects for healthcare, banking, ISP, telecommunications, government and other sectors. During his previous years at Avnet, Seamless Technologies, and other organizations, he held multiple roles in the Cloud and Automation areas. Most recently, he led the development and management of Cloud Automation IP (intellectual property) and related professional services. He holds certifications for AWS, VMware, HPE, BMC and ITIL, and offers a hands-on perspective on these technologies. Like what you read? Follow Anuj on LinkedIn at https://www.linkedin.com/in/anujtuli/ [post_title] => Installation Guide: Ansible & Ansible Tower - Day 1 [post_excerpt] => [post_status] => publish [comment_status] => closed [ping_status] => closed [post_password] => [post_name] => installing-guide-ansible-and-ansible-tower-day-1 [to_ping] => [pinged] => [post_modified] => 2019-02-21 19:08:28 [post_modified_gmt] => 2019-02-21 19:08:28 [post_content_filtered] => [post_parent] => 0 [guid] => https://keyvatech.com/?p=1149 [menu_order] => 35 [post_type] => post [post_mime_type] => [comment_count] => 0 [filter] => raw ) [1] => WP_Post Object ( [ID] => 1144 [post_author] => 7 [post_date] => 2019-01-30 20:13:42 [post_date_gmt] => 2019-01-30 20:13:42 [post_content] => You may have heard the term Microservices when talking about applications, and some cases even when talking about underlying infrastructure. If you've worked with any OOPS language, you must be familiar with the concept of abstraction and modularization. Extend that idea to an application - the breakdown of independent functions abstracted in to separate services; with a bunch of services working together forming an application. Typically, the more fine grained and decoupled your services are, the more scalability can be achieved. Let's take a look at some of the reasons why it is important for your critical applications to be be implemented with a microservices architecture framework -

Scalability: By splitting down the function of an application in to a microservices, it can be scaled independently of other functions or components. For example, a microservice responsible for managing database connections can scale independently of the web tier, if the db connection pool size is to be increased.

Decoupling: Separating the functions into individual services provides flexibility for design, implementation, and maintenance of those individual services.

Continuous Delivery & Updates: Functional upgrades can be released without affecting other components. Each function or service can have its own release pipeline, list of enhancements, and priority for feature releases.

Error Micro-segmentation: Error in one service will be isolated within that service. Faults will not propagate to other functions as they are modularized and separated. Also, releasing an update to address the issue is quicker and more efficient in this architecture.

Parallel Development & Domain Expertise: Each service can have domain specific experts working on it. In the case of monolithic applications, the entire application stack needs to be updated for feature releases, as well as development is stymied because of complexity and interdependencies.

Reduced Deployment Time: Individual services can be deployed with a focus on function specific features and environments. Development, testing, and pipeline release is for smaller modules rather than the entire application stack. Frequent updates can be made to individual services, and those updates can be deployed in production much faster.

If you need assistance in determining the feasibility of transforming your applications from monolithic to microservices architecture, Keyva can help. Associates at Keyva have worked with many different organizations in various verticals to help in application modernization projects. These include things like refactoring existing applications, adding a wrapper over current applications so they can be consumed easily by DevOps processes, and more. If you'd like to have us review your environment and provide suggestions on what might work for you, please contact us at info@keyvatech.com.
CTO Anuj Tuli Anuj joined Keyva from Tech Data where he was the Director of Automation Solutions. In this role, he specializes in developing and delivering vendor-agnostic solutions that avoid the “rip-and-replace” of existing IT investments. Tuli has worked on Cloud Automation, DevOps, Cloud Readiness Assessments and Migrations projects for healthcare, banking, ISP, telecommunications, government and other sectors. During his previous years at Avnet, Seamless Technologies, and other organizations, he held multiple roles in the Cloud and Automation areas. Most recently, he led the development and management of Cloud Automation IP (intellectual property) and related professional services. He holds certifications for AWS, VMware, HPE, BMC and ITIL, and offers a hands-on perspective on these technologies. Like what you read? Follow Anuj on LinkedIn at https://www.linkedin.com/in/anujtuli/ [post_title] => What is Microservices Architecture? [post_excerpt] => [post_status] => publish [comment_status] => closed [ping_status] => closed [post_password] => [post_name] => what-is-microservices-architecture [to_ping] => [pinged] => [post_modified] => 2019-01-30 20:13:53 [post_modified_gmt] => 2019-01-30 20:13:53 [post_content_filtered] => [post_parent] => 0 [guid] => https://keyvatech.com/?p=1144 [menu_order] => 36 [post_type] => post [post_mime_type] => [comment_count] => 0 [filter] => raw ) [2] => WP_Post Object ( [ID] => 1139 [post_author] => 7 [post_date] => 2019-01-21 19:22:52 [post_date_gmt] => 2019-01-21 19:22:52 [post_content] => If you've tried to install Kong from scratch, you know that it is a little more involved than what is posted on the official website guide. There are some pre-requisites that the system needs to be set up with, in order to make sure the service installs and runs successfully. Let us take a look at the steps involved in setting up a Kong instance from the ground up. This guide is valid for RHEL 7, PostgreSQL 11, and Kong 0.14.1. We will set up Kong on a VMware virtual machine. If you are using another hypervisor, the steps for hardware configurations may differ slightly. First, let us take a look at the pre-requisite steps that need to be addressed before we begin our work. Prepare and Install OS Packages Since we set up RHEL with minimal packages, we would need to enable all the needed rpms. First register with subscription manager using your Red Hat profile credentials: subscription-manager register subscription-manager refresh subscription-manager attach –-auto subscription-manager repos –-list subscription-manager repos --enable rhel-7-server-rh-common-beta-rpms subscription-manager repos --enable rhel-7-server-rpms subscription-manager repos --enable rhel-7-server-source-rpms subscription-manager repos --enable rhel-7-server-rh-common-source-rpms subscription-manager repos --enable rhel-7-server-rh-common-debug-rpms subscription-manager repos --enable rhel-7-server-optional-source-rpms subscription-manager repos --enable rhel-7-server-extras-rpms Finish setting up other utils: yum repolist yum -y update yum –y install wget PostgreSQL 11 Installation We will first have to set up PostgreSQL 9.5+ or Cassandra database to use with Kong. The version compatibility is listed on Kong's website. We decided to go with PostgreSQL 11. Download the latest build for PostgreSQL 11 curl -O https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7-x86_64/pgdg-redhat11-11-2.noarch.rpm Extract the package rpm -ivh pgdg-redhat11-11-2.noarch.rpm Find the relevant RPMs and install yum list postgres* yum install postgresql11-server.x86_64 Initialize the DB /usr/pgsql-11/bin/postgresql-11-setup initdb Start the PostgreSQL service systemctl enable postgresql-11.service systemctl start postgresql-11.service Verify the install was successful and the service is up, as well as set the database password su - postgres -c "psql" postgres=# \password postgres postgres-# \q Set up the database for Kong postgres=# create user kong; create database kong owner kong; Make a note of the configuration file location. We will need this later postgres=# show hba_file; hba_file ------------------------------------ /var/lib/pgsql/11/data/pg_hba.conf (1 row) We will also set (or update) the password for the kong user. It is recommended you use a password with no numbers (string only). It has been observed with previous versions that using numbers in the password can cause issues. Since this will be lab environment, it may be easier to choose a string only password and avoid troubleshooting any potential issues caused due to this. postgres=# alter user kong with password 'kong'; Kong 0.14.1 Installation Enable the relevant EPEL repository EL_VERSION=`cat /etc/redhat-release | grep -oE '[0-9]+\.[0-9]+'` && \ > sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-${EL_VERSION%.*}.noarch.rpm Fetch the latest Kong package wget https://bintray.com/kong/kong-community-edition-rpm/download_file?file_path=rhel%2F7%2Fkong-community-edition-0.14.1.rhel7.noarch.rpm The saved file gets a strange name, so let's change the name to make it cleaner mv download_file\?file_path\=rhel%2F7%2Fkong-community-edition-0.14.1.rhel7.noarch.rpm kong-community-edition-0.14.1.rhel7.noarch.rpm Extract the package rpm -ivh kong-community-edition-0.14.1.rhel7.noarch.rpm You can now verify the install by running the command kong on the prompt. It will display various command options for kong. We will now need to modify the PostgreSQL config file to make sure the database allows connections from Kong. We had noted the location of the pg_hba.conf file earlier in the database install section. vi /var/lib/pgsql/11/data/pg_hba.conf Add the IP of Kong host (or let the default entry of 127.0.0.1 stay as is, if installing on the same host as the database) under the IPv4 section. Change the authentication method from ident to md5. This is important – otherwise you will get ident  authentication errors when you try to start the kong service later. The Kong configuration file that ships with the package has an extension .default to it. We therefore copy the default file to the .conf extension before making changes cp /etc/kong/kong.conf.default /etc/kong/kong.conf By default, all entries in the configuration file are commented out. You can choose to let them be as is. Or you can decide to uncomment specific sections or specific lines. In our case, we will do the following: 1) Under the GENERAL section, uncomment the prefix line, and update it to the following path prefix = /etc/nginx/ssl 2) Under the NGINX section, uncomment the admin_listen line, and update it as per the following admin_listen = <Kong_Server_IP>:8001, 127.0.0.1:8001, 127.0.0.1:8444 ssl 3) Under the DATASTORE section, uncomment the lines for postgresql, and update them with the connection information for your database. database = postgres pg_host = 127.0.0.1 pg_port = 5432 pg_user = kong pg_password = <Password you set during DB initiation> pg_database = kong pg_ssl = off pg_ssl_verify = off Save and exit the configuration file. Also note that we changed the default prefix path; so we will need to manually create a directory for that path, and chmod the appropriate permissions for that folder. cd /etc mkdir nginx cd nginx mkdir ssl cd / chown –R root:root /etc/nginx/ssl chmod –R 600 /etc/nginx/ssl Run Kong migrations kong migrations up [-c /etc/kong/kong.conf] --v Start the Kong service kong start [-c /etc/kong/kong.conf] --v Verify the service is up and running curl -i http://<Kong_Server_IP>:8001/ You can also verify the service status by going to URL  http://<Kong_Server_IP>:8001/ via a browser. Troubleshooting 1) Error: Absolute path to the certificate /usr/local/share/lua/5.1/kong/cmd/start.lua:71: /usr/local/share/lua/5.1/kong/cmd/start.lua:28: nginx configuration is invalid (exit code 1): nginx: [emerg] SSL_CTX_load_verify_locations("/etc/nginx/ssl/# Absolute path to the certificate") failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/etc/nginx/ssl/# Absolute path to the certificate','r') error:2006D080:BIO routines:BIO_new_file:no such file error:0B084002:x509 certificate routines:X509_load_cert_crl_file:system lib) nginx: configuration file /etc/nginx/ssl/nginx.conf test failed If you get an error like the above, make sure that the DEVELOPMENT & MISCELLANEOUS section in the /etc/kong/kong.conf file are all commented out. If you are not using SSL certificates, you may want to comment out all lines that point to the certificate path (e.g. #lua_ssl_trusted_certificate = ) 2) Error: Permission Denied This could be caused by Kong trying to access the default prefix path of /usr/local/kong without proper permissions. If the install is being run by a non-root user, you will have to provide folder write permissions for that user as well. Alternatively, you can manually create a different folder (see instructions above) and assign appropriate write permissions to it. 3) Error: During service verification, the curl command works, but the browser URL access fails with Page Not Found Make sure that the admin_listen = <Kong_Server_IP>:8001, 127.0.0.1:8001, 127.0.0.1:8444 ssl line is not commented out in the /etc/kong/kong.conf file. Also, Kong_Server_IP should reflect the IPv4 address of the server where Kong is installed. 4) Error: Unauthorized ident access Make sure that in the postgresql configuration file  (/var/lib/pgsql/11/data/pg_hba.conf), the access method for the kong host is set to md5. 5) Error: In postgres.lua  Expected value but found T_END at character 1 Check the database configuration parameters in /etc/kong/kong.conf. Verify the database server name, IP, and credentials are correct. Also, try to drop the database and recreating it within PostgreSQL (in case the database got corrupt). You can do so by running the commands postgres=# drop database kong; postgres=# create database kong owner kong; and then restarting the PostgreSQL service from the console systemctl stop postgresql-11 systemctl start postgresql-11 If you have any questions about the steps documented here, would like more information on the installation procedure, or have any feedback or requests, please let us know at info@keyvatech.com.
CTO Anuj Tuli Anuj joined Keyva from Tech Data where he was the Director of Automation Solutions. In this role, he specializes in developing and delivering vendor-agnostic solutions that avoid the “rip-and-replace” of existing IT investments. Tuli has worked on Cloud Automation, DevOps, Cloud Readiness Assessments and Migrations projects for healthcare, banking, ISP, telecommunications, government and other sectors. During his previous years at Avnet, Seamless Technologies, and other organizations, he held multiple roles in the Cloud and Automation areas. Most recently, he led the development and management of Cloud Automation IP (intellectual property) and related professional services. He holds certifications for AWS, VMware, HPE, BMC and ITIL, and offers a hands-on perspective on these technologies. Like what you read? Follow Anuj on LinkedIn at https://www.linkedin.com/in/anujtuli/ [post_title] => Installing Kong: A First Day Guide [post_excerpt] => [post_status] => publish [comment_status] => closed [ping_status] => closed [post_password] => [post_name] => installing-kong-a-first-day-guide [to_ping] => [pinged] => [post_modified] => 2020-03-05 19:20:18 [post_modified_gmt] => 2020-03-05 19:20:18 [post_content_filtered] => [post_parent] => 0 [guid] => https://keyvatech.com/?p=1139 [menu_order] => 37 [post_type] => post [post_mime_type] => [comment_count] => 0 [filter] => raw ) [3] => WP_Post Object ( [ID] => 1135 [post_author] => 7 [post_date] => 2019-01-17 20:45:17 [post_date_gmt] => 2019-01-17 20:45:17 [post_content] => We've all heard that containers and cloud technologies help us avoid lock-ins. While most of that is true, you could be unintentionally locking yourself to a particular technology or framework, if you are not careful. Let's talk about some important aspects to consider, when you are evaluating a cloud or a container platform. 1. Compile a list the features you want a platform to have, based on your requirements Your needs to consume a hybrid cloud architecture may be different from other organizations. The vision of having more flexibility and agility may be the same, but your workloads are different. It is important to know the in-depth architecture of the applications and workloads you want to live in the cloud or container environment. 2. Support You may have thousands of commercial-off-the-shelf applications, and hundreds of custom built ones. Some application vendors may not support containerizing their applications. There could be regulatory or other limitations that prevent certain legacy applications from being supported on containers. Depending upon how critical and integral such applications are to your business, you may want to consider newer offerings that make the full use of cloud and containerization benefits like microservices architecture. 3. Licensing and Exit costs Platform cost is always a factor, no matter the size of the organization. One of the native benefits that containerization provides, is the ability to control costs – assuming your applications are architected accordingly. For example, a cloud-native application can be scaled in to public cloud for just the webtier when necessary (assuming microservices architecture) rather than spinning up large capacity VMs on demand in the cloud for monolithic applications. Another important consideration is around how the platforms are priced. A platform that prices based on worker nodes may be more feasible for an organization that plans on developing hundreds or thousands of microservices, and making them run efficiently on worker nodes. A platform priced based on the number of applications containerized may be more feasible for monolithic applications. You will need to take in to account how your organization plans to scale the containerizing of applications, and what the application architectures will be like. Although you will be making a decision based on long term usage of the platform, it is always a good idea to see what the exit costs will be once you decide to move away from the chosen platform. As an exercise, see if you can figure out what changes would need to be made to the application architecture, the deployment architecture, resource skill sets, and more, if you were to move away from the chosen platform. That can then serve as a yardstick for how locked-in you might be, upon choosing a particular solution. There will always be some level of customization effort an lock-in, no matter which solution you choose – but the idea would be to minimize the monetary and non-monetary exit costs. 4. Detailed architecture knowledge about your applications Nobody wants to make major technology adoption decisions based on hearsay. It is critical to know the detailed application architectures, as that will guide you towards choosing the right solution. If the bulk of your application workloads are legacy monolithic applications, the primary tangible benefit obtained by containerizing them will be horizontal scaling. This is assuming the application vendors will support the containerized versions, the applications will allow multiple instances running within the same sub-net, the application can be used with a load balancer, and so on. To leverage the self-healing and other native capabilities offered by containers, the cloud-native applications developed in a microservices architecture would be an ideal workload. But in the real-world, there is always going to be a mix of legacy and newer workloads. For highly regulated industries like healthcare, insurance, banking, and others – legacy applications may form the biggest chunk of their workloads. If you have the time, it would be ideal to do a cost-benefit analysis for legacy workloads to compare the benefits offered by horizontal scalability and the like, before choosing to move forward with containerization. 5. Implementing vendor agnostic tools, and processes, refactoring if necessary Choosing a platform is just one piece of this complex puzzle involving the rollout of new technologies. There are critical tasks pre- and post- containerization, that also need to be accounted for. For example, how easy or difficult will it be to refactor the existing application for a chosen platform? How easy or difficult will it be to monitor the performance of the chosen platform? How easy or difficult will it be to integrate the chosen platform with other toolsets? Will there be changes needed to your existing processes or toolsets, so they can work effectively with the chosen platform? The end goal for most organizations is to have an easy transition path into Cloud and Container platforms – and to use these platforms as effective tools for their IT teams and business in general. This vision can be best achieved by having a vendor agnostic strategy, and avoiding vendor lock-ins wherever possible. Associates at Keyva have helped multiple organizations assess their application readiness and move them in to containerized and cloud environments. Keyva also helps with the pre- and post- containerization steps. These include things like refactoring existing applications, adding a wrapper over current applications so they can be consumed easily by DevOps processes, and more. If you'd like to have us review your environment and provide suggestions on what might work for you, please contact us at info@keyvatech.com
CTO Anuj Tuli Anuj joined Keyva from Tech Data where he was the Director of Automation Solutions. In this role, he specializes in developing and delivering vendor-agnostic solutions that avoid the “rip-and-replace” of existing IT investments. Tuli has worked on Cloud Automation, DevOps, Cloud Readiness Assessments and Migrations projects for healthcare, banking, ISP, telecommunications, government and other sectors. During his previous years at Avnet, Seamless Technologies, and other organizations, he held multiple roles in the Cloud and Automation areas. Most recently, he led the development and management of Cloud Automation IP (intellectual property) and related professional services. He holds certifications for AWS, VMware, HPE, BMC and ITIL, and offers a hands-on perspective on these technologies. Like what you read? Follow Anuj on LinkedIn at https://www.linkedin.com/in/anujtuli/ [post_title] => Avoid Cloud & Container Vendor Lock-In [post_excerpt] => [post_status] => publish [comment_status] => closed [ping_status] => closed [post_password] => [post_name] => avoidcloudandcontainerlockin [to_ping] => [pinged] => [post_modified] => 2020-03-05 19:12:02 [post_modified_gmt] => 2020-03-05 19:12:02 [post_content_filtered] => [post_parent] => 0 [guid] => https://keyvatech.com/?p=1135 [menu_order] => 38 [post_type] => post [post_mime_type] => [comment_count] => 0 [filter] => raw ) [4] => WP_Post Object ( [ID] => 1131 [post_author] => 7 [post_date] => 2019-01-15 21:26:42 [post_date_gmt] => 2019-01-15 21:26:42 [post_content] => You might've heard this before – configuration management database (CMDB) should be the single source of truth. But what does that mean? And how can you achieve it? With all the different third party applications in your environment, you might think it could be a gargantuan effort to consolidate all the data in to the CMDB. It may be a decent amount of work, but the reality is that it is easier than what most would anticipate. By taking the 3 step approach below, you can come close to configuration management database nirvana – a current and accurate CMDB: Step 1: Develop, and agree on a configuration management database schema, and the necessary mappings This step requires the IT Service Management (ITSM) teams, and the various business units to agree on a configuration management database schema and how it will be organized. ITSM teams would create data mappings – to help map data captured from various software components in the environment, into the specified fields within the CMDB schema. This would also include activities around customization of various fields within the CMDB forms, and customizations around API access. Step 2: Integrate and Automate Integrate the configuration management database with all sources of data as per the identified data mappings. This can be done by leveraging existing integrations, or by creating new ones. The population of data within the CMDB can be done as part of an extract-transfer-load process (retrospectively), or as part of the creation of a CI using automation (prospectively). The process of CMDB population is a multi-step process, whereby data is captured via one of the discovery tools and automatically updated within the CMDB. Automation of CI population also helps create relationships between CIs and Change tickets or Incident tickets, thereby making the review process for Change Advisory Boards much easier. Step 3: Optimize and Reconcile Once the data is in the configuration management database, it is important to make sure it is accurate. Given that many different sources of data may compete for the same target field within the CMDB, weights can be assigned to each source to improve accuracy. For example, the asset tag of a device may have a higher weightage when that data is coming from a discovery tool, but the CPU information captured within a configuration management system can be trusted more than any other source. Furthermore, the data captured from all the various sources should be put in staging datasets. It is up to the administrators of the system, to define rule sets and reconciliation rules that will automatically filter the required data in to production data set for consumption. The above may seem like oversimplification of the tasks required to have a fully functional CMDB, but many organizations have successfully adopted a version of this breakdown. It is highly likely that the most time will be spent upfront during the configuration management database schema and data mapping exercise. By investing time and effort towards having an accurate CMDB, organizations can effectively understand the various configurations and their relationships within in the environment, and thereby easily track and manage them. Associates at Keyva have been helping customers set up and optimize their ITSM and CMDB systems for the past two decades. We've also helped organizations develop integrations between configuration management database and third party application software so as to accelerate the population of the CMDB, and to keep it current and accurate. If you'd like to have us review your environment and provide suggestions on what might work for you, please contact us at info@keyvatech.com
CTO Anuj Tuli Anuj joined Keyva from Tech Data where he was the Director of Automation Solutions. In this role, he specializes in developing and delivering vendor-agnostic solutions that avoid the “rip-and-replace” of existing IT investments. Tuli has worked on Cloud Automation, DevOps, Cloud Readiness Assessments and Migrations projects for healthcare, banking, ISP, telecommunications, government and other sectors. During his previous years at Avnet, Seamless Technologies, and other organizations, he held multiple roles in the Cloud and Automation areas. Most recently, he led the development and management of Cloud Automation IP (intellectual property) and related professional services. He holds certifications for AWS, VMware, HPE, BMC and ITIL, and offers a hands-on perspective on these technologies. Like what you read? Follow Anuj on LinkedIn at https://www.linkedin.com/in/anujtuli/ [post_title] => 3 Steps to Achieving Configuration Management Database (CMDB) Nirvana [post_excerpt] => [post_status] => publish [comment_status] => closed [ping_status] => closed [post_password] => [post_name] => 3-steps-to-achieve-configuration-management-database-cmdb-nirvana [to_ping] => [pinged] => [post_modified] => 2020-01-22 17:56:20 [post_modified_gmt] => 2020-01-22 17:56:20 [post_content_filtered] => [post_parent] => 0 [guid] => https://keyvatech.com/?p=1131 [menu_order] => 39 [post_type] => post [post_mime_type] => [comment_count] => 0 [filter] => raw ) [5] => WP_Post Object ( [ID] => 1127 [post_author] => 7 [post_date] => 2019-01-11 16:54:38 [post_date_gmt] => 2019-01-11 16:54:38 [post_content] => If you have tried setting up a DevOps pipeline to achieve continuous deployment, and ran into configuration drift issues -  you will know the pains quite well. A consistent and uniform configuration is a prerequisite to any automation. If the automated workflow finds that the target configuration is not as anticipated, it will either take the exception route, or revert to notification for manual intervention. What is configuration drift? When a given system configuration or an application configuration changes from the "blessed" or "vetted" state, to another state, it is called configuration drift. For example, if the IT team provides web server instance with a preset configuration file, and as part of the application deployment process or application customization process, that configuration is changed – that constitutes a configuration drift. Similar drifts can occur at the OS level, for packages or commercial software. Why does it matter? It is important to mitigate and remediate any configuration drifts because without it, the environment will become unmanageable, especially as you scale. Consider the web server example above, when there is an application outage in your production environment. As part of finding the root cause of failure,  you will now also need to walk back the steps of every configuration changed from the original version, to rule out any issues caused because of those changes. This can cause time and efforts to be deployed towards tangential activities. With consistent deployment automation, you can confidently evaluate the issues plaguing the core application, given all other things to be constant. Another reason that reducing or preventing configuration drift is paramount, is to make sure that any additional deployments on the base tier can be automated. In the above example, it is much easier to automate application deployment on a web server delivered as PaaS, than deploying the same application on a web server that might've been customized, or drifted from its desired state. How to mitigate or prevent configuration drift? There are many ways you can address the resolution of configuration drift. The common factor for all scenarios is to make sure the deployments are automated. Firstly, you'd have to define what constitutes a configuration drift. For example, if you are providing your customers with IaaS machines, would adding a new printer constitute configuration drift? Or would that be classified under allowed customizations, that have no material effect on your service delivery? The rules of configuration will need to be defined. Secondly, you'd want to automate the deployments of your builds and configurations. This could mean using an orchestration framework to deploy the desired service through a self-service catalog, or another automated mechanism. Thirdly, you'd want to make sure that the release and update process for various infrastructure and application components flows through a source control management (SCM) system. Any and all deployments should pick up the latest version of the configs from SCM. And by deploying a systems configuration management solution, you can now check the configuration states of your target systems against the latest versions of those configurations in SCM. There are many other steps you can take to mitigate configuration drift, depending upon the severity of the drift and the penalty you pay for not addressing it. Keyva has helped several organizations address the common challenge of preventing configuration drift. There are several processes and tools an organization can use to address their customized needs for preventing configuration drifts in their infrastructure and applications. If you'd like to have us review your environment and provide suggestions on what might work for you, please contact us at info@keyvatech.com
CTO Anuj Tuli Anuj joined Keyva from Tech Data where he was the Director of Automation Solutions. In this role, he specializes in developing and delivering vendor-agnostic solutions that avoid the “rip-and-replace” of existing IT investments. Tuli has worked on Cloud Automation, DevOps, Cloud Readiness Assessments and Migrations projects for healthcare, banking, ISP, telecommunications, government and other sectors. During his previous years at Avnet, Seamless Technologies, and other organizations, he held multiple roles in the Cloud and Automation areas. Most recently, he led the development and management of Cloud Automation IP (intellectual property) and related professional services. He holds certifications for AWS, VMware, HPE, BMC and ITIL, and offers a hands-on perspective on these technologies. Like what you read? Follow Anuj on LinkedIn at https://www.linkedin.com/in/anujtuli/ [post_title] => Configuration Drift : The Bane of Continuous Deployments [post_excerpt] => [post_status] => publish [comment_status] => closed [ping_status] => closed [post_password] => [post_name] => configuration-drift-the-bane-of-continuous-deployments [to_ping] => [pinged] => [post_modified] => 2019-01-11 16:54:38 [post_modified_gmt] => 2019-01-11 16:54:38 [post_content_filtered] => [post_parent] => 0 [guid] => https://keyvatech.com/?p=1127 [menu_order] => 40 [post_type] => post [post_mime_type] => [comment_count] => 0 [filter] => raw ) [6] => WP_Post Object ( [ID] => 1122 [post_author] => 7 [post_date] => 2019-01-07 21:54:42 [post_date_gmt] => 2019-01-07 21:54:42 [post_content] => Over the last few years, we've all been exposed to different meanings of the word "Cloud". Similarly, other terms like "Application Development" and "Application Modernization" are sometimes used nebulously as well. Application Development could mean a few different things – it could be creating an integration between two existing software modules using APIs, or it could be mobile application development, or it could mean developing a standalone computer program that serves a business purpose, or it could mean all of the above. No one term is more correct than the other. It depends on what is relevant for you, and how you define an application. Application Modernization could also cover a few things – it could mean recoding an application in a new programming language, or moving the application from one platform to another, or moving it to the public cloud, or making the application architecture more agile and breaking it down in to microservices framework. If the objective is to have your legacy application leverage all the benefits available from a distributed Cloud architecture, the process to make the necessary modifications to that application's architecture or implementation is referred to as Application Modernization. "Cloud-Native" is the term used to describe the characteristics of born-in-the-cloud applications. These applications are built to be used in a distributed fashion, are services aware, resilient, and scalable. But the largest proportion of applications in many industries are still run within legacy on-premises environments. Short of doing a rip-and-replace for those functional applications, there is a need to transform and modernize these legacy applications to fit the new Cloud architectures. Here are some things to consider reviewing, as part of the application modernization process:   Let's look an example. Your legacy application may be monitored for metrics using application specific context using one of the commercial APM tools. As part of the modernization process, and applying best practices approach, the metrics and logs can be exposed as a service (microservice) via a /metrics endpoint by the process of application instrumentation. This would make it much easier to monitor the metrics microservice, and filter out the needed readings. It also makes it easier to upgrade the metrics service if you were to add or remove the exposure of specific parameters. Associates at Keyva have helped multiple organizations assess their application readiness and helped with application modernization.  These include things like refactoring existing applications, adding a wrapper over current applications so they can be consumed easily by DevOps processes, and more. If you'd like to have us review your environment and provide suggestions on what might work for you, please contact us at info@keyvatech.com.
CTO Anuj Tuli Anuj joined Keyva from Tech Data where he was the Director of Automation Solutions. In this role, he specializes in developing and delivering vendor-agnostic solutions that avoid the “rip-and-replace” of existing IT investments. Tuli has worked on Cloud Automation, DevOps, Cloud Readiness Assessments and Migrations projects for healthcare, banking, ISP, telecommunications, government and other sectors. During his previous years at Avnet, Seamless Technologies, and other organizations, he held multiple roles in the Cloud and Automation areas. Most recently, he led the development and management of Cloud Automation IP (intellectual property) and related professional services. He holds certifications for AWS, VMware, HPE, BMC and ITIL, and offers a hands-on perspective on these technologies. Like what you read? Follow Anuj on LinkedIn at https://www.linkedin.com/in/anujtuli/ [post_title] => Application Modernization: A Path to Cloud-Native [post_excerpt] => [post_status] => publish [comment_status] => closed [ping_status] => closed [post_password] => [post_name] => application-modernization-a-path-to-cloud-native [to_ping] => [pinged] => [post_modified] => 2019-01-22 21:21:40 [post_modified_gmt] => 2019-01-22 21:21:40 [post_content_filtered] => [post_parent] => 0 [guid] => https://keyvatech.com/?p=1122 [menu_order] => 41 [post_type] => post [post_mime_type] => [comment_count] => 0 [filter] => raw ) [7] => WP_Post Object ( [ID] => 1106 [post_author] => 7 [post_date] => 2018-12-19 22:04:44 [post_date_gmt] => 2018-12-19 22:04:44 [post_content] => by Anuj Tuli, Chief Technology Officer If you haven't gotten a chance to review this year's DORA report, check it out below. It has great information on Software Delivery Performance, Organizational Performance on DevOps, and trends around Cloud, Platform and Open Source. A few key observations come to light through this report. Let's take a look. Organizations that focused on having high software delivery performance were able to delivery quickly on new requirements, achieve customer satisfaction, and keep up with regulatory requirements. There is a small group of organizations aptly named "elite performers" that are practicing software delivery performance at the highest levels. The time it takes these elite performers to have the code moved from code commit to production is less than an hour! Organizational Performance is directly tied to Software Delivery Performance. The elite performers in the category for Automation, Configuration Management, Testing, Deployments, and Change Approvals, all had 10% or less of manual work in those areas. This led the high performing teams to free up time for net new work (e.g. new features, functionality) by up to 50%. That is a huge gain towards productivity and innovation. This analysis echoed the fact that by maturing the automation of IT processes in your environments, it tangibly and positively affects organization productivity. In order for organizations to up their levels of Software Delivery Performance, it is important to adopt Cloud like characteristics not only for their underlying infrastructure, but in terms of organizational culture as well. Cloud characteristics are achieved easier when using Platform-as-a-Service, and deploying Infrastructure-as-Code. For Cloud Native applications, public Cloud offerings are an obvious fit, but these applications must be built to be resilient, elastic, and easy to manage. In the survey, 58% responded that they were using open source components, libraries, and platforms – which points to the expansion of open source software in organizations today. Users that implement infrastructure as code to manage their software deployments, and ones that use containers, are more likely to be elite performers. You can download the full report HERE. About the Author [table id=3 /] [post_title] => 2018 DORA Report Review [post_excerpt] => [post_status] => publish [comment_status] => closed [ping_status] => closed [post_password] => [post_name] => 2018-dora-report-review [to_ping] => [pinged] => [post_modified] => 2020-03-05 19:07:24 [post_modified_gmt] => 2020-03-05 19:07:24 [post_content_filtered] => [post_parent] => 0 [guid] => https://keyvatech.com/?p=1106 [menu_order] => 42 [post_type] => post [post_mime_type] => [comment_count] => 0 [filter] => raw ) ) [post_count] => 8 [current_post] => -1 [before_loop] => 1 [in_the_loop] => [post] => WP_Post Object ( [ID] => 1149 [post_author] => 7 [post_date] => 2019-02-19 19:48:42 [post_date_gmt] => 2019-02-19 19:48:42 [post_content] => This technical guide will walk you through the installations of Ansible v2.4.2.0, an open source configuration management and deployment tool, and Ansible Tower (web layer for Ansible) v3.4.1 on a RHEL 7 virtual machine. Ansible Tower is a RedHat supported and paid version of AWX, which is open source. We will first enable the required repos:
sudo subscription-manager repos --enable rhel-7-server-ansible-2.6-rpms 
subscription-manager repos --enable rhel-7-desktop-optional-rpms
You can install the latest version of ansible using Yum:
yum install ansible
(Since we will be installing Ansible Tower on this same machine, it is recommended to use the Yum method to install Ansible). -OR- You can build the RPM package by downloading the latest version of Ansible code from Git. If choosing this method, first we will need to get all the pre-requisite libraries ready (some of these are optional):
yum update 
yum install python-dev python-pip wget 
yum install git 
yum update -y nss curl libcurl 
yum install rpm-build 
yum -y install python
Download the latest code, and build:
mkdir ansible 
cd ansible/ 
git clone https://github.com/ansible/ansible.git 
systemctl stop firewalld 
systemctl disable firewalld 
cd ./ansible/ 
make rpm 
rpm -Uvh ./rpm-build/ansible-*.noarch.rpm
Once installed, you can view and modify the default Ansible hosts file at /etc/ansible/hosts You can also verify successful installation using the command:
ansible –-version
Now, we can go ahead and set up Ansible Tower on this machine. We will be using the integrated installation, which installs the GUI, the REST API, and the database – all on the same machine:
mkdir ansible-tower 
cd ansible-tower/ 
wget https://releases.ansible.com/ansible-tower/setup-bundle/ansible-tower-setup-bundle-3.4.1-1.el7.tar.gz 
tar xvzf ansible-tower-setup-bundle-3.4.1-1.el7.tar.gz 
cd ansible-tower-setup-bundle-3.4.1-1.el7/
Tower connects to the PostgreSQL database using password authentication. We will need to create a md5 hash to configure Tower to talk with the database. Replace <CUSTOM-DB-PASSWORD> with a password of your choosing:
python -c 'from hashlib import md5; print("md5" + md5("<CUSTOM-DB-PASSWORD>" + "awx").hexdigest())'
Make a note of the hash key generated from this command. We will use it for our next step. We have to now update the inventory file (located within ansible-tower-setup-bundle-3.4.1-1.el7 directory) with the passwords for the database, the hash key generated above, and a custom password of our choosing for rabbit_mq. Find the following lines and update them accordingly. First, for setting the admin password for the console
admin_password='AdminPassword'
Next, set the password for database connectivity. Please note, this password should be the same as what you used to replace <CUSTOM-DB-PASSWORD> during the hash key generation step above. Also, we will paste the copied hash key, and set it for the hashed password line
pg_password='password' 
pg_hashed_password='md5f58b4d5d85dbde46651335d78bb56b8c'
And finally, choose a custom password for rabbit_mq
rabbitmq_password='password'
We are now ready to run the setup script
./setup.sh
Once all the steps are completed successfully, you can verify the Tower installation by going to the URL
https://<MACHINE-IP-OR-FQDN>:443
You can use the admin credentials (username: admin, password: admin password as defined in the inventory file) to log in and access the console. You can request a free Ansible Tower license for an evaluation environment of up to 10 nodes, or can purchase a RedHat subscription for larger environments, and some additional logging, management and support features. If you have any questions about the steps documented here, would like more information on the installation procedure, or have any feedback or requests, please let us know at info@keyvatech.com.
CTO Anuj Tuli Anuj joined Keyva from Tech Data where he was the Director of Automation Solutions. In this role, he specializes in developing and delivering vendor-agnostic solutions that avoid the “rip-and-replace” of existing IT investments. Tuli has worked on Cloud Automation, DevOps, Cloud Readiness Assessments and Migrations projects for healthcare, banking, ISP, telecommunications, government and other sectors. During his previous years at Avnet, Seamless Technologies, and other organizations, he held multiple roles in the Cloud and Automation areas. Most recently, he led the development and management of Cloud Automation IP (intellectual property) and related professional services. He holds certifications for AWS, VMware, HPE, BMC and ITIL, and offers a hands-on perspective on these technologies. Like what you read? Follow Anuj on LinkedIn at https://www.linkedin.com/in/anujtuli/ [post_title] => Installation Guide: Ansible & Ansible Tower - Day 1 [post_excerpt] => [post_status] => publish [comment_status] => closed [ping_status] => closed [post_password] => [post_name] => installing-guide-ansible-and-ansible-tower-day-1 [to_ping] => [pinged] => [post_modified] => 2019-02-21 19:08:28 [post_modified_gmt] => 2019-02-21 19:08:28 [post_content_filtered] => [post_parent] => 0 [guid] => https://keyvatech.com/?p=1149 [menu_order] => 35 [post_type] => post [post_mime_type] => [comment_count] => 0 [filter] => raw ) [comment_count] => 0 [current_comment] => -1 [found_posts] => 112 [max_num_pages] => 14 [max_num_comment_pages] => 0 [is_single] => [is_preview] => [is_page] => [is_archive] => [is_date] => [is_year] => [is_month] => [is_day] => [is_time] => [is_author] => [is_category] => [is_tag] => [is_tax] => [is_search] => [is_feed] => [is_comment_feed] => [is_trackback] => [is_home] => 1 [is_privacy_policy] => [is_404] => [is_embed] => [is_paged] => 1 [is_admin] => [is_attachment] => [is_singular] => [is_robots] => [is_favicon] => [is_posts_page] => [is_post_type_archive] => [query_vars_hash:WP_Query:private] => 4cb23135395ec3510d5a3f0d0dbdbc97 [query_vars_changed:WP_Query:private] => [thumbnails_cached] => [allow_query_attachment_by_filename:protected] => [stopwords:WP_Query:private] => [compat_fields:WP_Query:private] => Array ( [0] => query_vars_hash [1] => query_vars_changed ) [compat_methods:WP_Query:private] => Array ( [0] => init_query_flags [1] => parse_tax_query ) [tribe_is_event] => [tribe_is_multi_posttype] => [tribe_is_event_category] => [tribe_is_event_venue] => [tribe_is_event_organizer] => [tribe_is_event_query] => [tribe_is_past] => )
programming code

Installation Guide: Ansible & Ansible Tower – Day 1

This technical guide will walk you through the installations of Ansible v2.4.2.0, an open source configuration management and deployment tool, and Ansible Tower (web layer for Ansible) v3.4.1 on a ...
Read more
investigating IT

What is Microservices Architecture?

You may have heard the term Microservices when talking about applications, and some cases even when talking about underlying infrastructure. If you’ve worked with any OOPS language, you must be ...
Read more
Young IT engineer standing near datacenter servers

Installing Kong: A First Day Guide

If you’ve tried to install Kong from scratch, you know that it is a little more involved than what is posted on the official website guide. There are some pre-requisites ...
Read more
Inside the long server room tunnel

Avoid Cloud & Container Vendor Lock-In

We’ve all heard that containers and cloud technologies help us avoid lock-ins. While most of that is true, you could be unintentionally locking yourself to a particular technology or framework, ...
Read more
3 Digit on Dark Metal Background on red brick wall

3 Steps to Achieving Configuration Management Database (CMDB) Nirvana

You might’ve heard this before – configuration management database (CMDB) should be the single source of truth. But what does that mean? And how can you achieve it? With all ...
Read more
Server room caution sign

Configuration Drift : The Bane of Continuous Deployments

If you have tried setting up a DevOps pipeline to achieve continuous deployment, and ran into configuration drift issues –  you will know the pains quite well. A consistent and ...
Read more
Cloud computing, futuristic display technology connectivity concept

Application Modernization: A Path to Cloud-Native

Over the last few years, we’ve all been exposed to different meanings of the word “Cloud”. Similarly, other terms like “Application Development” and “Application Modernization” are sometimes used nebulously as ...
Read more
2018 Accelerate: State of DevOps Strategies for a New Economy

2018 DORA Report Review

by Anuj Tuli, Chief Technology Officer If you haven’t gotten a chance to review this year’s DORA report, check it out below. It has great information on Software Delivery Performance, ...
Read more