aboutsummaryrefslogtreecommitdiff
path: root/content/posts/2019-04-22Automating_desktop_setup_with_ansible-pull_part-2.html
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>