# OP SIG: Learn Ansible Thread

**URL:** https://forum.hypercore.one/t/op-sig-learn-ansible-thread/589
**Category:** Development
**Created:** [February 25, 2025, 3:14am UTC](https://forum.hypercore.one/t/op-sig-learn-ansible-thread/589 "2025-02-25T03:14:05Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![georgezgeorgez](https://forum.hypercore.one/letter_avatar_proxy/v4/letter/g/eada6e/32.png) [@georgezgeorgez](https://forum.hypercore.one/u/georgezgeorgez)
#### Post date: [February 25, 2025, 3:14am UTC](https://forum.hypercore.one/t/op-sig-learn-ansible-thread/589/1 "2025-02-25T03:14:06Z")

</div>

# Learn by doing. NoM Ansible Training #1

## 1. Install Ansible

On Ubuntu:

```auto
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository --yes --update ppa:ansible/ansible
sudo apt install ansible

```

Reference (other methods and operating system)

> **[Installing Ansible on specific operating systems — Ansible Community...](https://docs.ansible.com/projects/ansible/latest/installation_guide/installation_distros.html)**

> **[Installing Ansible — Ansible Community Documentation](https://docs.ansible.com/projects/ansible/latest/installation_guide/intro_installation.html)**

## 2. What is Idempotence?

```auto
# Try the following commands
mkdir testdirectory1
mkdir testdirectory1
# What happens?

# Clean Up
rm -r testdirectory1

# Try a slightly different command
mkdir -p testdirectory1
mkdir -p testdirectory1
# What happens?

```

## 3. Do it via Ansible

Create a file called `playbook.yaml` with the following contents.  
Note that we are creating two different directories.

```auto
- name: test-playbook
  hosts: localhost
  tasks:
  - name: Creates directory 1
    ansible.builtin.file:
      path: testdirectory1
      state: directory
  - name: Creates directory 2
    ansible.builtin.file:
      path: testdirectory2
      state: directory

```

Then run the following command twice.

```auto
ansible-playbook playbook.yaml
ansible-playbook playbook.yaml
# What happens?

# Delete only one
rm -r testdirectory1

# Again
ansible-playbook playbook.yaml

```

Reference:

> **[ansible.builtin.file module – Manage files and file properties — Ansible...](https://docs.ansible.com/projects/ansible/latest/collections/ansible/builtin/file_module.html)**
