diff options
Diffstat (limited to 'content/posts/2019-03-07Automating_desktop_setup_with_ansible-pull_part-1.html')
-rw-r--r-- | content/posts/2019-03-07Automating_desktop_setup_with_ansible-pull_part-1.html | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/content/posts/2019-03-07Automating_desktop_setup_with_ansible-pull_part-1.html b/content/posts/2019-03-07Automating_desktop_setup_with_ansible-pull_part-1.html new file mode 100644 index 0000000..d06a648 --- /dev/null +++ b/content/posts/2019-03-07Automating_desktop_setup_with_ansible-pull_part-1.html @@ -0,0 +1,94 @@ +<section> + <p> + Every time that I do a clean install on my machine it takes a few hours till I + get to point where I was before formatting it, install all packages, select + themes, icons, fonts, install IDEs, extensions and so on. After doing it a few + times I came to the conclusion that I would save time by spending time + automating this chore, and as a result, I could tinker a little more with my + system and not worry about spending a weekend re-installing everything (which + have happened more time that I'd like to remember). + </p> + <p> + So after a few attempts using python and bash I ended with many files and + keep everything organized and concise turned out to be more tedious than the + setup itself. So there comes <a href="https://www.ansible.com/">Ansible</a>. + It is an enterprise-graded software used to automate tasks. It has A LOT OF + features and it can be really helpful if you're a sysadmin but for now we're + going to focuson + <a href="https://docs.ansible.com/ansible/latest/user_guide/playbooks_intro.html#ansible-pull"> + Ansible Pull + </a> + and + <a href="https://docs.ansible.com/ansible/latest/user_guide/playbooks.html"> + Playbooks + </a>. As better described: + <blockquote> + [Ansible-Pull] is used to up a remote copy of ansible on each managed + node, each set to run via cron and update playbook source via a source + repository. This inverts the default push architecture of Ansible into a + pull architecture, which has near-limitless scaling potential. + + Playbooks are Ansible’s configuration, deployment, and orchestration + language. They can describe a policy you want your remote systems to + enforce, or a set of steps in a general IT process. + (<a href="https://docs.ansible.com/ansible/latest/cli/ansible-pull.html">source</a>) + </blockquote> + </p> + <p> + The goal is to pull and run a playbook remotely using a git repository. The + playbook will describe the tasks needed to setup our machine from scratch. + <br/> + But first lets tinker a bit a with playbooks locally with ansible-playbook, + to do so we need to add localhost to ansible's hosts list. Add it to + /etc/ansible/hosts: +<pre><code>[all] +localhost</code></pre> + </p> + <p> + As an experiment we're going to write a asks to install vim. Currently, I'm + using Fedora thus we going to use dnf modeule to install packages, but if + you're using another distribution look for a equivalent module like apt + module for Ubuntu. + + The playbook to install is quite simple: + +<pre><code># main.yaml +- hosts: all + tasks: + - name: install vim + dnf: + name: vim + state: latest</code></pre> + <dl> + <dt>host</dt> + <dd>it is required and it has to match our hosts otherwise the playbook won't run.</dd> + <dt>taks</dt> + <dd> + it is the list of tasks that the playbook will perform, in this case + will be dnf install vim. + </dd> + </dl> + </p> + <p> + To run a playbook use the command ansible-playbook commando to run main.yml + direct from disk, do to so just run the following command: +<pre><code>sudo ansible-playbook --connection=local main.yml</code></pre> + </p> + <p> + After a few seconds, vim will be installed on your machine. +<pre><code>PLAY [all] ************************************************************* + +TASK [Gathering Facts] ************************************************* +ok: [localhost] + +TASK [install vim] ***************************************************** +ok: [localhost] + +PLAY RECAP ************************************************************* +localhost : ok=2 changed=0 unreachable=0 failed=0</code></pre> + </p> + <p> + This is the first step, next part we shall create a more complex playbook and + setup repository to run it remotely using ansible-pull. + </p> +</section> |