From 231f2cb2205988cf87062bc9f595307af1ed827f Mon Sep 17 00:00:00 2001 From: "Gabriel A. Giovanini" Date: Sun, 15 May 2022 15:34:36 +0200 Subject: feat: Add missing blog post Add the missing blog post from my hugo blog. Also add a locustfile so I can do some stress test locally. --- ...ing_desktop_setup_with_ansible-pull_part-1.html | 94 ++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 content/posts/2019-03-07Automating_desktop_setup_with_ansible-pull_part-1.html (limited to 'content/posts/2019-03-07Automating_desktop_setup_with_ansible-pull_part-1.html') 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 @@ +
+

+ 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). +

+

+ 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 Ansible. + 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 + + Ansible Pull + + and + + Playbooks + . As better described: +

+ [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. + (source) +
+

+

+ 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. +
+ 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: +

[all]
+localhost
+

+

+ 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: + +

# main.yaml
+- hosts: all
+  tasks:
+     - name: install vim
+       dnf:
+         name: vim
+         state: latest
+
+
host
+
it is required and it has to match our hosts otherwise the playbook won't run.
+
taks
+
+ it is the list of tasks that the playbook will perform, in this case + will be dnf install vim. +
+
+

+

+ 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: +

sudo ansible-playbook --connection=local main.yml
+

+

+ After a few seconds, vim will be installed on your machine. +

PLAY [all] *************************************************************
+
+TASK [Gathering Facts] *************************************************
+ok: [localhost]
+
+TASK [install vim] *****************************************************
+ok: [localhost]
+
+PLAY RECAP *************************************************************
+localhost                  : ok=2    changed=0    unreachable=0    failed=0
+

+

+ This is the first step, next part we shall create a more complex playbook and + setup repository to run it remotely using ansible-pull. +

+
-- cgit v1.2.3