{"id":64675,"date":"2023-05-17T12:26:10","date_gmt":"2023-05-17T06:56:10","guid":{"rendered":"https:\/\/cloudfoundation.com\/blog\/?p=64675"},"modified":"2024-01-04T12:10:04","modified_gmt":"2024-01-04T06:40:04","slug":"ansible-automation-platform","status":"publish","type":"post","link":"https:\/\/cloudfoundation.com\/blog\/ansible-automation-platform\/","title":{"rendered":"Ansible Automation Platform"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.9.7&#8243;][et_pb_row _builder_version=&#8221;4.9.7&#8243; background_size=&#8221;initial&#8221; background_position=&#8221;top_left&#8221; background_repeat=&#8221;repeat&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;3.25&#8243; custom_padding=&#8221;|||&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_post_title meta=&#8221;off&#8221; featured_image=&#8221;off&#8221; _builder_version=&#8221;4.9.7&#8243; title_font=&#8221;Work Sans||||||||&#8221; title_text_align=&#8221;left&#8221; title_text_color=&#8221;#000000&#8243; title_font_size=&#8221;47&#8243; background_color=&#8221;RGBA(0,0,0,0)&#8221; background_enable_image=&#8221;off&#8221; custom_margin=&#8221;|||10%&#8221; title_font_size_tablet=&#8221;40&#8243; title_font_size_phone=&#8221;35&#8243; title_font_size_last_edited=&#8221;on|desktop&#8221;][\/et_pb_post_title][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;3.25&#8243; background_size=&#8221;initial&#8221; background_position=&#8221;top_left&#8221; background_repeat=&#8221;repeat&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;3.25&#8243; custom_padding=&#8221;|||&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_text _builder_version=&#8221;4.9.7&#8243; text_font=&#8221;Georgia||||||||&#8221; text_text_color=&#8221;#000000&#8243; text_font_size=&#8221;22px&#8221; text_line_height=&#8221;1.9em&#8221; max_width=&#8221;800px&#8221; max_width_last_edited=&#8221;off|phone&#8221; custom_margin=&#8221;|||10%&#8221; custom_margin_last_edited=&#8221;off|desktop&#8221; hover_enabled=&#8221;0&#8243; text_font_size_tablet=&#8221;&#8221; text_font_size_phone=&#8221;&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; text_line_height_last_edited=&#8221;off|phone&#8221; sticky_enabled=&#8221;0&#8243;]<\/p><div id=\"ez-toc-container\" class=\"ez-toc-v2_0_80 ez-toc-wrap-center counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<span class=\"ez-toc-title-toggle\"><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/cloudfoundation.com\/blog\/ansible-automation-platform\/#Ansible_Vaults\" >Ansible Vaults<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/cloudfoundation.com\/blog\/ansible-automation-platform\/#Ansible_Inventory_File\" >Ansible Inventory File<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/cloudfoundation.com\/blog\/ansible-automation-platform\/#Ansible_Role\" >Ansible Role<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/cloudfoundation.com\/blog\/ansible-automation-platform\/#Ansible_Debugger\" >Ansible Debugger<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/cloudfoundation.com\/blog\/ansible-automation-platform\/#Debug_Module_in_Ansible\" >Debug Module in Ansible<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/cloudfoundation.com\/blog\/ansible-automation-platform\/#Ansible_Inventory_or_Inventory_Ansible\" >Ansible Inventory or Inventory Ansible<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/cloudfoundation.com\/blog\/ansible-automation-platform\/#Inventory_in_Ansible\" >Inventory in Ansible<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/cloudfoundation.com\/blog\/ansible-automation-platform\/#Ansible_Inventory_Example\" >Ansible Inventory Example<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/cloudfoundation.com\/blog\/ansible-automation-platform\/#Ansible_Dynamic_Inventory\" >Ansible Dynamic Inventory<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/cloudfoundation.com\/blog\/ansible-automation-platform\/#Ansible_Loops\" >Ansible Loops<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/cloudfoundation.com\/blog\/ansible-automation-platform\/#Loop_in_Ansible\" >Loop in Ansible<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/cloudfoundation.com\/blog\/ansible-automation-platform\/#Ansible_Variables\" >Ansible Variables<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/cloudfoundation.com\/blog\/ansible-automation-platform\/#Variables_in_Ansible\" >Variables in Ansible<\/a><\/li><\/ul><\/nav><\/div>\n\n<p>Do you wish to streamline your IT operations with <a href=\"https:\/\/cloudfoundation.com\/ansible-training\/\" target=\"_blank\" rel=\"noopener\">Ansible<\/a>? Open-source automation software provides just such an opportunity.<\/p>\n<p>In this article, we&#8217;ll go from setting up the environment to customizing and optimizing Ansible<a href=\"https:\/\/cloudfoundation.com\/blog\/ansible-tutorial-for-beginners\/\" target=\"_blank\" rel=\"noopener\">Automation Process for IT Infrastructure.<\/a><\/p>\n<p>Let&#8217;s do this!!!<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Ansible_Vaults\"><\/span><strong>Ansible Vaults<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Ansible vaults <strong>offer secure server storage of passwords and private keys<\/strong>, making retrieving confidential data quickly a reality. Ansible vaults protect this sensitive data while offering easy, one-command access.<\/p>\n<p><img decoding=\"async\" class=\"size-medium aligncenter\" src=\"https:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2023\/05\/ansible-vault.png\" alt=\"\" width=\"1097\" height=\"433\" \/><\/p>\n<p>Ansible vaults are simple. To use one, create a vault file, identify your sensitive data and create your password &#8211; then access all this data through one command.<\/p>\n<p>Ansible vaults may store SSH keys as well as configuration data.<\/p>\n<p>Ansible vault data is encrypted, making them ideal for protecting sensitive material that needs to remain confidential.<\/p>\n<p>Password and configuration data storage vaults provide secure means of keeping passwords, keys and configuration information for use across servers.<\/p>\n<p>With quick set up times and an intuitive design they make for ideal solutions when protecting sensitive information across numerous servers.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Ansible_Inventory_File\"><\/span><strong>Ansible Inventory File<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Ansible automation system stores server, network and IT asset information in these inventory files.<\/p>\n<p>Your Ansible automation system utilizes text files to store information about systems, networks and IT factors &#8211; this may include host names, IP addresses, user information or system specifications.<\/p>\n<p>Your automation system cannot effectively integrate or perform activities without an inventory file, as this serves as the cornerstone for connectivity between systems or activities, and information regarding other aspects such as playbooks that specify tasks.<\/p>\n<p><img decoding=\"async\" class=\"size-medium aligncenter\" src=\"https:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2023\/05\/ansible-inventory-file.jpg\" alt=\"\" width=\"300\" height=\"317\" \/><\/p>\n<p>Ansible inventory files <strong>provide the data necessary for communicating with controlled systems<\/strong>.<\/p>\n<p>Vi or nano text editors can be used to generate Ansible inventory files. Inventory files typically include information regarding managed systems&#8217; hostname, IP address and users &#8211; such as hostname, IP address and login password information for managed computers.<\/p>\n<p>Inventory files <strong>contain system types, operating systems, and other pertinent details<\/strong> that identify each item for inventory purposes. Ansible command line tools provide maintenance of inventory files once created.<\/p>\n<p>Inventory files contain details regarding managed systems that help facilitate connections and activities within them.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Ansible_Role\"><\/span><strong>Ansible Role<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Ansible roles automate playbooks while organizing them into digestible chunks for reuse across playbooks. Roles organize and simplify these complex systems of rules.<\/p>\n<p>Ansible roles consist of <strong>tasks, handlers and variables<\/strong>; these elements store data that may be utilized during job execution and represent activities related to <a href=\"https:\/\/cloudfoundation.com\/blog\/exploring-ansible-commands-in-the-ansible-shell-a-journey-of-automation\/\" target=\"_blank\" rel=\"noopener\">Shell Commands<\/a> or web server configuration or deployment tasks in multiple files containing YAML-formatted tasks.<\/p>\n<p><img decoding=\"async\" class=\"size-medium aligncenter\" src=\"https:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2023\/05\/ansible-roles.png\" alt=\"\" width=\"596\" height=\"337\" \/><\/p>\n<p><strong>Handlers<\/strong> carry out tasks under specified conditions. After configuring a file, for example, they might restart services after configuring files; handlers can also be written using YAML scripting languages.<\/p>\n<p><strong>Variables<\/strong> contain role-related data. Tasks and handlers use this data, such as users&#8217; passwords or IP addresses; variables allow customizing your Ansible roles more precisely by overriding default task settings.<\/p>\n<p>Roles contain variables and organize tasks; their duties belong in the task&#8217;s directory while handlers go in another one; variables can go either there or wherever is appropriate for their assignment. Roles also help manage variables.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Ansible_Debugger\"><\/span><strong>Ansible Debugger<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Ansible Debugger (formerly dBase Debugger) is an <a href=\"https:\/\/cloudfoundation.com\/blog\/what-is-ansible-2023s-top-15-ansible-questions-and-answers\/\" target=\"_blank\" rel=\"noopener\"><strong>Open-Source Automation Platform<\/strong><\/a><strong> for IT infrastructure<\/strong> configuration, deployment and management. This tool makes the setup of network, storage and application infrastructure simpler than ever.<\/p>\n<p><img decoding=\"async\" class=\"size-medium aligncenter\" src=\"https:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2023\/05\/ansible-debugger.png\" alt=\"\" width=\"1045\" height=\"400\" \/><\/p>\n<p>Ansible debugger provides powerful support to debug and troubleshoot playbooks and roles. Navigating line by line reveals exactly what&#8217;s occurring while breakpoints allow you to halt execution before exploring variables and environments within playbooks or roles.<\/p>\n<p>It helps quickly locate and resolve faults, making issue detection and resolution simpler.<\/p>\n<p>Ansible Debugger&#8217;s visualizations allow for rapid analysis of playbook and role behaviour. You can quickly view task output and variables to speed problem-solving while pinpointing causes quickly.<\/p>\n<p><a href=\"https:\/\/cloudfoundation.com\/ansible-training\/\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"size-medium aligncenter\" src=\"http:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2023\/06\/Ansible-Training.png\" alt=\"\" width=\"1240\" height=\"260\" \/><\/a><\/p>\n<p>Furthermore, each task may feature its own variables and values which is essential when tracking problems effectively.<\/p>\n<p>User-friendly visualization tools help quickly detect and understand playbook and role behaviour.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Debug_Module_in_Ansible\"><\/span><strong>Debug Module in Ansible<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Ansible automates IT infrastructure and the debug module in Ansible is vital in <strong>simplifying debugging complex playbooks and tasks<\/strong> as it aids diagnosis and debugging of both.<\/p>\n<p><img decoding=\"async\" class=\"size-medium aligncenter\" src=\"https:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2023\/05\/debug-module-in-Ansible.png\" alt=\"\" width=\"708\" height=\"363\" \/><\/p>\n<p>Debug modules serve two important functions. First, they&#8217;re useful; printing all variables and information first before running any given job and printing its outcome as it happens; finally printing performed jobs so as to help in <strong>Troubleshooting<\/strong> and <strong>Task Verification.<\/strong><\/p>\n<p>Playbooks often employ the debug module for system and task verification, printing variables, facts and task output. Ansible IT infrastructure management also relies on this component.<\/p>\n<p>Ansible inventory or Ansible&#8217;s catalogue of hosts (computers, virtual machines, containers etc) across environments are crucial elements to system administrators and developers using Ansible for system administration or development purposes.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Ansible_Inventory_or_Inventory_Ansible\"><\/span><strong>Ansible Inventory or Inventory Ansible<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Inventory refers to a <strong>collection of machines with specific roles<\/strong>.<\/p>\n<p>Hosts, variables and comments can all be found within an inventory file section. In addition to host connection data such as IP Addresses, port numbers, username and password information for hosts listed within playbooks as variables.<\/p>\n<p>An inventory file also defines variables which specify host names for playbook reference purposes &#8211; while using this utility you can add, edit and delete inventory entries as desired.<\/p>\n<p><img decoding=\"async\" class=\"size-medium aligncenter\" src=\"https:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2023\/05\/ansible-inventory-or-inventory-ansible.png\" alt=\"\" width=\"596\" height=\"362\" \/><\/p>\n<p>Ansible supports both <strong>static and dynamic inventory<\/strong> environments for playbooks containing machines with predetermined functionality.<\/p>\n<p>With static inventory connecting directly to machines via files on disk while dynamic inventory searching cloud providers or other sources.<\/p>\n<p>Ansible&#8217;s GUI allows for inventory and playbook management; Ansible Tower GUI handles these aspects as well.<\/p>\n<p>An API also manages inventories while connecting them to external sources &#8211; this feature works especially well when integrated with <a href=\"https:\/\/cloudfoundation.com\/kubernetes-training\/\" target=\"_blank\" rel=\"noopener\"><strong>Kubernetes<\/strong><\/a>\/<a href=\"https:\/\/cloudfoundation.com\/terraform-training\/\" target=\"_blank\" rel=\"noopener\"><strong>Terraform<\/strong><\/a> environments.<\/p>\n<p>Ansible Inventory can handle many infrastructure components. It defines environment hosts, variables and playbooks while automating software deployment and integration with other <strong>DevOps technologies<\/strong>.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Inventory_in_Ansible\"><\/span><strong>Inventory in Ansible<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Inventory in Ansible has host information needed for automation.<\/p>\n<p>Hosts are classified and identified according to their organizational function. Hosts may be stored either hierarchically in YAML or hierarchically as INI.<\/p>\n<p>Ansible also supports dynamic inventories; dynamic inventory scripts or program can create host and property inventories dynamically.<\/p>\n<p><img decoding=\"async\" class=\"size-medium aligncenter\" src=\"https:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2023\/05\/inventory-in-ansible.png\" alt=\"\" width=\"780\" height=\"970\" \/><\/p>\n<p>Ansible can also categorize hosts by creating host groups and assigning hosts accordingly &#8211; these host groups may specify variables or duties assigned to that host group. Ansible also <strong>manages cloud infrastructure by Configuring Instances, Security Groups and Network Resources<\/strong> as part of its task list.<\/p>\n<p>Inventory variables allow hosts to be configured more precisely. Variables allow hosts to make selections regarding user accounts, packages to install and services to start as well as group-level parameters like package managers or programmed versions.<\/p>\n<p>Ansible automates IT processes efficiently. Additionally, Ansible helps organizations meet industry regulations by managing their IT infrastructure efficiently.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Ansible_Inventory_Example\"><\/span><strong>Ansible Inventory Example<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Ansible Inventory is essential in providing access and management data about hosts and groups managed by Ansible.<\/p>\n<p><a href=\"https:\/\/cloudfoundation.com\/ansible-training\/\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"size-medium aligncenter\" src=\"http:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2023\/06\/Ansible-Online-Training-1.png\" alt=\"\" width=\"1240\" height=\"260\" \/><\/a><\/p>\n<p>Ansible uses this inventory as its guide in identifying hosts and groups with access and management controls in its inventory system.<\/p>\n<p>Ansible inventory files can either be INI or YAML formats and include hosts, groups, variables and encrypted passwords in addition to hosts or groups.<\/p>\n<p>Ansible will search its playbook directory for these inventory files and evaluates each one accordingly.<\/p>\n<p><img decoding=\"async\" class=\"size-medium aligncenter\" src=\"https:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2023\/05\/Ansible-Inventory-Example.jpg\" alt=\"\" width=\"500\" height=\"505\" \/><\/p>\n<p>Ansible is used to <strong>deploy, configure and manage servers<\/strong> across various environments. YAML describes system settings and hosts that perform task execution while Ansible inventory hosts perform additional functions that list Ansible-manageable nodes with access information.<\/p>\n<p>[web_servers]<\/p>\n<p>web1 ansible_host=192.168.1.1 ansible_user=root<\/p>\n<p>web2 ansible_host=192.168.1.2 ansible_user=root<\/p>\n<p>[db_servers]<\/p>\n<p>db1 ansible_host=192.168.2.1 ansible_user=root<\/p>\n<p>db2 ansible_host=192.168.2.2 ansible_user=root<\/p>\n<p>Dynamic inventory allows Ansible users to query other sources for host lists that they can then import into Ansible for creation of dynamic inventories for AWS, GCP or any custom inventory sources.<\/p>\n<p>Ad-hoc commands in Ansible enable host commands without an inventory file that can quickly execute commands against multiple hosts simultaneously.<\/p>\n<p>Ansible Inventory Files provide hosts and host groups where tasks may be run.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Ansible_Dynamic_Inventory\"><\/span><strong>Ansible Dynamic Inventory<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Ansible Dynamic Inventory has long been popular with system administrators due to its capacity of handling hundreds of servers at once. Users of Ansible Dynamic Inventory can dynamically fill their inventory from external sources like cloud providers, CMDBs and LDAP servers &#8211; adding this flexibility and depth of inventory control that system admins want.<\/p>\n<p>Customers may specify their inventory needs within a data file and quickly produce it on demand; with no human involvement necessary for updates of dynamic inventory updates.<\/p>\n<p>Ansible Dynamic Inventory offers several advantages for users:<\/p>\n<p><img decoding=\"async\" class=\"size-medium aligncenter\" src=\"https:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2023\/05\/ansible-dynamic-inventory.png\" alt=\"\" width=\"603\" height=\"483\" \/><\/p>\n<p><strong>Automated Inventory Management:<\/strong> With Ansible Dynamic Inventory&#8217;s automation features, inventory can be automatically created and managed reducing manual involvement while keeping records current.<\/p>\n<p><strong>Seamless Integration:<\/strong> Ansible Dynamic Inventory is compatible with cloud providers and CMDBs to keep its inventory accurate, making reports simple to generate, as well as keeping reports up-to-date and providing easy data aggregation capabilities for reports or other purposes.<\/p>\n<p><strong>Flexible Inventory Customization:<\/strong> Customizing Ansible Dynamic Inventory to suit different use cases or circumstances is easily possible, providing more flexibility.<\/p>\n<p><strong>Security:<\/strong>Ansible Dynamic Inventory ensures secure inventory storage and management for users by providing encrypted storage of inventory data with safe remote access from anywhere, as well as providing data sources and interoperability with cloud providers or CMDBs for automated inventory control.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Ansible_Loops\"><\/span><strong>Ansible Loops <\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Ansible loops Enable iterative changes of values and make repeated processes and devices simpler to change at the same time.<\/p>\n<p>Ansible loops provide task repetition through programming loops that iterate across a collection of values in programming language.<\/p>\n<p>Ansible can also efficiently repeat operations across several computers for settings requiring many jobs on numerous devices simultaneously.<\/p>\n<p>Ansible loops enable you to repeat tasks for each list value in an automated fashion, including setting up each server listed or configuring permissions for an array of users.<\/p>\n<p><img decoding=\"async\" class=\"size-medium aligncenter\" src=\"https:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2023\/05\/ansible-loops.png\" alt=\"\" width=\"1000\" height=\"318\" \/><\/p>\n<p>Ansible loops provide a more <strong>efficient and organized methodfor changing multiple hosts<\/strong> at the same time, than performing one command by hand across each host in turn.<\/p>\n<p>An Ansible loop might deploy packages onto all hosts on its list at the same time &#8211; which makes for greater efficiency versus performing individual commands on every host individually.<\/p>\n<p>Ansible loops help build playbooks containing sequenced tasks, running hosts or tasks consecutively or organizing tasks across several hosts in parallel. Ansible loops also facilitate creating playbooks using Ansible.<\/p>\n<p>Ansible loops provide efficient host modifications on multiple computers simultaneously.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Loop_in_Ansible\"><\/span><strong>Loop in Ansible<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Ansible is an <strong>open-source <\/strong><a href=\"https:\/\/cloudfoundation.com\/blog\/what-is-servicenow\/\" target=\"_blank\" rel=\"noopener\"><strong>configuration management<\/strong><\/a><strong> and orchestration application<\/strong> designed to automate IT infrastructures with playbooks&#8211;YAML scripts&#8211;that automate infrastructures using Ansible&#8217;s loop capability. Loop provides users with a way to repeat processes with different settings every time it is used.<\/p>\n<p><img decoding=\"async\" class=\"size-medium aligncenter\" src=\"https:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2023\/05\/loop-in-ansible.png\" alt=\"\" width=\"1163\" height=\"434\" \/><\/p>\n<p>Ansible looping provides users with a way to perform repeated operations with differing parameters or input settings, thus repeating an operation over and over. Ansible&#8217;s &#8220;loop&#8221; directive runs this loop across a list of items performing its respective task on each one until completion is reached.<\/p>\n<p>Loop through a list, dictionary of key-value pairs, range of integers or text using the Loop directive. Loop syntax:<\/p>\n<p>loop:<\/p>\n<p>&lt;item1&gt;<\/p>\n<p>&lt;item2&gt;<\/p>\n<p>\u2026..<\/p>\n<p>Loop directives resemble for loops found in programming languages; looping assigns each item from a list item list item variable into iterative lists that repeat tasks until finished; this approach repeats processes while changing parameters as necessary.<\/p>\n<p>An Ansible loop simplifies complex IT management tasks by automating them with multiple users, firewalls and applications being generated automatically by it. Loop&#8217;s capabilities make IT administration less laborious.<\/p>\n<p>Loop is also capable of changing setups; for instance, changing cluster host configurations by looping through hosts and running tasks to change them manually is also something this tool does. Ansible Loop automates and manages complex IT settings; users may repeat tasks with varied settings simultaneously while it modifies them simultaneously.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Ansible_Variables\"><\/span><strong>Ansible Variables<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Ansible variables <strong>store playbook values<\/strong>. Variables contain strings, integers, lists, dictionaries and Booleans for convenient storage purposes. Variables may be created and utilized in various ways within Ansible environments.<\/p>\n<p><img decoding=\"async\" class=\"size-medium aligncenter\" src=\"https:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2023\/05\/ansible-variables.jpg\" alt=\"\" width=\"579\" height=\"578\" \/><\/p>\n<p>Variables contain passwords, IP addresses and database connection strings; database query output results or script output may also be stored here as variables may specify task and role defaults for tasks and roles.<\/p>\n<p>Key-value pairs serve as Ansible variables while their definition can be seen below:<\/p>\n<p>variable_name: value<\/p>\n<p>Set_fact can also define variables. The set_fact module creates and stores task or script outcomes into variables.<\/p>\n<p>For instance, this task stores script output as variable values:<\/p>\n<p>set_fact:<\/p>\n<p>script_output: &#8220;{{ lookup(&#8216;script&#8217;, &#8216;script.sh&#8217;) }}&#8221;<\/p>\n<p>Set_fact and register can store task output into variables for later use, making this tool essential when working with large task results.<\/p>\n<p>&#8211; command: echo &#8220;Hello World&#8221;<\/p>\n<p>register: hello_world<\/p>\n<p>Conditionals use variables. Ansible tasks and playbooks support conditionals statements; for instance, this task checks to see whether one variable has been declared before running an Ansible task to test its conditionality if defined:<\/p>\n<p>&#8211; name: Check if a variable is defined<\/p>\n<p>shell: echo &#8220;This is a test&#8221;<\/p>\n<p>when: variable_name is defined<\/p>\n<p>Loops use variables, while Ansible looping components enable task repetition. An example task that utilizes loops involves repeating an action over each item in a list:<\/p>\n<p>&#8211; name: Loop through a list<\/p>\n<p>command: echo &#8220;This is a test&#8221;<\/p>\n<p>with_items:<\/p>\n<p>&#8211; item1<\/p>\n<p>&#8211; item2<\/p>\n<p>&#8211; item3<\/p>\n<p>Ansible variables automate jobs well. They accept values, default values, conditionals, and loops.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Variables_in_Ansible\"><\/span><strong>Variables in Ansible<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Playbooks, templates or any files which reference Ansible variables may use them for playbook or template execution; Ansible variables provide custom control over both processes.<\/p>\n<p>Ansible makes variable definition easy with it &#8216;set_fact&#8217; module, making variable definition a snap for playbooks running with them.<\/p>\n<p>Simply specify playbook variables using&#8217;set_fact&#8217; variables within their playbooks for optimal execution.<\/p>\n<p><img decoding=\"async\" class=\"size-medium aligncenter\" src=\"https:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2023\/05\/variables-in-ansible.jpg\" alt=\"\" width=\"450\" height=\"498\" \/><\/p>\n<p>Ansible inventory files <strong>support variables to facilitate host configuration dynamically<\/strong>; variables may be used to customize host connection information, roles or any other parameter as required.<\/p>\n<p>Variables play an integral part of Ansible module functionality. Python-based Ansible modules accept variable parameter definitions as tasks require, providing task-specific changes. They&#8217;re known by three names &#8216;hostvars, groupvars and ansible_facts.<\/p>\n<p>Hostvars holds all host variables to enable customisation of host configuration. groupvars stores group-specific host variables allowing various configuration options.<\/p>\n<p>Ansible gathers facts (or variables) during playbook or task execution in a variable known as &#8220;ansible_facts,&#8221; including OS, CPU and RAM capacity data. Templates or files may store system configuration settings here as well.<\/p>\n<p>Ansible has both native variables and third-party modules to extend its capabilities, including those which allow custom variable creation as well as modules which help customise Ansible modules. These third-party modules may create custom variables or customise Ansible modules accordingly.<\/p>\n<p>To learn everything there is to know about Ansible, you can read my previous blogs on the <a href=\"https:\/\/cloudfoundation.com\/\" target=\"_blank\" rel=\"noopener\">CloudFoundation<\/a> Official Website.<\/p>\n<p>Take use of the platform&#8217;s training and <a href=\"https:\/\/cloudfoundation.com\/blog\/ansible-certification-tips-for-passing-the-ansible-certification-exam\/\" target=\"_blank\" rel=\"noopener\">Ansible Certification Guidance<\/a> to show that you&#8217;ve mastered Ansible from top to bottom.<\/p>\n<p><a href=\"https:\/\/cloudfoundation.com\/ansible-training\/\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"size-medium aligncenter\" src=\"http:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2023\/06\/Ansible-Certification-Course.png\" alt=\"\" width=\"1240\" height=\"260\" \/><\/a><\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;3.25&#8243; background_size=&#8221;initial&#8221; background_position=&#8221;top_left&#8221; background_repeat=&#8221;repeat&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;3.25&#8243; custom_padding=&#8221;|||&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_team_member name=&#8221;Divya &#8221; position=&#8221;Author&#8221; image_url=&#8221;https:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2023\/06\/Divya1.png&#8221; _builder_version=&#8221;4.9.7&#8243; header_level=&#8221;h5&#8243; header_font=&#8221;Titillium Web|700|||||||&#8221; body_font=&#8221;Titillium Web||||||||&#8221; body_font_size=&#8221;16&#8243;]<\/p>\n<p>Hello all! I am gonna pop you with the information that will make your life easier.<\/p>\n<p>[\/et_pb_team_member][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.9.7&#8243;][et_pb_row _builder_version=&#8221;4.9.7&#8243; background_size=&#8221;initial&#8221; background_position=&#8221;top_left&#8221; background_repeat=&#8221;repeat&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;3.25&#8243; custom_padding=&#8221;|||&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_post_title meta=&#8221;off&#8221; featured_image=&#8221;off&#8221; _builder_version=&#8221;4.9.7&#8243; title_font=&#8221;Work Sans||||||||&#8221; title_text_align=&#8221;left&#8221; title_text_color=&#8221;#000000&#8243; title_font_size=&#8221;47&#8243; background_color=&#8221;RGBA(0,0,0,0)&#8221; background_enable_image=&#8221;off&#8221; custom_margin=&#8221;|||10%&#8221; title_font_size_tablet=&#8221;40&#8243; title_font_size_phone=&#8221;35&#8243; title_font_size_last_edited=&#8221;on|desktop&#8221;][\/et_pb_post_title][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;3.25&#8243; background_size=&#8221;initial&#8221; background_position=&#8221;top_left&#8221; background_repeat=&#8221;repeat&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;3.25&#8243; custom_padding=&#8221;|||&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_text _builder_version=&#8221;4.9.7&#8243; text_font=&#8221;Georgia||||||||&#8221; text_text_color=&#8221;#000000&#8243; text_font_size=&#8221;22px&#8221; text_line_height=&#8221;1.9em&#8221; max_width=&#8221;800px&#8221; max_width_last_edited=&#8221;off|phone&#8221; custom_margin=&#8221;|||10%&#8221; custom_margin_last_edited=&#8221;off|desktop&#8221; hover_enabled=&#8221;0&#8243; text_font_size_tablet=&#8221;&#8221; text_font_size_phone=&#8221;&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; text_line_height_last_edited=&#8221;off|phone&#8221; sticky_enabled=&#8221;0&#8243;] Do you wish to streamline your IT [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":64695,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"2880","footnotes":""},"categories":[242],"tags":[],"class_list":{"0":"post-64675","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-ansible"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Ansible Automation Platform<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cloudfoundation.com\/blog\/ansible-automation-platform\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ansible Automation Platform\" \/>\n<meta property=\"og:description\" content=\"[et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.9.7&#8243;][et_pb_row _builder_version=&#8221;4.9.7&#8243; background_size=&#8221;initial&#8221; background_position=&#8221;top_left&#8221; background_repeat=&#8221;repeat&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;3.25&#8243; custom_padding=&#8221;|||&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_post_title meta=&#8221;off&#8221; featured_image=&#8221;off&#8221; _builder_version=&#8221;4.9.7&#8243; title_font=&#8221;Work Sans||||||||&#8221; title_text_align=&#8221;left&#8221; title_text_color=&#8221;#000000&#8243; title_font_size=&#8221;47&#8243; background_color=&#8221;RGBA(0,0,0,0)&#8221; background_enable_image=&#8221;off&#8221; custom_margin=&#8221;|||10%&#8221; title_font_size_tablet=&#8221;40&#8243; title_font_size_phone=&#8221;35&#8243; title_font_size_last_edited=&#8221;on|desktop&#8221;][\/et_pb_post_title][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;3.25&#8243; background_size=&#8221;initial&#8221; background_position=&#8221;top_left&#8221; background_repeat=&#8221;repeat&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;3.25&#8243; custom_padding=&#8221;|||&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_text _builder_version=&#8221;4.9.7&#8243; text_font=&#8221;Georgia||||||||&#8221; text_text_color=&#8221;#000000&#8243; text_font_size=&#8221;22px&#8221; text_line_height=&#8221;1.9em&#8221; max_width=&#8221;800px&#8221; max_width_last_edited=&#8221;off|phone&#8221; custom_margin=&#8221;|||10%&#8221; custom_margin_last_edited=&#8221;off|desktop&#8221; hover_enabled=&#8221;0&#8243; text_font_size_tablet=&#8221;&#8221; text_font_size_phone=&#8221;&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; text_line_height_last_edited=&#8221;off|phone&#8221; sticky_enabled=&#8221;0&#8243;] Do you wish to streamline your IT [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudfoundation.com\/blog\/ansible-automation-platform\/\" \/>\n<meta property=\"og:site_name\" content=\"CloudFoundation | Blog\" \/>\n<meta property=\"article:published_time\" content=\"2023-05-17T06:56:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-04T06:40:04+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2023\/05\/internet-network-connection-conceptdata-analysisglobal-business-connection-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"533\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"NAGENDRAG\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"NAGENDRAG\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Ansible Automation Platform","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cloudfoundation.com\/blog\/ansible-automation-platform\/","og_locale":"en_US","og_type":"article","og_title":"Ansible Automation Platform","og_description":"[et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.9.7&#8243;][et_pb_row _builder_version=&#8221;4.9.7&#8243; background_size=&#8221;initial&#8221; background_position=&#8221;top_left&#8221; background_repeat=&#8221;repeat&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;3.25&#8243; custom_padding=&#8221;|||&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_post_title meta=&#8221;off&#8221; featured_image=&#8221;off&#8221; _builder_version=&#8221;4.9.7&#8243; title_font=&#8221;Work Sans||||||||&#8221; title_text_align=&#8221;left&#8221; title_text_color=&#8221;#000000&#8243; title_font_size=&#8221;47&#8243; background_color=&#8221;RGBA(0,0,0,0)&#8221; background_enable_image=&#8221;off&#8221; custom_margin=&#8221;|||10%&#8221; title_font_size_tablet=&#8221;40&#8243; title_font_size_phone=&#8221;35&#8243; title_font_size_last_edited=&#8221;on|desktop&#8221;][\/et_pb_post_title][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;3.25&#8243; background_size=&#8221;initial&#8221; background_position=&#8221;top_left&#8221; background_repeat=&#8221;repeat&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;3.25&#8243; custom_padding=&#8221;|||&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_text _builder_version=&#8221;4.9.7&#8243; text_font=&#8221;Georgia||||||||&#8221; text_text_color=&#8221;#000000&#8243; text_font_size=&#8221;22px&#8221; text_line_height=&#8221;1.9em&#8221; max_width=&#8221;800px&#8221; max_width_last_edited=&#8221;off|phone&#8221; custom_margin=&#8221;|||10%&#8221; custom_margin_last_edited=&#8221;off|desktop&#8221; hover_enabled=&#8221;0&#8243; text_font_size_tablet=&#8221;&#8221; text_font_size_phone=&#8221;&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; text_line_height_last_edited=&#8221;off|phone&#8221; sticky_enabled=&#8221;0&#8243;] Do you wish to streamline your IT [&hellip;]","og_url":"https:\/\/cloudfoundation.com\/blog\/ansible-automation-platform\/","og_site_name":"CloudFoundation | Blog","article_published_time":"2023-05-17T06:56:10+00:00","article_modified_time":"2024-01-04T06:40:04+00:00","og_image":[{"width":800,"height":533,"url":"http:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2023\/05\/internet-network-connection-conceptdata-analysisglobal-business-connection-1.jpg","type":"image\/jpeg"}],"author":"NAGENDRAG","twitter_card":"summary_large_image","twitter_misc":{"Written by":"NAGENDRAG","Est. reading time":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/cloudfoundation.com\/blog\/ansible-automation-platform\/","url":"https:\/\/cloudfoundation.com\/blog\/ansible-automation-platform\/","name":"Ansible Automation Platform","isPartOf":{"@id":"https:\/\/cloudfoundation.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudfoundation.com\/blog\/ansible-automation-platform\/#primaryimage"},"image":{"@id":"https:\/\/cloudfoundation.com\/blog\/ansible-automation-platform\/#primaryimage"},"thumbnailUrl":"https:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2023\/05\/internet-network-connection-conceptdata-analysisglobal-business-connection-1.jpg","datePublished":"2023-05-17T06:56:10+00:00","dateModified":"2024-01-04T06:40:04+00:00","author":{"@id":"https:\/\/cloudfoundation.com\/blog\/#\/schema\/person\/df6c7eba98f1bb15f2a100a9958266e4"},"breadcrumb":{"@id":"https:\/\/cloudfoundation.com\/blog\/ansible-automation-platform\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudfoundation.com\/blog\/ansible-automation-platform\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudfoundation.com\/blog\/ansible-automation-platform\/#primaryimage","url":"https:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2023\/05\/internet-network-connection-conceptdata-analysisglobal-business-connection-1.jpg","contentUrl":"https:\/\/cloudfoundation.com\/blog\/wp-content\/uploads\/2023\/05\/internet-network-connection-conceptdata-analysisglobal-business-connection-1.jpg","width":800,"height":533},{"@type":"BreadcrumbList","@id":"https:\/\/cloudfoundation.com\/blog\/ansible-automation-platform\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudfoundation.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Ansible Automation Platform"}]},{"@type":"WebSite","@id":"https:\/\/cloudfoundation.com\/blog\/#website","url":"https:\/\/cloudfoundation.com\/blog\/","name":"CloudFoundation | Blog","description":"A New way of Learning","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cloudfoundation.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/cloudfoundation.com\/blog\/#\/schema\/person\/df6c7eba98f1bb15f2a100a9958266e4","name":"NAGENDRAG","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudfoundation.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/09e08ba1102807a876f2c00245d6b955f0a9f027b40c181e9cee0cd2d927f84a?s=96&d=wavatar&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/09e08ba1102807a876f2c00245d6b955f0a9f027b40c181e9cee0cd2d927f84a?s=96&d=wavatar&r=g","caption":"NAGENDRAG"},"url":"https:\/\/cloudfoundation.com\/blog\/author\/nagendrag\/"}]}},"_links":{"self":[{"href":"https:\/\/cloudfoundation.com\/blog\/wp-json\/wp\/v2\/posts\/64675","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cloudfoundation.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cloudfoundation.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cloudfoundation.com\/blog\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudfoundation.com\/blog\/wp-json\/wp\/v2\/comments?post=64675"}],"version-history":[{"count":12,"href":"https:\/\/cloudfoundation.com\/blog\/wp-json\/wp\/v2\/posts\/64675\/revisions"}],"predecessor-version":[{"id":78192,"href":"https:\/\/cloudfoundation.com\/blog\/wp-json\/wp\/v2\/posts\/64675\/revisions\/78192"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudfoundation.com\/blog\/wp-json\/wp\/v2\/media\/64695"}],"wp:attachment":[{"href":"https:\/\/cloudfoundation.com\/blog\/wp-json\/wp\/v2\/media?parent=64675"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudfoundation.com\/blog\/wp-json\/wp\/v2\/categories?post=64675"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudfoundation.com\/blog\/wp-json\/wp\/v2\/tags?post=64675"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}