In Agile age, can't wait for environment’s (Development, Test, SIT and Pre-Prod and Prod) in place for start the development and configuration. What we need, just single windows system, where we can start provisioning with below tools and technologies. This will help more in Continues Development CD, Continues Integration CI and Continues Delivery CD.
Ansible centos virtualbox vagrant and provision |
Let’s discussed how it will possible:
Pre-quest:
Windows 7 OS 64
Install the Oracle VM VirtualBox or any VM more
Install Vagrant more
Download Centos box more
Install ansible
Install Git Bash more
Open the Git Base
Windows Start > All Programs > Git > Git Base
Welcome to Git (version 1.9.5-preview20150319)
Run 'git help <command>' to display help for specific commands.
Crete the directory vagrant-ansible-centos under c:\
e.g. c:\vagrant-ansible-centos
c:\vagrant-ansible-centos
- provision.sh
- Vagrantfile
- centos65-x86_64-20140116.box
- etc
- ansible
- web.yml
- site.yml
- roles
- git
- tasks
- main.yml
- tar
- tasks
- main.yml
- zip
- tasks
- main.yml
- inventory
- dev
Pest the all files under c:\vagrant-ansible-centos
1. Vagrantfile (no any extension)
#C:\vagrant-ansible-centos\Vagrantfile
# Vagrantfile Details
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "centos6"
config.vm.provider "virtualbox" do |vb|
vb.customize ["modifyvm", :id, "--memory", "5000", "--cpus", "2"]
end
config.vm.synced_folder ".", "/vagrant-ansible-centos"
end
2. provision.sh
#C:\vagrant-ansible-centos\provision.sh
cp -rf /vagrant-ansible-centos/inventory /tmp
chmod -x /tmp/inventory/*
sudo ansible-playbook -vvvv -i /tmp/inventory/$1 /vagrant-ansible-centos/etc/ansible/site.yml --extra-vars 'proxy_host="proxy_host" proxy_port="80" proxy_username="tutorialbyexample" proxy_password="password" proxy_required=true'
#sudo ansible-playbook -vvvv -i /tmp/inventory/$1 /vagrant-ansible-centos/etc/ansible/site.yml
3. dev (no extensions)
#C:\vagrant-ansible-centos\inventory
local ansible_ssh_port=2200 ansible_ssh_host=127.0.0.1 ansible_connection=local
[web-servers]
local
4. web.yml
#C:\vagrant-ansible-centos\etc\ansible\web.yml
---
- hosts: web-servers
remote_user: root
sudo: yes
roles:
- zip
- tar
- git
5. site.yml
#C:\vagrant-ansible-centos\etc\ansible\site.yml
---
- include: web.yml
6. main.yml (this is for git)
#C:\vagrant-ansible-centos\etc\ansible\roles\git\tasks\main.yml
---
- name: Install Git
yum: name={{ item }} state=present
with_items:
- git
- git-svn
7. main.yml (this is for tar)
#C:\vagrant-ansible-centos\etc\ansible\roles\tar\tasks\main.yml
---
- name: Install tar
yum: name=tar state=present
8. main.yml (this is for zip)
#C:\vagrant-ansible-centos\etc\ansible\roles\zip\tasks\main.yml
---
- name: Install zip/unzip util
yum: name={{ item }} state=present
with_items:
- "zip"
- "unzip"
Need to switch our base tool to vagrant-ansible-centos directory
$ cd C:\vagrant-ansible-centos
$ pwd
/c/vagrant-ansible-centos
$ ls -tlr
centos65-x86_64-20140116.box
inventory
etc
provision.sh
Vagrantfile
Note: assuming centos65-x86_64-20140116.box has been downloaded under c:\vagrant-ansible-centos
$ vagrant box add centos6 centos65-x86_64-20140116.box
Downloading or copying the box...
Extracting box...ate: 2005k/s, Estimated time remaining: --:--:--)
Successfully added box 'centos6' with provider 'virtualbox'!
Note: You will experiences new folder created under /c/vagrant-ansible-centos with name .vagrant
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
[default] Importing base box 'centos6'...
[default] Matching MAC address for NAT networking...
[default] Setting the name of the VM...
[default] Clearing any previously set forwarded ports...
[default] Fixed port collision for 22 => 2222. Now on port 2200.
[default] Creating shared folders metadata...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2200 (adapter 1)
[default] Running 'pre-boot' VM customizations...
[default] Booting VM...
[default] Waiting for machine to boot. This may take a few minutes...
[default] Machine booted and ready!
[default] Mounting shared folders...
[default] -- /vagrant
[default] -- /vagrant-ansible-centos
[default] Configuring proxy environment variables...
[default] Configuring proxy for Yum...
Alternatively, ssh into localhost:2200 or 2222 what ever printed on above
using private key c/vagrant-ansible-centos\.vagrant\machines\default\virtualbox\private_key
$ vagrant ssh
[vagrant@vagrant-centos65 ~]$ pwd
/home/vagrant
[vagrant@vagrant-centos65 ~]$ ls -tlr
total 0
[vagrant@vagrant-centos65 ~]$ cd /vagrant-ansible-centos/
[vagrant@vagrant-centos65 vagrant-ansible-centos]$ ls -tlr
centos65-x86_64-20140116.box
inventory
etc
provision.sh
Vagrantfile
All this files will mount in /vagrant-ansible-centos/ as mentioned in Vagrent file.
Install the Ansible
[vagrant@vagrant-centos65 vagrant-ansible-centos]$ sudo yum install ansible
Loaded plugins: fastestmirror, versionlock
Determining fastest mirrors
epel/metalink
* base: centos.openitc.uk
* epel: epel.besthosting.ua
* extras: centos.mirroring.pulsant.co.uk
* updates: centos.serverspace.co.uk
...
..
Complete!
Verify the Ansible
[vagrant@vagrant-centos65 vagrant-ansible-centos]$ ansible --version
ansible 1.9.2
configured module search path = None
Provision it, with provision.sh script along with Ansible
[vagrant@vagrant-centos65 vagrant-ansible-centos]$ ./provision.sh dev
PLAY [web-servers] ************************************************************
GATHERING FACTS ***************************************************************
ok: [local]
TASK: [zip | Install zip/unzip util] ******************************************
<127.0.0.1> REMOTE_MODULE yum name=zip,unzip state=present
TASK: [tar | Install tar] *****************************************************
<127.0.0.1> REMOTE_MODULE yum name=tar state=present
ok: [local] => {"changed": false, "msg": "", "rc": 0, "results": ["tar-1.23-11.el6.x86_64 providing tar is already installed"]}
TASK: [git | Install Git] *****************************************************
<127.0.0.1> REMOTE_MODULE yum name=git,git-svn state=present
PLAY RECAP ********************************************************************
local : ok=4 changed=2 unreachable=0 failed=0
[vagrant@vagrant-centos65 vagrant-ansible-centos]$
Verify the provision software, e.g. git, tar and zip
[vagrant@vagrant-centos65 vagrant-ansible-centos]$ git --version
git version 1.7.1
[vagrant@vagrant-centos65 vagrant-ansible-centos]$ tar --version
tar (GNU tar) 1.23
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by John Gilmore and Jay Fenlason.
[vagrant@vagrant-centos65 vagrant-ansible-centos]$ zip --version
Copyright (c) 1990-2008 Info-ZIP - Type 'zip "-L"' for software license.
This is Zip 3.0 (July 5th 2008), by Info-ZIP.
Currently maintained by E. Gordon. Please send bug reports to
the authors using the web page at www.info-zip.org; see README for details.
Latest sources and executables are at ftp://ftp.info-zip.org/pub/infozip,
as of above date; see http://www.info-zip.org/ for other sites.
Compiled with gcc 4.4.4 20100525 (Red Hat 4.4.4-5) for Unix (Linux ELF) on Nov 11 2010.
Zip special compilation options:
USE_EF_UT_TIME (store Universal Time)
SYMLINK_SUPPORT (symbolic links supported)
LARGE_FILE_SUPPORT (can read and write large files on file system)
ZIP64_SUPPORT (use Zip64 to store large files in archives)
UNICODE_SUPPORT (store and read UTF-8 Unicode paths)
STORE_UNIX_UIDs_GIDs (store UID/GID sizes/values using new extra field)
UIDGID_NOT_16BIT (old Unix 16-bit UID/GID extra field not used)
[encryption, version 2.91 of 05 Jan 2007] (modified for Zip 3)
Encryption notice:
The encryption code of this program is not copyrighted and is
put in the public domain. It was originally written in Europe
and, to the best of our knowledge, can be freely distributed
in both source and object forms from any country, including
the USA under License Exception TSU of the U.S. Export
Administration Regulations (section 740.13(e)) of 6 June 2002.
Zip environment options:
ZIP: [none]
ZIPOPT: [none]
[vagrant@vagrant-centos65 vagrant-ansible-centos]$
Is not it simple? For real implementation only we have to change the actual IP address of web server.
C:\vagrant-ansible-centos\inventory\dev
local ansible_ssh_port=2200 ansible_ssh_host=127.0.0.1 ansible_connection=local
[web-servers]
local
Note: instead of local need to change the actual IP address and it will work for you.
Feel free put your point of view if any. Happy learning and implementation!!!
Reference from:
Truly a very good article on future technology. Thanks for discussing this, I love to learn more about this topic.
ReplyDeleteDevOps Training in Chennai
DevOps course in Chennai
AWS Training in Chennai
AWS Training in Velachery
Cloud Computing Courses in Chennai
RPA course in Chennai
DevOps Training in OMR
DevOps Training in Chennai
Great Article!!! thanks for sharing your ideas and thoughts with us.
ReplyDeleteJava Training in Chennai
ReactJS Training in Chennai
Best CCNA Training Institute in Chennai
ccna certification in Chennai
CCNA Training in Chennai
This blog is unique from all others. Thanks for sharing this content in an excellent way. Waiting for more updates.
ReplyDeleteIELTS Coaching in Anna Nagar
IELTS Coaching in Adyar
IELTS Coaching in Porur
IELTS Coaching in Chennai
Spoken English Classes in Chennai
Best Spoken English Classes in Chennai
Spoken English Class in Chennai
Thanks for sharing this valuable information to our vision. You have posted a worthy blog keep sharing.
ReplyDeleteReactJS Training in Chennai
ReactJS Training
ReactJS course
Ethical Hacking Course in Chennai
PHP Training in Chennai
gst classes in chennai
Angularjs Training in Chennai
Thanks for sharing such a most informative blog.... Waiting for the new updates...
ReplyDeleteSoftware Testing Course in Coimbatore
Software testing Training in coimbatore
best software testing training institute in coimbatore
software testing course in coimbatore with placement
Java Training in Bangalore
Java Training Institutes in Bangalore
AWS Training in Bangalore
data analytics courses in bangalore
Android Training in Coimbatore
ReplyDeleteGreat work...! This article is very informative and very interesting. This is much helpful to gain my knowledge, please keep posting...
Corporate Training in Chennai
Corporate Training institute in Chennai
Excel Training in Chennai
Embedded System Course Chennai
Oracle DBA Training in Chennai
Linux Training in Chennai
Power BI Training in Chennai
Oracle Training in Chennai
Primavera Training in Chennai
Unix Training in Chennai
Really informative blog for all people. Thanks for sharing it.
ReplyDeleteSpoken English Classes in Chennai
Spoken English Course in Chennai
german classes
Best IELTS Coaching in Chennai
learn Japanese in Chennai
TOEFL Coaching Centres in Chennai
Spoken English Classes in Anna Nagar
Spoken English Classes in Tnagar
Good tutorial for Ansible, however you are still looking for one two one session then contact us Online/Corporate Ansible Training
DeleteGood tutorial for Ansible, however you are still looking for one two one session then contact us Online/Corporate Ansible Training
ReplyDeletePython Programming Full Course Python Programming Full Course
ReplyDeleteSonatype Nexus Repository Manager Full Course Sonatype Nexus Repository Manager Full Course
Apache Maven Full Course Apache Maven Full Course
Git Full Course Git Full Course
Thanks for your post and one of best course has been designed and published in youtube Python, Maven, Git and Nexus Full Courses
ReplyDeleteterraform-aws-beginner-advanced-level-full-course
ReplyDeleteWelcome and in "Terraform Full Course Beginner to Advanced Level" course you are going to learn as mentioned points in details:
1. Terraform Introduction
1.1 Terraform Architecture
2. Terraform Installation In Windows 10
3. Terraform Pros and Cons
4. Terraform Provider & AWS Access and Secret Key
5. Terraform Input Variables
6. Terraform Resource
7. Terraform Data Source
8. Terraform Output Values
9. Terraform Commands
9.1 Terraform Commands Add Change and Destroy
10. Terraform Instance
11. Terraform VPC, Subnet, IG, NGW, Security Group, and Instance
12. Terraform VPC, Subnet, IG, NGW, Security Group, Instance and Route 53
13. Terraform Modules 901 & 902
13.1. Terraform Modules 903
14. Terraform S3 Bucket
15. Terraform State Local and Remote
16. Terraform Import (Reverse Engineering)
17. Terraform Multi-Envs and Multi-Region
18. Terraform 1401 Count
19. Terraform 1402 For_Each
Other full courses links:
Terraform and AWS Full Course Terraform and AWS Full Course
Python Programming Full Course Python Programming Full Course
Sonatype Nexus Repository Manager Full Course Sonatype Nexus Repository Manager Full Course
Apache Maven Full Course Apache Maven Full Course
Git Full Course Git Full Course
Docker help us to make our application build, ship and run faster in any environment and its working dev then works for other env as well...
DeletePlease like, share and subscribe it!
Docker
how to install apache maven in linux: https://youtu.be/ghowGi_Iz3k
ReplyDelete