{"id":19257,"date":"2023-11-15T00:23:18","date_gmt":"2023-11-14T21:23:18","guid":{"rendered":"https:\/\/kifarunix.com\/?p=19257"},"modified":"2024-03-10T15:04:45","modified_gmt":"2024-03-10T12:04:45","slug":"how-to-create-users-and-user-roles-in-openstack","status":"publish","type":"post","link":"https:\/\/kifarunix.com\/how-to-create-users-and-user-roles-in-openstack\/","title":{"rendered":"How to Create Users and User Roles in OpenStack"},"content":{"rendered":"\n<p>In this tutorial, we&#8217;ll guide you through how to create users and user roles in OpenStack. User accounts are crucial for effective cloud management, allowing individuals to access and utilize OpenStack resources based on their roles and responsibilities. Segmentation of roles becomes necessary to ensure a secure and organized environment, granting specific permissions to different users.<\/p>\n\n\n\n<div class=\"wp-block-rank-math-toc-block\" id=\"rank-math-toc\"><h2>Table of Contents<\/h2><nav><ul><li><a href=\"#creating-users-and-user-roles-in-open-stack\">Creating Users and User Roles in OpenStack<\/a><ul><li><a href=\"#list-available-users-in-open-stack\">List Available Users in OpenStack<\/a><ul><li><a href=\"#list-available-users-in-open-stack-on-horizon\">List Available Users in OpenStack on Horizon<\/a><\/li><li><a href=\"#list-available-users-in-open-stack-on-command-line\">List Available Users in OpenStack on Command Line<\/a><\/li><\/ul><\/li><li><a href=\"#list-available-users-roles-in-open-stack\">List Available Users Roles in OpenStack<\/a><\/li><li><a href=\"#what-are-the-permissions-privileges-associated-with-open-stack-roles\">What are the Permissions\/Privileges Associated with OpenStack Roles?<\/a><\/li><li><a href=\"#create-user-account-in-open-stack\">Create User Account in OpenStack<\/a><ul><li><a href=\"#create-user-account-via-horizon\">Create User Account via Horizon<\/a><\/li><li><a href=\"#create-user-account-via-command-line\">Create User Account via Command Line<\/a><\/li><\/ul><\/li><li><a href=\"#update-user-account-on-open-stack\">Update User Account on OpenStack<\/a><\/li><li><a href=\"#delete-user-account-on-open-stack\">Delete User Account on OpenStack<\/a><\/li><li><a href=\"#assign-roles-to-a-user-on-open-stack\">Assign Roles to a User on OpenStack<\/a><\/li><li><a href=\"#list-assigned-user-roles-on-open-stack\">List Assigned User Roles on OpenStack<\/a><\/li><li><a href=\"#remove-user-roles-on-open-stack\">Remove User Roles on OpenStack<\/a><\/li><li><a href=\"#create-custom-roles-in-open-stack\">Create Custom Roles in OpenStack<\/a><\/li><li><a href=\"#open-stack-implied-roles\">OpenStack Implied Roles<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"creating-users-and-user-roles-in-open-stack\">Creating Users and User Roles in OpenStack<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"list-available-users-in-open-stack\">List Available Users in OpenStack<\/h3>\n\n\n\n<p>To begin with, let&#8217;s see what are the available user accounts in OpenStack. You can list available users using the command line or from the OpenStack horizon.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"list-available-users-in-open-stack-on-horizon\">List Available Users in OpenStack on Horizon<\/h4>\n\n\n\n<p>To view available users from the Horizon, simply login as admin and navigate to <strong>Identity &gt; Users<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1617\" height=\"874\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/11\/list-available-users-horizon.png?v=1699981462\" alt=\"How to Create Users and User Roles in OpenStack\" class=\"wp-image-19260\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/11\/list-available-users-horizon.png?v=1699981462 1617w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/11\/list-available-users-horizon-768x415.png?v=1699981462 768w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/11\/list-available-users-horizon-1536x830.png?v=1699981462 1536w\" sizes=\"(max-width: 1617px) 100vw, 1617px\" \/><\/figure>\n\n\n\n<p>Kindly note that I am using <a href=\"https:\/\/kifarunix.com\/?s=openstack+kolla+ansible\" target=\"_blank\" rel=\"noreferrer noopener\">OpenStack deployed using Kolla-ansible<\/a>, just in case!<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"list-available-users-in-open-stack-on-command-line\">List Available Users in OpenStack on Command Line<\/h4>\n\n\n\n<p>You can also list user from the command line using openstack command. Note that before you can use openstack commands, you need to load the environment variables and credentials required to authenticate as an administrative user (often referred to as the &#8220;admin&#8221; user) into your OpenStack.<\/p>\n\n\n\n<p>The way to load the credentials varies with the OpenStack deployment methods. Since I am using OpenStack deployed with Kolla-ansible, this is how I have to load the credentials;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>source $HOME\/kolla-ansible\/bin\/activate<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>source \/etc\/kolla\/admin-openrc.sh<\/code><\/pre>\n\n\n\n<p>Once you load your OpenStack credentials, you should now be able to execute the OpenStack commands.<\/p>\n\n\n\n<p>For example, to list available user accounts on Openstack from the command line;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openstack user list --long<\/code><\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>+----------------------------------+-------------------+----------------------------------+----------------------------------+-------------+-------+---------+\n| ID                               | Name              | Project                          | Domain                           | Description | Email | Enabled |\n+----------------------------------+-------------------+----------------------------------+----------------------------------+-------------+-------+---------+\n| 0876483093e340a395b05f0231fa8dcc | admin             |                                  | default                          |             |       | True    |\n| 062f800b6827486e84906aa9c4bdfb4c | glance            | 2668477725d44e79837747f67e387a62 | default                          |             |       | True    |\n| 9817f955fac14f31b1259cc9953f97b1 | cinder            | 2668477725d44e79837747f67e387a62 | default                          |             |       | True    |\n| 8c7177004210461285e6ba77815c9dc2 | placement         | 2668477725d44e79837747f67e387a62 | default                          |             |       | True    |\n| 35d37e4185984908afecb795f99bbd84 | nova              | 2668477725d44e79837747f67e387a62 | default                          |             |       | True    |\n| cc7e7b37b9ab4aceb74040768ebe7b1c | neutron           | 2668477725d44e79837747f67e387a62 | default                          |             |       | True    |\n| 938be286a77e4d68b212e6bb22f5d2d8 | kuryr             | 2668477725d44e79837747f67e387a62 | default                          |             |       | True    |\n| 08fdb79bff2d4fb89c0b50784d797b18 | heat              | 2668477725d44e79837747f67e387a62 | default                          |             |       | True    |\n| 4415e087f6b1413dae42f39e2de2e9e9 | heat_domain_admin |                                  | a5a28733689a4f3a8f02edcf36343324 |             |       | True    |\n| 5d3ce72d162147cc856970f14eadb523 | gnocchi           | 2668477725d44e79837747f67e387a62 | default                          |             |       | True    |\n| 1cb15c3c220042718482e43638eef855 | ceilometer        | 2668477725d44e79837747f67e387a62 | default                          |             |       | True    |\n| fe573160076d480cb69cb371da645b3c | aodh              | 2668477725d44e79837747f67e387a62 | default                          |             |       | True    |\n| ad267fc2d98745ac95f6fcfa5de4f856 | zun               | 2668477725d44e79837747f67e387a62 | default                          |             |       | True    |\n+----------------------------------+-------------------+----------------------------------+----------------------------------+-------------+-------+---------+\n<\/code><\/pre>\n\n\n\n<p>Some of the available accounts are service accounts.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"list-available-users-roles-in-open-stack\">List Available Users Roles in OpenStack<\/h3>\n\n\n\n<p>Similarly, you can check available user roles from Horizon by navigating to <strong>Identity &gt; Roles<\/strong> or from command line using the command below;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openstack role list<\/code><\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>+----------------------------------+------------------+\n| ID                               | Name             |\n+----------------------------------+------------------+\n| 314720ae3c6740bfb5161135e1d5bc33 | heat_stack_user  |\n| 51ce12e789a241b4b22485dd3677b031 | heat_stack_owner |\n| b8bceeaf45c2489fb1195989904f7ba7 | reader           |\n| e59baa553db042db9303cb80c33b2b55 | admin            |\n| ed97cdde758d41708528617e6579973f | member           |\n+----------------------------------+------------------+\n<\/code><\/pre>\n\n\n\n<p>Starting from the Rocky release, Keystone offers three default roles: <strong>admin<\/strong>, <strong>member<\/strong>, and <strong>reader<\/strong>. OpenStack admins have the ability to assign these roles to any entity, such as a group or user, across various scopes, including system, domain, or project.<\/p>\n\n\n\n<p>In the 2023.2 (Bobcat) release and onward, Keystone has introduced the service role as one of the default options in addition to admin, member, and reader roles. Administrators can leverage this role for service-to-service API calls, providing an alternative to using the admin role for the same purpose. Importantly, the service role is distinct from the admin, member, and reader roles, and its assignment does not impact any of these existing roles.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"what-are-the-permissions-privileges-associated-with-open-stack-roles\">What are the Permissions\/Privileges Associated with OpenStack Roles?<\/h3>\n\n\n\n<p>So, you might be wondering, what permissions do these OpenStack roles have? Worry not, because, you can read more about thise on the <a href=\"https:\/\/docs.openstack.org\/keystone\/latest\/admin\/service-api-protection.html#roles-definitions\" target=\"_blank\" rel=\"noreferrer noopener\">roles definitions page<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"create-user-account-in-open-stack\">Create User Account in OpenStack<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"create-user-account-via-horizon\">Create User Account via Horizon<\/h4>\n\n\n\n<p>If you want to add additional users into OpenStack for the management of various tasks, you can create their accounts either from command line or from the OpenStack horizon.<\/p>\n\n\n\n<p>To create user account in OpenStack from the horizon, simply navigate to Horizon &gt; <strong>Identity &gt; Users &gt; Create User<\/strong>.<\/p>\n\n\n\n<p>Some of the details required for the user account include the username, description of the user, email address, the user password, the primary project to assign a user to, the role a user has on assigned project, account status (enabled or disabled), password state (lock\/unlock). The details marked with * are required, the rest are optional.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1614\" height=\"894\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/11\/create-user-account-openstack.png?v=1699993269\" alt=\"\" class=\"wp-image-19265\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/11\/create-user-account-openstack.png?v=1699993269 1614w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/11\/create-user-account-openstack-768x425.png?v=1699993269 768w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/11\/create-user-account-openstack-1536x851.png?v=1699993269 1536w\" sizes=\"(max-width: 1614px) 100vw, 1614px\" \/><\/figure>\n\n\n\n<p>Click <strong>Create User<\/strong> to create the account.<\/p>\n\n\n\n<p>Once done, you should see the user listed under users page.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"create-user-account-via-command-line\">Create User Account via Command Line<\/h4>\n\n\n\n<p>For the CLI centric admins, you can use the <strong><code>openstack user create<\/code><\/strong> command.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openstack user create -h<\/code><\/pre>\n\n\n\n<p>For example;<\/p>\n\n\n\n<pre class=\"scroll-sz\"><code>openstack user create --project poc \\\n\t--email pocuser@kifarunix.com \\\n\t--description \"Kifarunix POC User\" \\\n\t--password-prompt \\\n\t--enable \\\n\tkifarunix-poc\n<\/code><\/pre>\n\n\n\n<p>The command doesn&#8217;t assign roles to the user automatically. See below on how to assign user some roles.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"update-user-account-on-open-stack\">Update User Account on OpenStack<\/h3>\n\n\n\n<p>You can modify a number of things on the user account either from the horizon or from command line.<\/p>\n\n\n\n<p>On the horizon, you can update user details by navigating to <strong>Identity &gt; Users<\/strong> &gt; Select specific user to update and click <strong>edit<\/strong> to make updates.<\/p>\n\n\n\n<p>From command line, you can use the command <strong><code>openstack user set<\/code><\/strong>. Read more on;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openstack user set -h<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"delete-user-account-on-open-stack\">Delete User Account on OpenStack<\/h3>\n\n\n\n<p>If you want to delete user account on OpenStack, you can do it from the command line or from horizon.<\/p>\n\n\n\n<p>To delete user from horizon, login as administrator and navigate to <strong>Identity &gt; Users &gt; Select User &gt; Under Actions column, click drop down &gt; Delete User<\/strong>.<\/p>\n\n\n\n<p>You can as well use command line with the command, <strong><code>openstack user delete<\/code><\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openstack user delete -h<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"assign-roles-to-a-user-on-open-stack\">Assign Roles to a User on OpenStack<\/h3>\n\n\n\n<p>When you create a user from Horizon, you will get an option to assign them some roles. However, when you create a user from the command line, you have to run a seperate command to add them some roles.<\/p>\n\n\n\n<p>So, for examole, once you have created a user account, you need to assign them some role using the <strong><code>openstack role add<\/code><\/strong> command.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openstack role add -h<\/code><\/pre>\n\n\n\n<p>For example;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openstack role add --user kifarunix-poc --project poc reader<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"list-assigned-user-roles-on-open-stack\">List Assigned User Roles on OpenStack<\/h3>\n\n\n\n<p>How can you verify roles assigned to a user? You can verify user roles from the horizon or from command line.<\/p>\n\n\n\n<p>To verify user roles from the command line, simply navigate to <strong>Identity<\/strong> page &gt; <strong>Users<\/strong> &gt; Click on the respective <strong>username<\/strong> &gt; <strong>Role assignments<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1621\" height=\"406\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/11\/user-role-assignment.png?v=1699993119\" alt=\"\" class=\"wp-image-19264\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/11\/user-role-assignment.png?v=1699993119 1621w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/11\/user-role-assignment-768x192.png?v=1699993119 768w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/11\/user-role-assignment-1536x385.png?v=1699993119 1536w\" sizes=\"(max-width: 1621px) 100vw, 1621px\" \/><\/figure>\n\n\n\n<p>To verify user assigned roles from the command line, use the command, <code>openstack role assignment list<\/code>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openstack role assignment list -h<\/code><\/pre>\n\n\n\n<p>For example;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openstack role assignment list --user kifarunix-demo<\/code><\/pre>\n\n\n\n<pre class=\"scroll-sz\"><code>+----------------------------------+----------------------------------+-------+----------------------------------+--------+--------+-----------+\n| Role                             | User                             | Group | Project                          | Domain | System | Inherited |\n+----------------------------------+----------------------------------+-------+----------------------------------+--------+--------+-----------+\n| b8bceeaf45c2489fb1195989904f7ba7 | 5579e7303f164ae8b1a76b6781845b3a |       | 18914ea6f4014305818cdb1ec8df8daf |        |        | False     |\n+----------------------------------+----------------------------------+-------+----------------------------------+--------+--------+-----------+\n<\/code><\/pre>\n\n\n\n<p>Show more details about the role, use the <strong><code>openstack role show<\/code><\/strong> command;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openstack role show -h<\/code><\/pre>\n\n\n\n<p>For example, find out more about the role above;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openstack role show b8bceeaf45c2489fb1195989904f7ba7<\/code><\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>+-------------+----------------------------------+\n| Field       | Value                            |\n+-------------+----------------------------------+\n| description | None                             |\n| domain_id   | None                             |\n| id          | b8bceeaf45c2489fb1195989904f7ba7 |\n| name        | reader                           |\n| options     | {'immutable': True}              |\n+-------------+----------------------------------+\n<\/code><\/pre>\n\n\n\n<p>You can see it is reader role.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"remove-user-roles-on-open-stack\">Remove User Roles on OpenStack<\/h3>\n\n\n\n<p>You can update a user and remove their roles using the command, <strong>openstack role remove<\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openstack role remove -h<\/code><\/pre>\n\n\n\n<p>For example, to remove the reader role from the user <strong><code>kifarunix-poc<\/code><\/strong> in the <strong>poc<\/strong> project.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openstack role remove --user kifarunix-poc --project poc reader<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"create-custom-roles-in-open-stack\">Create Custom Roles in OpenStack<\/h3>\n\n\n\n<p>Well, it is also possible to create custom roles in OpenStack. You can use the command, <strong><code>openstack role create<\/code><\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openstack role create -h<\/code><\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>usage: openstack role create [-h] [-f {json,shell,table,value,yaml}] [-c COLUMN] [--noindent] [--prefix PREFIX] [--max-width <integer>] [--fit-width]\n                             [--print-empty] [--description <description>] [--domain <domain>] [--or-show] [--immutable | --no-immutable]\n                             <role-name>\n\nCreate new role\n\npositional arguments:\n  <role-name>   New role name\n\noptions:\n  -h, --help            show this help message and exit\n  --description <description>\n                        Add description about the role\n  --domain <domain>\n                        Domain the role belongs to (name or ID)\n  --or-show             Return existing role\n  --immutable           Make resource immutable. An immutable project may not be deleted or modified except to remove the immutable flag\n  --no-immutable        Make resource mutable (default)\n\noutput formatters:\n  output formatter options\n\n  -f {json,shell,table,value,yaml}, --format {json,shell,table,value,yaml}\n                        the output format, defaults to table\n  -c COLUMN, --column COLUMN\n                        specify the column(s) to include, can be repeated to show multiple columns\n\njson formatter:\n  --noindent            whether to disable indenting the JSON\n\nshell formatter:\n  a format a UNIX shell can parse (variable=\"value\")\n\n  --prefix PREFIX\n                        add a prefix to all variable names\n\ntable formatter:\n  --max-width <integer>\n                        Maximum display width, <1 to disable. You can also use the CLIFF_MAX_TERM_WIDTH environment variable, but the parameter takes precedence.\n  --fit-width           Fit the table to the display width. Implied if --max-width greater than 0. Set the environment variable CLIFF_FIT_WIDTH=1 to always enable\n  --print-empty         Print empty table if there is no data to show.\n<\/code><\/pre>\n\n\n\n<p>You can then assign the users a role.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"open-stack-implied-roles\">OpenStack Implied Roles<\/h3>\n\n\n\n<p>In OpenStack, implied roles refer to a concept where certain roles automatically grant the permissions associated with other roles without explicitly assigning them. This is a way to simplify role management and ensure that users with specific roles also inherit the capabilities of related roles.<\/p>\n\n\n\n<p>Take for example, the&nbsp;<code>admin<\/code>&nbsp;role implies the&nbsp;<code>member<\/code>&nbsp;role, and the&nbsp;<code>member<\/code>&nbsp;role implies the&nbsp;<code>reader<\/code>&nbsp;role. These implications mean users with the&nbsp;<code>admin<\/code>&nbsp;role automatically have the&nbsp;<code>member<\/code>&nbsp;and&nbsp;<code>reader<\/code>&nbsp;roles. Additionally, users with the&nbsp;<code>member<\/code>&nbsp;role automatically have the&nbsp;<code>reader<\/code>&nbsp;role.<\/p>\n\n\n\n<p>Role implications only go one way, from a \u201cprior\u201d role to an \u201cimplied\u201d role. Therefore assigning a user the&nbsp;<code>member<\/code>&nbsp;will not grant them the&nbsp;<code>admin<\/code>&nbsp;role.<\/p>\n\n\n\n<p>Listing Implied roles;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openstack implied role list<\/code><\/pre>\n\n\n\n<pre class=\"scroll-sz\"><code>+----------------------------------+-----------------+----------------------------------+-------------------+\n| Prior Role ID                    | Prior Role Name | Implied Role ID                  | Implied Role Name |\n+----------------------------------+-----------------+----------------------------------+-------------------+\n| e59baa553db042db9303cb80c33b2b55 | admin           | ed97cdde758d41708528617e6579973f | member            |\n| ed97cdde758d41708528617e6579973f | member          | b8bceeaf45c2489fb1195989904f7ba7 | reader            |\n+----------------------------------+-----------------+----------------------------------+-------------------+\n<\/code><\/pre>\n\n\n\n<p>To create an implied role, use the command, <strong><code>openstack implied role create<\/code><\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openstack implied role create -h<\/code><\/pre>\n\n\n\n<p>That marks the end of our guide on creating users and user roles in OpenStack.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this tutorial, we&#8217;ll guide you through how to create users and user roles in OpenStack. User accounts are crucial for effective cloud management, allowing<\/p>\n","protected":false},"author":10,"featured_media":19270,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rank_math_lock_modified_date":false,"footnotes":""},"categories":[121,1885,1886],"tags":[7301,7302,7303],"class_list":["post-19257","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-howtos","category-cloud-compute","category-openstack","tag-add-openstack-user-roles","tag-create-opentack-users","tag-openstack-implied-roles","generate-columns","tablet-grid-50","mobile-grid-100","grid-parent","grid-50","resize-featured-image"],"_links":{"self":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/19257"}],"collection":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/comments?post=19257"}],"version-history":[{"count":11,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/19257\/revisions"}],"predecessor-version":[{"id":20880,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/19257\/revisions\/20880"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/media\/19270"}],"wp:attachment":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/media?parent=19257"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/categories?post=19257"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/tags?post=19257"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}