blob: 707ba7d59d5329790642bdbea36cc0b4edcd6102 (
plain)
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
|
<section>
<a href="/posts/2019-03-07Automating_desktop_setup_with_ansible-pull_part-1.html">See part 1</a>
<p>
Now we're going to setup ansible to work with a git repository. The process is
quite similar to ansible-playbook, the only difference is that the source for
the playbook will be a remote repository and not a local file. Following the
previous example we'll get vim setup automated.
</p>
<p>
Create a git repository wherever you see
fit, <a href="https://about.gitlab.com/">gitlab</a>
and <a href="https://github.com/">github</a> offer free repositories. For
this task we need to add only two file: one for the yml file describing the
tasks and the .vimrc file.
</p>
<p>
In the .vimrc add your own configuration, you can see
mine
<a href="https://gitlab.com/gabrielgio/homestation/-/blob/debcf3458df511aef9f7dca0cb73f6cf6baddd5d/.vimrc">
over here
</a>, it is pretty simple as I don't use it but for simple text editing
(like this post) so you can start with that if you don't have one.
</p>
<p>
The yml file will have two tasks, one is to install vim, just like we did in the part 1.
<pre><code># main.yml
---
- name: install vim
dnf:
name: vim
state: latest</code></pre>
</p>
<p>
To copy .vimrc file to your $HOME we going to
use <a href="https://docs.ansible.com/ansible/latest/modules/copy_module.html">copy
module</a>:
</p>
<p>
After we've added those two files to repository you will have be something
<a href="https://gitlab.com/gabrielgio/homestation/-/tree/debcf3458df511aef9f7dca0cb73f6cf6baddd5d">
like this.
</a>
<br/>
Parms:
<ul>
<li><strong>-i</strong> is a list of hosts</li>
<li><strong>-U</strong> is the get repository url</li>
</ul>
</p>
<p>
Remember man is your best friend, take a look at <code>man ansible-pull</code> to know
more about its parameters.
</p>
<p>
The best part you can quickly test and see the result by running my sample:
<pre><code>ansible-pull \
-U https://gitlab.com/gabrielgio/homestation.git \
-C debcf3458df511aef9f7dca0cb73f6cf6baddd5d \
-i all \
main.yml</code></pre>
</p>
<p>
The idea here is to keep your repository as a source of truth when comes to
configuration, you can add ansible-pull to a CRON tab, so you just need to
push something to your repository and after a few minutes not only your
machine but all the machines that have it setup will run the playbooks. You
can use this method as a simple way to install software, update machines or
even distribute tooling company-wise.
</p>
</section>
|