HowTo Setup Ansible Practice Lab Using Single Virtual Machine
Now a days Ansible is the most popular automation tool in DevOps industry. If you want learn it there are lot of documentation and video tutorial on youtube, That’s fine but you definitely need an lab to practice. Practice makes man more perfect. Let’s see HowTo Setup Ansible Practice Lab Using Single Virtual Machine with Docker containers.
HowTo Setup Ansible Practice Lab Using Single Virtual Machine with Docker Containers
To Install and configure Oracle Virtual box refer this Guide. After setting up Virtual Box and it’s network properly then create an Virtual Machine and install operating system Like Ubuntu, Centos and Debian.
run virtualized containers you have to install Docker in your virtual machine
# apt-get install docker.io #for Ubuntu [root@Ansible-Master aravi]# yum install docker #for Centos Installed: docker.x86_64 2:1.12.6-68.gitec8512b.el7.centos Dependency Installed: audit-libs-python.x86_64 0:2.7.6-3.el7 checkpolicy.x86_64 0:2.5-4.el7 container-selinux.noarch 2:2.33-1.git86f33cd.el7 container-storage-setup.noarch 0:0.8.0-3.git1d27ecf.el7 docker-client.x86_64 2:1.12.6-68.gitec8512b.el7.centos docker-common.x86_64 2:1.12.6-68.gitec8512b.el7.centos libcgroup.x86_64 0:0.41-13.el7 libsemanage-python.x86_64 0:2.5-8.el7 oci-register-machine.x86_64 1:0-3.13.gitcd1e331.el7 oci-systemd-hook.x86_64 1:0.1.14-1.git1ba44c6.el7 oci-umount.x86_64 2:2.3.0-1.git51e7c50.el7 policycoreutils-python.x86_64 0:2.5-17.1.el7 python-IPy.noarch 0:0.75-6.el7 setools-libs.x86_64 0:3.3.8-1.1.el7 skopeo-containers.x86_64 1:0.1.26-2.dev.git2e8377a.el7.centos yajl.x86_64 0:2.0.4-4.el7 Complete!
Enable and Start Docker Services
[root@Ansible-Master aravi]# systemctl status docker ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled) Active: inactive (dead) [root@Ansible-Master aravi]# systemctl enable docker Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service. [root@Ansible-Master aravi]# systemctl start docker [root@Ansible-Master aravi]# systemctl status docker ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2018-01-16 05:52:05 EST; 6s ago Docs: http://docs.docker.com Main PID: 4090 (dockerd-current) CGroup: /system.slice/docker.service ├─4090 /usr/bin/dockerd-current --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current --default-runtime=docker-runc --exec-opt native.cgroupd... └─4097 /usr/bin/docker-containerd-current -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --shim docker-containerd-shim --metrics-interval... [root@Ansible-Master aravi]# docker version Client: Version: 1.12.6 API version: 1.24 Package version: docker-1.12.6-68.gitec8512b.el7.centos.x86_64 Go version: go1.8.3 Git commit: ec8512b/1.12.6 Built: Mon Dec 13 16:08:42 2017 OS/Arch: linux/amd64 Server: Version: 1.12.6 API version: 1.24 Package version: docker-1.12.6-68.gitec8512b.el7.centos.x86_64 Go version: go1.8.3 Git commit: ec8512b/1.12.6 Built: Mon Dec 12 16:08:42 2017 OS/Arch: linux/amd64
Test docker is working fine
[root@Ansible-Master ~]# docker run hello-world
Search Docker Images
Docker image searching and finding required image is the key here
# docker search centos
Pull Docker image to local for installation
# docker pull docker.io/kinogmt/centos-ssh
Deploy Docker Image
# docker run -it -d docker.io/kinogmt/centos-ssh
Verify docker image is running correctly
[root@Ansible-Master ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 68aca7419d36 docker.io/kinogmt/centos-ssh "/bin/sh -c 'service " 9 seconds ago Up 5 seconds 22/tcp trusting_cray
To Know docker container IP Address run below command
[arkit]# docker inspect 68a |grep IPAddress
Reset user password because we are not known root user password of docker machine
# docker exec -u 0 -it 68a bash
In the same way as shown above repeat and install another docker containers with Ubuntu and Debian Operating systems
Preparing Ansible Master machine
Making ready of Ansible master machine we have install Ansible in base machine.
# yum install ansible
Check install ansible version
[root@Ansible-Master ~]# ansible --version ansible 2.4.1.0 config file = /etc/ansible/ansible.cfg configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python2.7/site-packages/ansible executable location = /usr/bin/ansible python version = 2.7.5 (default, Aug 4 2017, 00:39:18) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)]
edit ansible config file and change below parameter to false
[root@Ansible-Master ~]# cat /etc/ansible/ansible.cfg |grep host_key host_key_checking = False
Sample Ansible Hosts File
[root@Ansible-Master ~]# cat /etc/ansible/hosts localhost ansible_ssh_pass=redhat ansible_user=aravi Client01 ansible_host=172.17.0.2 ansible_user=root ansible_ssh_pass=redhat Client02 ansible_host=172.17.0.3 ansible_user=root ansible_ssh_pass=redhat [all] localhost Client01 Client02
Now test ansible using ping module
that’s it ready to rock. Happy Automation. HowTo Setup Ansible Practice Lab using Docker Container.
Related Articles
First Step is Writing Playbooks
Tower Installation Step by Step Guide
Copy SSH keys to remote hosts for the first time
Thanks for your wonderful Support and Encouragement