From 302d148015fef10576768a5999908092a3a9a4fd Mon Sep 17 00:00:00 2001 From: Vincent Stuyck Date: Sat, 19 Jul 2025 21:18:00 +0000 Subject: [PATCH] Initial commit --- .gitignore | 3 + README.md | 93 ++++++++++++++++++++++++++++ filter_plugins/.gitkeep | 0 group_vars/.gitkeep | 0 host_vars/.gitkeep | 0 library/.gitkeep | 0 module_utils/.gitkeep | 0 roles/common/defaults/.gitkeep | 0 roles/common/files/.gitkeep | 0 roles/common/handlers/.gitkeep | 0 roles/common/library/.gitkeep | 0 roles/common/lookup_plugins/.gitkeep | 0 roles/common/meta/.gitkeep | 0 roles/common/module_utils/.gitkeep | 0 roles/common/tasks/.gitkeep | 0 roles/common/templates/.gitkeep | 0 roles/common/vars/.gitkeep | 0 site.yml | 0 18 files changed, 96 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 filter_plugins/.gitkeep create mode 100644 group_vars/.gitkeep create mode 100644 host_vars/.gitkeep create mode 100644 library/.gitkeep create mode 100644 module_utils/.gitkeep create mode 100644 roles/common/defaults/.gitkeep create mode 100644 roles/common/files/.gitkeep create mode 100644 roles/common/handlers/.gitkeep create mode 100644 roles/common/library/.gitkeep create mode 100644 roles/common/lookup_plugins/.gitkeep create mode 100644 roles/common/meta/.gitkeep create mode 100644 roles/common/module_utils/.gitkeep create mode 100644 roles/common/tasks/.gitkeep create mode 100644 roles/common/templates/.gitkeep create mode 100644 roles/common/vars/.gitkeep create mode 100644 site.yml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5c199eb --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +# ---> Ansible +*.retry + diff --git a/README.md b/README.md new file mode 100644 index 0000000..536292e --- /dev/null +++ b/README.md @@ -0,0 +1,93 @@ +# ansible-repository-template + +[From ansible best practices](https://docs.ansible.com/ansible/2.8/user_guide/playbooks_best_practices.html) + +## Directory Layout + +The top level of the directory would contain files and directories like so: + +``` +production # inventory file for production servers +staging # inventory file for staging environment + +group_vars/ + group1.yml # here we assign variables to particular groups + group2.yml +host_vars/ + hostname1.yml # here we assign variables to particular systems + hostname2.yml + +library/ # if any custom modules, put them here (optional) +module_utils/ # if any custom module_utils to support modules, put them here (optional) +filter_plugins/ # if any custom filter plugins, put them here (optional) + +site.yml # master playbook +webservers.yml # playbook for webserver tier +dbservers.yml # playbook for dbserver tier + +roles/ + common/ # this hierarchy represents a "role" + tasks/ # + main.yml # <-- tasks file can include smaller files if warranted + handlers/ # + main.yml # <-- handlers file + templates/ # <-- files for use with the template resource + ntp.conf.j2 # <------- templates end in .j2 + files/ # + bar.txt # <-- files for use with the copy resource + foo.sh # <-- script files for use with the script resource + vars/ # + main.yml # <-- variables associated with this role + defaults/ # + main.yml # <-- default lower priority variables for this role + meta/ # + main.yml # <-- role dependencies + library/ # roles can also include custom modules + module_utils/ # roles can also include custom module_utils + lookup_plugins/ # or other types of plugins, like lookup in this case + + webtier/ # same kind of structure as "common" was above, done for the webtier role + monitoring/ # "" + fooapp/ # "" +``` + +## Alternative Directory Layout + +Alternatively you can put each inventory file with its group_vars/host_vars in a separate directory. This is particularly useful if your group_vars/host_vars don’t have that much in common in different environments. The layout could look something like this: + +``` +inventories/ + production/ + hosts # inventory file for production servers + group_vars/ + group1.yml # here we assign variables to particular groups + group2.yml + host_vars/ + hostname1.yml # here we assign variables to particular systems + hostname2.yml + + staging/ + hosts # inventory file for staging environment + group_vars/ + group1.yml # here we assign variables to particular groups + group2.yml + host_vars/ + stagehost1.yml # here we assign variables to particular systems + stagehost2.yml + +library/ +module_utils/ +filter_plugins/ + +site.yml +webservers.yml +dbservers.yml + +roles/ + common/ + webtier/ + monitoring/ + fooapp/ +``` + +This layout gives you more flexibility for larger environments, as well as a total separation of inventory variables between different environments. The downside is that it is harder to maintain, because there are more files. diff --git a/filter_plugins/.gitkeep b/filter_plugins/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/group_vars/.gitkeep b/group_vars/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/host_vars/.gitkeep b/host_vars/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/library/.gitkeep b/library/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/module_utils/.gitkeep b/module_utils/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/roles/common/defaults/.gitkeep b/roles/common/defaults/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/roles/common/files/.gitkeep b/roles/common/files/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/roles/common/handlers/.gitkeep b/roles/common/handlers/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/roles/common/library/.gitkeep b/roles/common/library/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/roles/common/lookup_plugins/.gitkeep b/roles/common/lookup_plugins/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/roles/common/meta/.gitkeep b/roles/common/meta/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/roles/common/module_utils/.gitkeep b/roles/common/module_utils/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/roles/common/tasks/.gitkeep b/roles/common/tasks/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/roles/common/templates/.gitkeep b/roles/common/templates/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/roles/common/vars/.gitkeep b/roles/common/vars/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/site.yml b/site.yml new file mode 100644 index 0000000..e69de29