<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>devops Archives -</title>
	<atom:link href="https://barriersec.com/tag/devops/feed/" rel="self" type="application/rss+xml" />
	<link>https://barriersec.com/tag/devops/</link>
	<description></description>
	<lastBuildDate>Mon, 14 Sep 2020 03:19:44 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.2.15</generator>

<image>
	<url>https://barriersec.com/wp-content/uploads/cropped-Monochrome-on-Transparent-32x32.png</url>
	<title>devops Archives -</title>
	<link>https://barriersec.com/tag/devops/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Introduction to Ansible Part 3</title>
		<link>https://barriersec.com/2018/09/introduction-to-ansible-part-3/</link>
		
		<dc:creator><![CDATA[goutham madhwaraj]]></dc:creator>
		<pubDate>Sat, 22 Sep 2018 17:44:26 +0000</pubDate>
				<category><![CDATA[Introduction to Ansible Part 3]]></category>
		<category><![CDATA[ansible]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[jboss]]></category>
		<guid isPermaLink="false">https://barriersec.com/?p=217</guid>

					<description><![CDATA[<p>Hi there! Its been a long time since i posted continuation series on Ansible . if you have not read&#8230;</p>
<p>The post <a rel="nofollow" href="https://barriersec.com/2018/09/introduction-to-ansible-part-3/">Introduction to Ansible Part 3</a> appeared first on <a rel="nofollow" href="https://barriersec.com"></a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Hi there! Its been a long time since i posted continuation series on Ansible . if you have not read part one and two  it can be found <a href="https://barriersec.com/category/linux-system-administration/introduction-to-ansible-part-1/">here .</a></p>
<p>Now lets quickly define our objectives.</p>
<ol>
<li>Remotely manage ( Start/Stop ) the JBoss server with the help of a custom SystemD initialization script which is in turn called using Ansible remotely.</li>
<li>Deploy a war file on JBoss application server which is placed at a remote machine.</li>
<li>Undeploy a war file on JBoss server remotely.</li>
</ol>
<p>As explained in our previous article, we can define static variables and defaults inside <strong>roles/webserver/</strong><strong>defaults/main.yml</strong> file. So lets define our defaults variables. place these in the specified file(on ansible server machine) :</p>
<p><strong><em>name : test</em></strong></p>
<p><strong><em>Username: DBuser</em></strong></p>
<p><strong><em>Password: DBPass</em></strong></p>
<p><strong><em>driver : &lt;drivername&gt;</em></strong></p>
<p><strong><em>connection_url : &lt;connection_url&gt;</em></strong></p>
<p><strong><em>pool_name: &lt;pool_name&gt;</em></strong></p>
<p><strong><em>JNDI_HOME: &lt;jndi_home&gt;</em></strong></p>
<p><strong><em>filter : &#8220;&lt;user-name&gt;{ { Username} }&lt;/user-name&gt;&#8221;</em></strong></p>
<p><strong><em>deployname: warfile.war</em></strong></p>
<p><strong><em>deploy_path: /path/to/deployment/scanner/path</em></strong></p>
<p><strong><em>DeploySrcTemp: /remotepath/to/deployment</em></strong></p>
<p>Now lets create a systemd service to control Jboss service. let us name it as   <strong>JbossControl.service </strong>with the following content.for tutorial on systemD refer my previous article :</p>
<p>&nbsp;</p>
<p><em><strong>[unit]</strong></em></p>
<p><em><strong>Description= Jboss Application server control script</strong></em></p>
<p><em><strong>After = network.target</strong></em></p>
<p><em><strong>[Service]</strong></em></p>
<p><em><strong>Type=idle</strong></em></p>
<p><em><strong>ExecStart=/path/to/jboss/bin/standalone.sh</strong></em></p>
<p><em><strong>ExecStop=/path/to/jboss/bin/jboss-cli.sh &#8211;connect command=:shutdown</strong></em></p>
<p><em><strong>TimeoutStartSec=400</strong></em></p>
<p><em><strong>TimeoutStopSec=400</strong></em></p>
<p><em><strong>[install]</strong></em></p>
<p><em><strong>WantedBy=multi-user.target</strong></em></p>
<p>save the file on remote machine and move it to <strong>roles/webserver/templates/ JbossControl.service.</strong></p>
<p>Now we have required resources which are required for managing a Jboss app server remotely.</p>
<p>Now on our ansible server machine, we can update our <strong>roles/webserver/tasks/main.yml </strong>file with following content.</p>
<p><strong> &#8212;</strong></p>
<p><strong> &#8211; name: copy jboss service file to systemd folder</strong></p>
<p><strong>   copy:</strong></p>
<p><strong>     src : &#8220;/path/to/ansible/roles/server/templates/JbossControl.service&#8221;</strong></p>
<p><strong>    dest: /etc/systemd/system/jbossControl.service</strong></p>
<p><strong>tags: [copyService]</strong></p>
<p>&nbsp;</p>
<p><strong> &#8211; name: start JBoss service</strong></p>
<p><strong>     systemd:</strong></p>
<p><strong>          state: started</strong></p>
<p><strong>          name: jbossControl</strong></p>
<p><strong>    tags: [StartJboss]</strong></p>
<p>&nbsp;</p>
<p><strong> &#8211; name: stop JBoss service</strong></p>
<p><strong>     systemd:</strong></p>
<p><strong>          state: stopped</strong></p>
<p><strong>          name: jbossControl</strong></p>
<p><strong>    tags: [StopJboss]</strong></p>
<p>&nbsp;</p>
<p>As we see in the tasks file, we have  used <strong>systemd module of ansible</strong> to invoke <strong>systemd services and targets</strong> . We have also utilized<strong> copy module</strong> to copy files from one location to another on remote system .now we can create a play.yml in the project root directory. with the following content:</p>
<p><strong> -hosts : RemoteMachines</strong></p>
<p><strong>  sudo : yes</strong></p>
<p><strong>  roles:</strong></p>
<p><strong>   &#8211; webserver </strong></p>
<p>now we can invoke this playbook to start jboss/stop jboss on remote machine as follows :</p>
<p>to start Jboss application server on remote machines defined in <strong>RemoteMachines</strong> file :</p>
<blockquote><p><strong>&gt; ansible-playbook play.yml &#8211;tags &#8220;copyService,StartJboss&#8221;</strong></p></blockquote>
<p>to stop Jboss application server on remote machines defined in <strong>RemoteMachines</strong> file :</p>
<p><strong>&gt; ansible-playbook play.yml &#8211;tags &#8220;StopJboss&#8221;</strong></p>
<p>here , tags attribute while calling the playbook helps us to specify which services to run from the role. if we do not specify the tags, every task on the specified role runs and returns the result.</p>
<p>We have successfully completed the first objective of managing the remote JBoss application server! In the next tutorial we will see how to deploy and un deploy the war file remotely which also in turn involves managing data sources and config files. Stay Tuned !</p>
<p>&nbsp;</p>
<p>The post <a rel="nofollow" href="https://barriersec.com/2018/09/introduction-to-ansible-part-3/">Introduction to Ansible Part 3</a> appeared first on <a rel="nofollow" href="https://barriersec.com"></a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Introduction to Ansible : Part 2</title>
		<link>https://barriersec.com/2018/05/introduction-ansible-part-2/</link>
		
		<dc:creator><![CDATA[goutham madhwaraj]]></dc:creator>
		<pubDate>Thu, 24 May 2018 14:39:13 +0000</pubDate>
				<category><![CDATA[Introduction to Ansible Part 2]]></category>
		<category><![CDATA[Linux System Administration]]></category>
		<category><![CDATA[ansible]]></category>
		<category><![CDATA[ansible roles]]></category>
		<category><![CDATA[ansible2]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[introduction to ansible]]></category>
		<guid isPermaLink="false">https://barriersec.com/?p=122</guid>

					<description><![CDATA[<p>In the previous post, we have described basic introduction of Ansible and its advantages . In this post lets build&#8230;</p>
<p>The post <a rel="nofollow" href="https://barriersec.com/2018/05/introduction-ansible-part-2/">Introduction to Ansible : Part 2</a> appeared first on <a rel="nofollow" href="https://barriersec.com"></a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>In the previous post, we have described basic introduction of Ansible and its advantages . In this post lets build a skeleton of the project hierarchy we follow . I will explain what each of these structure does and how it would benefit us.</p>
<p>Now before we dive  into the structure, Ansible uses YAML syntax inside its file called playbook(playbook means simply a file with set of tasks bundled together)  . If you are not comfortable with YAML syntax or if you want to skim it through please refer Ansible documentation. They have the best explanation out there. <strong>http://docs.ansible.com/ansible/latest/reference_appendices/YAMLSyntax.html</strong></p>
<p>now lets create our first basic ansible playbook.</p>
<p>Create a file named test.yml inside project folder,And paste this content.</p>
<p><strong>&#8212;</strong></p>
<p><strong>&#8211; hosts: remoteMachines</strong><br />
<strong>   tasks:</strong><br />
<strong>      &#8211; shell: echo &#8220;Hi!&#8221;</strong></p>
<p>Save the file . Before running this append this line to the host under remoteMachines in the hosts file we created in the previous tutorial.</p>
<p>like this ,</p>
<p style="text-align: center;"><strong>192.168.1.112 ansible_user=sshuser1</strong></p>
<p style="text-align: center;"><strong>192.168.1.113 ansible_user=sshuser2</strong></p>
<p>This line specifies this user is used to SSH into the remote Host.(by default it takes the current user of the ansible server machine)</p>
<p>&nbsp;</p>
<p>and to run the playbook we just created , use the following command :</p>
<p style="text-align: center;"><strong>&gt; ansible-playbook  test.yml</strong></p>
<p>this should return &#8220;Hi!&#8221; from both the remote machine output. And in the playbook we just created, <em><strong>hosts</strong> </em>specifies the hosts we want to run the tasks on. It has a single task which uses the shell module to run echo &#8220;Hi!&#8221; command.</p>
<p>Now lets assume a scenario in which we have many common tasks to be run on multiple playbooks. To address such scenario , we will follow a specific structure and in order to reuse tasks spread across multiple playbooks, we will use a feature called &#8220;roles&#8221;.</p>
<p>Inside the project folder create a folder called as &#8220;roles&#8221;. Inside roles directory we will create another folder this folder is the name of role we want to use.(ex: webserver).</p>
<p style="text-align: center;">Inside webserver folder we will create these folders and files respectively. hierarchy as follows,<br />
<strong>Roles &gt; Webserver &gt; defaults &gt; main.yml</strong></p>
<p style="text-align: center;"><strong>Roles &gt; Webserver &gt; tasks &gt; main.yml</strong></p>
<p style="text-align: center;"><strong>Roles &gt; Webserver &gt; handlers &gt; main.yml</strong></p>
<p style="text-align: center;"><strong>Roles &gt; Webserver &gt; templates </strong></p>
<p>Inside <strong>defaults</strong> folder ,we will find variables and default values in format of &#8220;name:value&#8221; pair inside main.yml file, these are extensively used in playbooks , templates and are placed to increase re usability.</p>
<p>Inside <strong>tasks</strong> folder , we will find set of tasks associated to the role inside main.yml file .</p>
<p>Inside <strong>handlers</strong> folder, we will find different handlers associated with the tasks. Handlers are similar to tasks . only difference is handlers are invoked only by another task.</p>
<p>Inside <strong>templates </strong>folder, we will find templates , which contains changing  values inside configuration files and these can be replaced by values inside defaults folder. They are processed by Jinja 2  template language.</p>
<p>Now in order to run this role, create a file named play.yml file inside project root folder. and place the following content and save</p>
<p><strong> &#8211; hosts: remoteMachines<br />
roles:<br />
&#8211; webserver</strong></p>
<p>As we can see there is a granularity of different type of functionalities and reusability of tasks can be achieved by the concept of roles.</p>
<p>In the next tutorial , we will look at how to use this hierarchy to write a functional role and execute this playbook. Thank you!</p>
<p>&nbsp;</p>
<p>The post <a rel="nofollow" href="https://barriersec.com/2018/05/introduction-ansible-part-2/">Introduction to Ansible : Part 2</a> appeared first on <a rel="nofollow" href="https://barriersec.com"></a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Introduction to Ansible : Part 1</title>
		<link>https://barriersec.com/2018/05/introduction-ansible-part-1/</link>
		
		<dc:creator><![CDATA[goutham madhwaraj]]></dc:creator>
		<pubDate>Wed, 23 May 2018 22:56:35 +0000</pubDate>
				<category><![CDATA[Introduction to Ansible Part 1]]></category>
		<category><![CDATA[Linux System Administration]]></category>
		<category><![CDATA[ansible]]></category>
		<category><![CDATA[ansible2]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[infrastructure automation]]></category>
		<guid isPermaLink="false">https://barriersec.com/?p=112</guid>

					<description><![CDATA[<p>In one of my recent projects, I had this specific task , to automate Jboss Application server deployment. since it&#8230;</p>
<p>The post <a rel="nofollow" href="https://barriersec.com/2018/05/introduction-ansible-part-1/">Introduction to Ansible : Part 1</a> appeared first on <a rel="nofollow" href="https://barriersec.com"></a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>In one of my recent projects, I had this specific task , to automate Jboss Application server deployment. since it was running on a Ubuntu  machine , I thought of automating the whole process altogether . I had several Options , I chose Ansible as it satisfied all my requirements and less overhead Server administration .</p>
<p>In this article we will look at basics of Ansible and we will cover some more extensive features in later tutorials.</p>
<p>What is Ansible?</p>
<p>Ansible is an Infrastructure Automation Tool , widely used for automating day to day management of remote server tasks.</p>
<p>Why Ansible?</p>
<blockquote><p>Management of multiple  Linux remote Hosts using SSH, in parallel.</p>
<p>Also supports Windows environment using powershell</p>
<p>Easy to use and works out of the box, no overhead of installing extra tools on slave machines . (relies on SSH for controlling)</p>
<p>Uses concept of states in which comparision of current state and the desired state of the task at hand is made, if the condition satisfies , task returns the existing state without running the task .</p></blockquote>
<p>You can read more about Ansible  : https://www.ansible.com</p>
<p>Main goal of this tutorial : have a centralized server with ansible installed to control remote(slave) machines to run or accomplish a specific task.</p>
<p>Lets Now setup ansible on Server machine.</p>
<p>How To install Ansible ?</p>
<p>You can install Ansible as a python pip package.</p>
<p>&gt; <strong>pip install ansible</strong></p>
<p>Once done, create a test project folder and inside it lets create an inventory file named &#8220;hosts&#8221; . This file is mainly used to define various groups of machine we would like to remotely manage.(use your favourite text editor and save this as content)</p>
<p>content of hosts file :</p>
<p style="text-align: center;">[myMachine]</p>
<p style="text-align: center;">127.0.0.1</p>
<p style="text-align: center;">[remoteMachines]</p>
<p style="text-align: center;">192.168.1.112</p>
<p style="text-align: center;">192.168.1.113</p>
<p>As we can see , there are two groups with labels <strong>myMachine</strong> and remoteMachines to administer different set of machines. <strong>myMachine</strong> would control my local machine ,whereas the <strong>remoteMachines </strong>would control other machines in the network.</p>
<p>Note : As a prerequisite the server machine should be configured to auto SSH  to slave machines. ( to avoid specifying parameters on runtime)</p>
<p>now lets run a simple task against myMachine (that is localhost)</p>
<p style="text-align: center;"><strong>&gt; ansible -i hosts   myMachine &#8211;connection=<span class="hljs-built_in">local</span>  -m ping</strong></p>
<p>&nbsp;</p>
<p>here we can see , -i parameter specifies the inventory file name , in this case its &#8220;hosts&#8221; . myMachine specifies the group label of the machines for which task has to run. here machines under that label will run the task. &#8220;&#8211;connection=local&#8221; which specifies run the command on localhost (not to use SSH). -m arg specifies the module to be used. Here we are using Ping module.(we will see more in upcoming tutorials)</p>
<p>typical response should be,</p>
<p style="text-align: center;">127.0.0.1 | success &gt;&gt; {<br />
<span class="hljs-string">&#8220;changed&#8221;</span>: <span class="hljs-literal">false</span>,<br />
<span class="hljs-string">&#8220;ping&#8221;</span>: <span class="hljs-string">&#8220;pong&#8221;</span><br />
}</p>
<p>If you have successfully completed this , congratulations! you have run your first ansible task. In upcoming tutorials, we will look at more granular ways of running tasks using concept of roles.</p>
<p>&nbsp;</p>
<p>The post <a rel="nofollow" href="https://barriersec.com/2018/05/introduction-ansible-part-1/">Introduction to Ansible : Part 1</a> appeared first on <a rel="nofollow" href="https://barriersec.com"></a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
