-
Notifications
You must be signed in to change notification settings - Fork 0
/
vagrant-nedir.html
234 lines (202 loc) · 13.8 KB
/
vagrant-nedir.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="utf-8">
<title> Neymiş bu Vagrant
</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="HandheldFriendly" content="True" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="author" content="0x656e" />
<meta name="description" content="Kısaca Vagrant Nedir? Kendi anladığım şekilde anlatmam gerekirse Vagrant hazırladığınız text scriptleri ile sanal sunucular oluşturabileceğiniz otomatize bir araçtır. Ne İşe Yarar? Oluşturduğunuz scriptler ile herhangi bir ortamda (Müşteri ortamı vs.) sizler için hazır bir makine inşa eder. Tabi bir de ansible ile birleştirirseniz tadından yenmez sanırım. Tabi ki bunda …" />
<meta name="keywords" content="vagrant, vagrant 101, introduction of vagrant, vagrant dersleri, vagrant nedir">
<meta property="article:tag" content="vagrant" />
<meta property="article:tag" content="vagrant 101" />
<meta property="article:tag" content="introduction of vagrant" />
<meta property="article:tag" content="vagrant dersleri" />
<meta property="article:tag" content="vagrant nedir" />
<link rel="canonical" href="https://enesergun.net/vagrant-nedir.html"/>
<meta name="description" content=""/>
<!-- og definitions -->
<meta property="og:type" content="article" />
<meta property="og:url" content="https://enesergun.net/vagrant-nedir.html" />
<meta property="og:title" content="Neymiş bu Vagrant" />
<meta property="og:description" content="Kısaca Vagrant Nedir? Kendi anladığım şekilde anlatmam gerekirse Vagrant hazırladığınız text scriptleri ile sanal sunucular oluşturabileceğiniz otomatize bir araçtır. Ne İşe Yarar?..." />
<meta property="og:image" content="https://w0.peakpx.com/wallpaper/212/918/HD-wallpaper-virtual-world-sunset-80s-landscape-retro-theme-tron.jpg" />
<link rel="stylesheet" href="theme/style.css">
<link href="https://enesergun.net/feeds/all.atom.xml" type="application/atom+xml" rel="alternate" title="Enes Ergün Atom Feed" />
</head>
<body>
<div class="container">
<header class="blog-header">
<h1><a href="https://enesergun.net" class="glitch glow" data-text="Enes Ergün">Enes Ergün</a></h1>
<p> Chaotic Neutral / ISTP-T - 30 lvl rogue - Cyber Security </p>
<nav>
<a href="https://enesergun.net/">INDEX</a>
<a href="https://enesergun.net/archives">ARCHIVES</a>
<a href="https://enesergun.net/categories">CATEGORIES</a>
</nav>
</header>
<div class="post">
<header>
<h1>Neymiş bu Vagrant</h1>
<p class="date">Written on <time datetime="2018-01-06T22:14:00+03:00">Jan 06, 2018</time></p>
</header>
<article>
<h3>Kısaca Vagrant Nedir?</h3>
<p>Kendi anladığım şekilde anlatmam gerekirse Vagrant hazırladığınız text scriptleri ile sanal sunucular oluşturabileceğiniz otomatize bir araçtır. </p>
<h3>Ne İşe Yarar?</h3>
<p>Oluşturduğunuz scriptler ile herhangi bir ortamda (Müşteri ortamı vs.) sizler için hazır bir makine inşa eder. Tabi bir de <a href="https://ka1nsha.github.io/ansible-nginx.html">ansible</a> ile birleştirirseniz tadından yenmez sanırım. Tabi ki bunda özgürsünüz projenizin içerisinde ki bir sh dosyasını da çalıştırabilirsiniz.</p>
<h3>Birkaç Terim</h3>
<p><strong> Provider </strong> : Sisteminizin hangi sanallaştırma platformu üzerinde çalıştırılacağını belirtir. Örn: Virtualbox, Vmware, Docker</p>
<p><strong> Box </strong> : Binlerce kullanıcı tarafından oluşturulmuş özel kutulardır. Bu kutuları scriptiniz içerisine yazarsanız Vagrant bunu sizin için indirir ve script içerisinde belirttiğiniz özellikler üzerinden çalışmasını sağlar. Örnek vermek gerekirse pfsense box'ını indirirseniz sizlere nur topu gibi bir pfsense makinesi verecektir.</p>
<p><strong> Provision </strong> : Sistem kurulduktan sonra çalıştırılacak script vs şeyleri yazdığımız yer ( en azından benim anladığım :D )</p>
<h3>Next, Next, Next</h3>
<p>Debian based sistemler üzerinde</p>
<div class="highlight"><pre><span></span><code>apt install vagrant
</code></pre></div>
<p>Tabi ki sadece <strong>vagrant</strong> kurmak yetmeyecektir. Kullanacağınız provider'ı da sisteminize indirmeniz gerekmektedir. Ben <strong>virtualbox</strong> kullanacağım.</p>
<h3>Hadi Başlayalım.</h3>
<p>Projeyi oluşturacağınız klasöre gittiğinizde burada vagrant init yaparsanız sizin için bir <em><strong>vagrantfile</strong></em> oluşacaktır.
İçerisini temizleyerek aşağıda ki satırları ekleyelim.</p>
<div class="highlight"><pre><span></span><code>Vagrant.configure<span class="o">(</span><span class="m">2</span><span class="o">)</span> <span class="k">do</span> <span class="p">|</span>config<span class="p">|</span>
config.vm.define <span class="s2">"nebuvagrantya"</span> <span class="k">do</span> <span class="p">|</span>nbv<span class="p">|</span>
nbv.vm.box <span class="o">=</span> <span class="s2">"ubuntu/trusty64"</span>
nbv.vm.network :private_network, ip: <span class="s2">"10.0.0.2"</span>
nbv.vm.hostname <span class="o">=</span> <span class="s2">"nebuvagrantya"</span>
</code></pre></div>
<p>Burada ki kodları açıklamak gerekirse Vagrant.configure(2) do <strong>|config|</strong> yazdığımızda kalın yazdığım kısım aslında bir değişken olarak davranıyor.</p>
<p>Altında Vagrant üzerinde bir makine açacağımızı ve bunu kısaltma olarak nbv olarak çağıracağımızı belirtiyoruz. ( nbv )</p>
<p>Diğer satırlarda bu makinemizin ubuntu kutusunu kullanacağını belirtiyoruz. Bu kutunun hangi ip alacağını ve private networkde olacağını belirtiyoruz. Ayrıca bu makinenin Virtualbox üzerinde ki ismini de belirtmiş oluyoruz. Fakat bu bize yetiyor mu tabi ki yetmiyor. Hadi biraz daha sanal makinemizin ayarları ile oynayalım.</p>
<p>Projemize provider olarak <strong>virtualbox</strong> ekleyelim. </p>
<div class="highlight"><pre><span></span><code>Vagrant.configure<span class="o">(</span><span class="m">2</span><span class="o">)</span> <span class="k">do</span> <span class="p">|</span>config<span class="p">|</span>
config.vm.define <span class="s2">"nebuvagrantya"</span> <span class="k">do</span> <span class="p">|</span>nbv<span class="p">|</span>
nbv.vm.box <span class="o">=</span> <span class="s2">"ubuntu/trusty64"</span>
nbv.vm.network :private_network, ip: <span class="s2">"10.0.0.2"</span>
nbv.vm.hostname <span class="o">=</span> <span class="s2">"nebuvagrantya"</span>
nbv.vm.provider <span class="s2">"virtualbox"</span> <span class="k">do</span> <span class="p">|</span>vb<span class="p">|</span>
vb.name <span class="o">=</span> <span class="s2">"Ne bu vagrant ya"</span>
vb.name <span class="o">=</span> <span class="s2">"Ne bu vagrant ya"</span>
vb.memory <span class="o">=</span> <span class="s2">"512"</span>
vb.cpus <span class="o">=</span> <span class="s2">"2"</span>
vb.customize <span class="o">[</span><span class="s2">"modifyvm"</span>, :id, <span class="s2">"--vram"</span>, <span class="s2">"32"</span><span class="o">]</span>
end
</code></pre></div>
<p>Burada VBoxmanage kullanarak sanal makinemizin ismini, ram miktarını, ekran kartı ram miktarını ve işlemci sayısını belirttik. Ayrıca provision kısmında shell üzerinde proje klasörümüzde bulunan <strong>nginxyukle.sh</strong> dosyasını çalıştıracağız.
İsterseniz provisioning kısmında isterseniz direkt olarak ansible çalıştırabilirsiniz.</p>
<p>Örnek kod:</p>
<div class="highlight"><pre><span></span><code> vb.vm.provision <span class="s2">"ansible"</span> <span class="k">do</span> <span class="p">|</span>ansible<span class="p">|</span>
ansible.playbook <span class="o">=</span> <span class="s2">"nginxyukle.yml"</span>
ansible.verbose <span class="o">=</span> <span class="s2">"v"</span>
end
</code></pre></div>
<p>Sanal makinenizin çok daha fazla ayarını değiştirmek isterseniz eğer aşağıya referans sayfasını ekleyeceğim.</p>
<p>Vagrant dosyamızın son hali </p>
<div class="highlight"><pre><span></span><code>Vagrant.configure<span class="o">(</span><span class="m">2</span><span class="o">)</span> <span class="k">do</span> <span class="p">|</span>config<span class="p">|</span>
config.vm.define <span class="s2">"nebuvagrantya"</span> <span class="k">do</span> <span class="p">|</span>nbv<span class="p">|</span>
nbv.vm.box <span class="o">=</span> <span class="s2">"ubuntu/trusty64"</span>
nbv.vm.network :private_network, ip: <span class="s2">"10.0.0.2"</span>
nbv.vm.hostname <span class="o">=</span> <span class="s2">"nebuvagrantya"</span>
nbv.vm.provider <span class="s2">"virtualbox"</span> <span class="k">do</span> <span class="p">|</span>vb<span class="p">|</span>
vb.name <span class="o">=</span> <span class="s2">"Ne bu vagrant ya"</span>
vb.name <span class="o">=</span> <span class="s2">"Ne bu vagrant ya"</span>
vb.memory <span class="o">=</span> <span class="s2">"512"</span>
vb.cpus <span class="o">=</span> <span class="s2">"2"</span>
vb.customize <span class="o">[</span><span class="s2">"modifyvm"</span>, :id, <span class="s2">"--vram"</span>, <span class="s2">"32"</span><span class="o">]</span>
end
nbv.vm.provision :shell, path: <span class="s2">"nginxyukle.sh"</span>
end
end
</code></pre></div>
<p>Hadi çalıştıralım artık.
Terminalinize </p>
<div class="highlight"><pre><span></span><code>vagrant up
</code></pre></div>
<p>Yazarsanız eğer daha önce aynı box'ı indirmemişseniz aşağıda ki gibi bir ekran göreceksiniz.</p>
<p><strong>Not:</strong> Nginxyukle.sh dosyanızı oluşturmayı unutmayın :)
<img alt="Vagrant1" src="images/vagrant1.png"> </p>
<p>İşlemler bittikten sonra aşağıda ki gibi bir ekran göreceksiniz</p>
<p><img alt="Vagrant2" src="images/vagrant2.png"></p>
<p>Artık herşey hazır.</p>
<p>Kullanabileceğiniz komutlar:</p>
<table>
<thead>
<tr>
<th>Komut</th>
<th>Açıklama</th>
</tr>
</thead>
<tbody>
<tr>
<td>vagrant ssh</td>
<td>Eğer bir tane makineniz bulunuyorsa bu makineye direkt olarak ssh üzerinden erişir.</td>
</tr>
<tr>
<td>vagrant destroy</td>
<td>Makinenizi destroy eder.</td>
</tr>
<tr>
<td>vagrant global-status</td>
<td>Makineleriniz hakkında sizlere bilgi verir.</td>
</tr>
<tr>
<td>vagrant reload</td>
<td>Makinenizi update eder</td>
</tr>
</tbody>
</table>
<p>Komutlar ile ilgili aşağıda referans sayfası vereceğim.
SSH bağlantısı yapalım ve yazıyı sonlandıralım.
<img alt="Vagrant3" src="images/vagrant3.png"></p>
<p>Evet artık nur topu gibi bir sanal makinemiz var.
<img alt="Vagrant4" src="images/vagrant4.png"></p>
<h3>Vagrant Kutuları İçin</h3>
<p>Vagrant üzerinde kutuları kullanabileceğinizi söylemiştik.
Kullanıcılar tarafından oluşturulmuş public kutulara ulaşmak için aşağıda ki linki kullanabilirsiniz.</p>
<p><a href="https://app.vagrantup.com/boxes/search">Vagrant Boxes</a></p>
<h5>Ek Linkler</h5>
<p><a href="https://2rwky424s9rd179jmbzqsca1-wpengine.netdna-ssl.com/wp-content/uploads/2017/12/vagrant-printerfriendly.png">Vagrant CheatSheet</a></p>
<p><a href="https://www.virtualbox.org/manual/ch08.html">VBoxManage</a></p>
<p><a href="https://www.vagrantup.com/docs/cli/">Vagrant CLI</a></p>
<p><a href="https://everythingshouldbevirtual.com/virtualization/vagrant-complex-vagrantfile-configurations/">Complex VagrantFile</a></p>
</article>
<footer>
<p>This entry is posted in <a href="https://enesergun.net/category/vagrant.html">vagrant</a>.</p>
</footer>
<div class="comments">
<div id="disqus_thread"></div>
<script type="text/javascript">
var disqus_shortname = '0x656e';
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<a href="http://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
</div>
</div>
<footer class="blog-footer">
<ul class="nav">
<li><a href="https://devilinside.me/"> Eşelyon</a></li>
<li><a href="https://medium.com/@brkalbyrk"> Berk Albayrak</a></li>
<li><a href="https://ahmtglr.wordpress.com/"> Ahmet Güler</a></li>
<li><a href="https://kaganisildak.com/"> Kağan Işıldak</a></li>
<li><a href="https://eybisi.run/"> Eybisi</a></li>
<li><a href="https://onur.im/"> Onur Aslan</a></li>
<li><a href="https://canyoupwn.me/"> Canyoupwn.me</a></li>
<li><a href="https://www.oguzozkeroglu.com"> Oğuz Özkeroğlu</a></li>
<li><a href="https://aligoren.com"> Ali Gören</a></li>
<li><a href="https://0xf61.gitlab.io/"> Emir Kurt</a></li>
<br>
<li><a href="www.twitter.com/eness_ergun">Twitter</a></li>
<li><a href="[email protected]">Mail</a></li>
</ul>
<p class="disclaimer">
Built with <a href="http://getpelican.com">Pelican</a>, and <a href="https://github.com/ka1nsha/MBPelican">MB Pelican</a> theme.
</p>
</footer>
</div>
</body>
</html>