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: yesPlease 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.” ?