Showing posts with label Ansible for WebLogic. Show all posts
Showing posts with label Ansible for WebLogic. Show all posts

Tuesday, May 1, 2018

Ansible automation for WebLogic - Part 2: Unarchive and Copy WebLogic installers

This post is continuous learning "Ansible automation for WebLogic" series. If you are not read the previous post please go through it which will be telling you that Java installation using Ansible. That same play book you can use it for CPU patches. The objective of this post is to use the ansible playbook for unzip the WebLogic installer and run the silent mode installer. As we have explored in the last post unarchive module used for the Java installer which had tar.gz extension.  There are multiple modules in ansible which are very powerful. In this post I would like to share my experiments with the following:

  1. unarchive module
  2. copy module
Unarchive module in Ansible

We can use the unarchive module for Zip files and also for tar.gz files. When we use this module need to provide the src, dest values that is source and destination. This module automatically copies the zip file and unzip it in the remote

The copy module in Ansible
The copy module is works similar to scp in Linux it will copy the specified files in the source to destination. We can copy multiple files to remote machine with_item option. You need to provide the list of filenames that need to copy in the list.

WebLogic response file, OraInv.loc and zip file to remote boxes using ansible modules


Working in preparation of WebLogic development environments, where we need to use the WebLogic quick installer is around 230 megabytes in size. We choose this installer because which is most preferable installer for docker clusters and virtualization implementation environments or cloud environments. After download from the Oracle site, First we need to unzip the installer.

The response file
Now lets create the silent response file for WebLogic.
[ENGINE]
Response File Version=1.2.0.0.0
[GENERIC]
ORACLE_HOME=/home/vagrant/fmw
INSTALL_TYPE=WebLogic Server
DECLINE_SECURITY_UPDATES=true
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false

The oraInst.loc file

inst_group=vagrant
inventory_loc=/home/vagrant/oraInventoy


Lets copy and enhancing the existing playbook file added WebLogic specific installer and silent response file, oraInv.loc files


vi wls_ins_fcp.yml
---
- hosts: appservers
  remote_user: vagrant
  tasks:
   - name: Unpack archive
     unarchive:
        src: /u01/app/software/jdk/jdk-8u172-linux-x64.tar.gz
        dest: /home/vagrant
        remote_src: yes
   - name: WebLogic Software unzip
     unarchive:
        src: /u01/app/software/FMW_wls/fmw_12.2.1.3.0_wls_quick_Disk1_1of1.zip
        dest: /tmp
   - name: Copy install script and properties
     copy:
        src: ~/wls-auto/{{ item }}
        dest: /tmp
        mode: "a+r"
     with_items:
        [wls_install.rsp,oraInst.loc]

Now run the playbook
vagrant@docking ~/wls-auto $ ansible-playbook -i ~/hosts wls_ins_fcp.yml

PLAY [appservers] **************************************************************

TASK [Gathering Facts] *********************************************************
ok: [192.168.33.102]
ok: [192.168.33.100]

TASK [Unpack archive] **********************************************************
ok: [192.168.33.102]
ok: [192.168.33.100]

TASK [WebLogic Software unzip] *************************************************
changed: [192.168.33.100]
changed: [192.168.33.102]

TASK [Copy install script and properties] **************************************
ok: [192.168.33.100] => (item=wls_install.rsp)
ok: [192.168.33.102] => (item=wls_install.rsp)
ok: [192.168.33.100] => (item=oraInst.loc)
ok: [192.168.33.102] => (item=oraInst.loc)

PLAY RECAP *********************************************************************
192.168.33.100             : ok=4    changed=1    unreachable=0    failed=0
192.168.33.102             : ok=4    changed=1    unreachable=0    failed=0

No two programs will be same each one can differently to achieve the same task. Lets confirm the execution of the above ansible playbook.
WebLogic installer, response file, oraInst.loc file into remote /tmp 


Next we will be work with the above files to install the WebLogic in remote machines using Ansible.

Expecting your feedback  in the comment section to improve ourself to give much better solutions.

References

  1. Unarchive module
  2. Copy module

Wednesday, April 25, 2018

Ansible automation for WebLogic - Part1 Java Installation

Ansible is a task execution engine. Ansible is designed to work on multiple machines to execute the batch of simple task to scale. Ansible is written in Python language, it uses Python 2.6 above is supported platform as requirement.

No Agents required!

Ansible is simple language that is started as opensource and later it is acquired by Red Hat. The core communication happens with SSH. SSH widely available trusted in all UNIX and Linux systems. Ansible can be run any system as it doesn't relay on central machine.
Ansible automation for Java and WebLogic 12c 

Here my experiment goes with two Ubuntu 14 Trusty Tahr machine. In one machine Ansible will be installed and other machine is used as target node, in real-time scenario the target list can be many hundreds and this has been proven by NASA and other Ansible implements. Using Ansible lots of organizations get into structured and role based automation implementations successful.

For Redhat flavors


The actions that need to executed in remote host machine are called TASK. playbooks are executable batches which are ymal files. Plays are having one or more tasks.   Playbooks can be collections of tasks. Plays are executed top to bottom when it parse the playbook. to work with playbook we must define inventory which we define hosts file.

Defining Inventory in hosts file
This can be placed in user home directory or common location /etc/ansible/hosts. The inventory will be defined with groups such as webapps, appservers, dbservers etc. As we are going to work on WebLogic application server we will define it as appservers group in the host inventory.

Host Inventory defining for ansible

There are many alternative options that shown in the above picture to define the host inventory. We can make grouped and un-grouped host list. Mostly grouped inventory is having more options to define the host list. we can include the list with IP address list or you can use hostnames list as well. While grouping we need to think about the task execution procedure.

Lets create a simple one our WebLogic servers host IP into the appservers as a group the file.could be stored in the $HOME path with the content as follows:

vi hosts
[appservers]
192.168.33.100
192.168.33.102


Setting up Ansible to run with SSH


ssh-keygen -t rsa -b 4096 -C "My ansible key"

ssh-keygen for vagrant user

copy the ssh key

ssh-copy-id -i ~/.ssh/id_rsa.pub vagrant@192.168.33.102



now regular Unix level command try to connect with ssh this should not prompt for password
ssh vagrant@192.168.33.10
ssh connection validation for ansible
eval $(ssh-agent)


ssh-add

lets confirm now with ansible all ssh connections are good to go for ansible play.

ansible -i ~/hosts -m ping all

ansible hosts ping all


Create your first yaml file for ansible play

The playbook is developed with yaml coding to set up couple of plays. Each play contain multiple task, which will tell the Ansible engine.

Ansible Playbook structure


Each task can be developed with module which is a part of core module and we can also create custom modules if required. There 700+ modules are freely available in opensource ansible. Here I am going to use the unarchive core module which requires src, dest values and this sample playbook have only have single play that will install Java that is unarchive the tar.gz file that is availabe in the specified shared location mentioned as src. If you don't have shared drive then ansile should use copy module and then use this task.

vagrant@docking ~/wls_auto $ cat java_install.yml
- hosts: appservers
  remote_user: vagrant
  tasks:
   - name: Unpack archive
     unarchive:
        src: /u01/app/software/jdk/jdk-8u172-linux-x64.tar.gz
        dest: /home/vagrant
        remote_src: yes


Please correct if indentation looks wrong

The execution is as follows:



We will be sharing the part 2 which will be install the WebLogic in the remote machine.

Please let me know you have any new thoughts on automation with Ansible code. This post is beginning.

References:

How to install and configure Ansible on Ubuntu?
Unarchive module sample
How to solve “Permissions 0777 for ‘~/.ssh/id_rsa’ are too open.” ?



Blurb about this blog

Blurb about this blog

Essential Middleware Administration takes in-depth look at the fundamental relationship between Middleware and Operating Environment such as Solaris or Linux, HP-UX. Scope of this blog is associated with beginner or an experienced Middleware Team members, Middleware developer, Middleware Architects, you will be able to apply any of these automation scripts which are takeaways, because they are generalized it is like ready to use. Most of the experimented scripts are implemented in production environments.
You have any ideas for Contributing to a Middleware Admin? mail to me wlatechtrainer@gmail.com
QK7QN6U9ZST6