Even if YaK Core does not manage on-premises servers provisioning, these can be easily added to YaK inventory. If you are too excited, can’t wait to test YaK and have no cloud account handy, you can use our demo or deploy on premises.

Infrastructure Definitions

For on premise, we have to create the directory structure under configuration/infrastructure. Let’s call it on_prem.

In my yak container, it looks like this:

[email protected]:~/yak$ tree -d configuration/infrastructure/on_prem/
configuration/infrastructure/on_prem/
|-- srv-linux-ols-1
|   `-- WLS_DOMAIN
|       `-- secrets

As you can see, this server has one components declared (WLS_DOMAIN).

Let’s create variables.yml in on_prem directory:

is_cloud_environment: no
environment: development
ansible_user: ansible
provider: on-premises

The important key here is “provider“. For the cloud, this field can be equal to aws, azure or oci. In our case, it is equal to “on-premises“.

And, we have to define hosts details in another variables.yml inside srv-linux-ols-1 directory:

hostname: srv-linux-ols-1
host_ip_access: private_ip
private_ip:
   mode: manual
   ip: 192.168.222.111

Virtual Machine Provisioning

I will use Vagrant to provision a local VM with Oracle Linux 8. Vagrantfile (without extension) will look like:

Vagrant.configure("2") do |config|
  config.vm.box = "generic/oracle8"
  config.vm.network "private_network", ip: "192.168.222.111"
  config.vm.provider "virtualbox" do |vb|
    vb.memory = "4096"
  end
end

This file must be alone in a directory. Then, I simply trigger “vagrant up” to bring it up and “vagrant ssh” to ssh into it. This must be ran from that directory.

Deployment

Keep in mind that Ansible controller (aka as our YaK container) must have ssh access with a user allowed to sudo. As for me, I have created a user named ansible and added sudo for it. We have to exchange ssh key to make connection from YaK to VM password-less:

ssh-copy-id [email protected]

As a main difference with cloud deployment, we do not need (and can’t) create VM on premises with YaK, thus step below is not necessary:

ansible-playbook servers/deploy.yml -e target=on_prem/srv-linux-ols-1

We can go directly to the deployment of our component:

ansible-playbook components/weblogic_domain/playbooks/linux/deploy.yml -e target=on_prem/srv-linux-wls-ols-1/WLS_DOMAIN

This command is doing the following tasks:

  • Configuration of Linux including packages prerequisites and kernel configuration
  • Java installation
  • DMK WebLogic installation
  • WebLogic installation
  • WebLogic patching including Critical Patch Updates (CPU)
  • WebLogic domain creation
  • Domain configuration including dbi services best practices
  • Installation and configuration of Node Manager and domain services

Output example

For a typical hello-world example output will look like:

[email protected]:~/yak$ ansible-playbook srv-linux-ols-1s/hello-world/hello-world.yml -e target=on_prem/srv-linux-ols-1/COMPONENT

PLAY [Testing playbook] ************************

TASK [Gathering Facts] ************************
Thursday 06 October 2022  14:19:44 +0000 (0:00:00.024)       0:00:00.024 ******
ok: [on_prem/srv-linux-ols-1/COMPONENT]

TASK [System details] ************************
Thursday 06 October 2022  14:19:47 +0000 (0:00:02.870)       0:00:02.894 ******
ok: [on_prem/srv-linux-ols-1/COMPONENT -> localhost] => {
    "msg": "inventory_hostname: on_prem/srv-linux-ols-1/COMPONENT"
}

PLAY RECAP ************************
on_prem/srv-linux-ols-1/COMPONENT : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

Thursday 06 October 2022  14:19:47 +0000 (0:00:00.084)       0:00:02.979 ******
===============================================================================
Gathering Facts ---------------------------------- 2.87s
System details ----------------------------------- 0.09s

What’s Next?

Now that we have added host into YaK inventory, it is time to develop a component.

See you in my next blog to get more insights.