{"id":46557,"date":"2017-08-22T00:00:00","date_gmt":"2017-08-22T07:00:00","guid":{"rendered":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/blog\/configuring-griddb-puppet\/"},"modified":"2025-11-13T12:54:27","modified_gmt":"2025-11-13T20:54:27","slug":"configuring-griddb-puppet","status":"publish","type":"post","link":"https:\/\/griddb.net\/en\/blog\/configuring-griddb-puppet\/","title":{"rendered":"Configuring GridDB with Puppet"},"content":{"rendered":"<p>Configuring many nodes can be very challenging with lots of manual work &#8212; even just one small typo on one node can lead to hours of debugging. Puppet and other configuration management systems solve this by deploying configurations to multiple nodes thus ensuring that the values are consistent while also helping to prevent human error. We&#8217;ve created a Puppet module available here: <a href=\"https:\/\/griddb.net\/en\/resources\/griddb-puppet-module.tgz\">https:\/\/griddb.net\/en\/resources\/griddb-puppet-module.tgz<\/a> (and soon on puppetforge) that can configure GridDB Standard Edition with either MULTICAST or FIXED_LIST modes.<\/p>\n<p>First a bit of terminology, a puppet master is both the server and the process that stores all of the configuration management settings. A puppet agent is the process that connects to the master and then applies the configuration. A puppet module is a third party set of definitions and templates that enable the end user to use puppet with a particular application. Hiera are YAML definitions that can be referenced within Puppet recipes.<\/p>\n<p>To deploy our puppet module, we&#8217;re going to start a fresh installation of GridDB on Centos 7 on three nodes, essentially what the Amazon AWS instances are. One of the nodes will be the puppet master where the GridDB configuration is stored and needs to be accessible to the other hosts by its fully qualified domain name:<\/p>\n<h2>Installing and configuring Puppet<\/h2>\n<p>On all three hosts:<\/p>\n<pre># echo \"192.168.1.77 griddb1.example.com\" >> \/etc\/hosts<\/pre>\n<p>To install Puppet, we install Puppetlabs Repo and then Puppet.<\/p>\n<pre># rpm -Uvh https:\/\/yum.puppetlabs.com\/puppet5\/puppet5-release-el-7.noarch.rpm<\/pre>\n<p>On the master:<\/p>\n<pre># yum -y install puppetserver<\/pre>\n<p>On the other nodes:<\/p>\n<pre># yum -y install puppet-agent<\/pre>\n<p>Start the puppet master:<\/p>\n<pre># systemctl enable puppetmaster\n# systemctl start puppetmaster<\/pre>\n<p>You will need to either disable the firewall or allow access to port 8140 for the puppet agents to connect to the master:<\/p>\n<pre># firewall-cmd --zone=public --port 8140\/tcp<\/pre>\n<p>Now that puppet is installed we can configure the agents. The hostname of the master needs to be added to \/etc\/puppetlabs\/puppet\/puppet.conf, the snippet looks like the following:<\/p>\n<pre>[main]\nserver=griddb1.example.com<\/pre>\n<p>Now we can generate the certificates for the puppet agents, run the following command on all three nodes:<\/p>\n<pre># puppet agent --test<\/pre>\n<p>Then on the puppet master, you can run the follow commands to sign the certificates:<\/p>\n<pre># puppet cert sign griddb1.example.com\n# puppet cert sign griddb2.example.com\n# puppet cert sign griddb3.example.com<\/pre>\n<p>Now, you can re-run &#8220;puppet agent &#8211;test&#8221; on all the nodes which should have the following output:<\/p>\n<pre>Info: Using configured environment 'production'\nInfo: Retrieving pluginfacts\nInfo: Retrieving plugin\nInfo: Caching catalog for griddb1.example.com\nInfo: Applying configuration version '1503328741'\nNotice: Applied catalog in 0.20 seconds<\/pre>\n<p>Now that the agent is also working, the background process can also be enabled:<\/p>\n<pre># systemctl enable puppet\n# systemctl start puppet\n<\/pre>\n<p>Now puppet is set up on your system and we can set up the GridDB module.<\/p>\n<h2>Setting Up GridDB with Puppet<\/h2>\n<p>First download the GridDB puppet module from <a href=https:\/\/griddb.net\/en\/resources\/griddb-puppet-module.tgz>https:\/\/griddb.net\/en\/resources\/griddb-puppet-module.tgz<\/a> and place its unzipped contents in \/etc\/puppetlabs\/code\/environments\/production\/modules\/.<\/p>\n<p>We will then edit \/etc\/puppetlabs\/code\/environment\/production\/data\/common.yaml to add all of our GridDB settings. If your network supports multicast networking, you can set griddb_mode to &#8220;multi&#8221; or use &#8220;fixed&#8221; as needed on most Cloud services or with containers as follows:<\/p>\n<pre>\ngriddb_clusterName: \"defaultCluster\"\ngriddb_user: \"admin\"\ngriddb_pass: \"admin\"\ngriddb_minNodeNum: \"3\"\ngriddb_replicationNum: \"2\"\ngriddb_concurrency: \"2\"\ngriddb_storeMemoryLimit: \"1024MB\"\ngriddb_mode: \"fixed\"\ngriddb_nodes: \n        - \"192.168.1.74\"\n        - \"192.168.1.75\"\n        - \"192.168.1.77\"\n<\/pre>\n<p>Since common.yaml will contain the GridDB username and password, it is a good idea to lockdown its permissions:<\/p>\n<pre># chown puppet.puppet common.yaml\n# chmod 640 common.yaml<\/pre>\n<p>Since the actual password file is machine generated by gs_passwd, we first create it and then copy it into the modules templates so that it can be propagated to the other nodes:<\/p>\n<pre>\n# su - gsadm\n$ gs_passwd admin\nPassword: \nRetype password:\n$ exit\n# cp \/var\/lib\/gridstore\/conf\/password \/etc\/puppet\/code\/environment\/production\/modules\/griddb\/templates\/password.erb\n<\/pre>\n<p>The last thing to do is either disable the firewall or configure it to allow access on the required ports.<\/p>\n<pre># systemctl stop firewalld<\/pre>\n<p>or <\/p>\n<pre># firewall-cmd --zone=public --port 10001\/tcp\n# firewall-cmd --zone=public --port 10010\/tcp\n# firewall-cmd --zone=public --port 10020\/tcp\n# firewall-cmd --zone=public --port 10040\/tcp<\/pre>\n<p>Now, if you invoke &#8220;puppet agent &#8211;test&#8221; on all nodes simultaneously, Puppet will deploy the configuration files and then start the Gridstore service on all of the nodes. The above instructions will work using the GridDB SE in both local or cloud environments and can also be adapted for use with GridDB CE. The only additional step you will need to use with Community Edition is to disable the &#8220;service&#8221; section from the GridDB puppet manifest and manually run gs_startnode and gs_joincluster. <\/p>\n<p>&nbsp;<\/p>\n<div>\n<h2>More Resources<\/h2>\n<p><img decoding=\"async\" src=\"\/common\/img\/icons\/icon_rpm.svg\" alt=\"RPM\" style=\"height:20px\"\/>The GridDB Community Edition (v3.0.1) can be downloaded from <a href=\"https:\/\/github.com\/griddb\/griddb_nosql\/releases\/download\/v3.0.1\/griddb_nosql-3.0.1-1.linux.x86_64.rpm\">GitHub<\/a>.<\/p>\n<\/div>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Configuring many nodes can be very challenging with lots of manual work &#8212; even just one small typo on one node can lead to hours of debugging. Puppet and other configuration management systems solve this by deploying configurations to multiple nodes thus ensuring that the values are consistent while also helping to prevent human error. [&hellip;]<\/p>\n","protected":false},"author":71,"featured_media":22046,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[121],"tags":[],"class_list":["post-46557","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Configuring GridDB with Puppet | GridDB: Open Source Time Series Database for IoT<\/title>\n<meta name=\"description\" content=\"Configuring many nodes can be very challenging with lots of manual work -- even just one small typo on one node can lead to hours of debugging. Puppet and\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.griddb.net\/en\/blog\/configuring-griddb-puppet\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Configuring GridDB with Puppet | GridDB: Open Source Time Series Database for IoT\" \/>\n<meta property=\"og:description\" content=\"Configuring many nodes can be very challenging with lots of manual work -- even just one small typo on one node can lead to hours of debugging. Puppet and\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.griddb.net\/en\/blog\/configuring-griddb-puppet\/\" \/>\n<meta property=\"og:site_name\" content=\"GridDB: Open Source Time Series Database for IoT\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/griddbcommunity\/\" \/>\n<meta property=\"article:published_time\" content=\"2017-08-22T07:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-11-13T20:54:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/griddb.net\/wp-content\/uploads\/2017\/08\/blog_title_15.png\" \/>\n\t<meta property=\"og:image:width\" content=\"870\" \/>\n\t<meta property=\"og:image:height\" content=\"490\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Owen\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@GridDBCommunity\" \/>\n<meta name=\"twitter:site\" content=\"@GridDBCommunity\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Owen\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.griddb.net\/en\/blog\/configuring-griddb-puppet\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.griddb.net\/en\/blog\/configuring-griddb-puppet\/\"},\"author\":{\"name\":\"Owen\",\"@id\":\"https:\/\/griddb.net\/en\/#\/schema\/person\/0f2f6d4b593adde8c43cf3ea5c794c66\"},\"headline\":\"Configuring GridDB with Puppet\",\"datePublished\":\"2017-08-22T07:00:00+00:00\",\"dateModified\":\"2025-11-13T20:54:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.griddb.net\/en\/blog\/configuring-griddb-puppet\/\"},\"wordCount\":632,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/griddb.net\/en\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.griddb.net\/en\/blog\/configuring-griddb-puppet\/#primaryimage\"},\"thumbnailUrl\":\"\/wp-content\/uploads\/2017\/08\/blog_title_15.png\",\"articleSection\":[\"Blog\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.griddb.net\/en\/blog\/configuring-griddb-puppet\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.griddb.net\/en\/blog\/configuring-griddb-puppet\/\",\"url\":\"https:\/\/www.griddb.net\/en\/blog\/configuring-griddb-puppet\/\",\"name\":\"Configuring GridDB with Puppet | GridDB: Open Source Time Series Database for IoT\",\"isPartOf\":{\"@id\":\"https:\/\/griddb.net\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.griddb.net\/en\/blog\/configuring-griddb-puppet\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.griddb.net\/en\/blog\/configuring-griddb-puppet\/#primaryimage\"},\"thumbnailUrl\":\"\/wp-content\/uploads\/2017\/08\/blog_title_15.png\",\"datePublished\":\"2017-08-22T07:00:00+00:00\",\"dateModified\":\"2025-11-13T20:54:27+00:00\",\"description\":\"Configuring many nodes can be very challenging with lots of manual work -- even just one small typo on one node can lead to hours of debugging. Puppet and\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.griddb.net\/en\/blog\/configuring-griddb-puppet\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.griddb.net\/en\/blog\/configuring-griddb-puppet\/#primaryimage\",\"url\":\"\/wp-content\/uploads\/2017\/08\/blog_title_15.png\",\"contentUrl\":\"\/wp-content\/uploads\/2017\/08\/blog_title_15.png\",\"width\":870,\"height\":490},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/griddb.net\/en\/#website\",\"url\":\"https:\/\/griddb.net\/en\/\",\"name\":\"GridDB: Open Source Time Series Database for IoT\",\"description\":\"GridDB is an open source time-series database with the performance of NoSQL and convenience of SQL\",\"publisher\":{\"@id\":\"https:\/\/griddb.net\/en\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/griddb.net\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/griddb.net\/en\/#organization\",\"name\":\"Fixstars\",\"url\":\"https:\/\/griddb.net\/en\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/griddb.net\/en\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png\",\"contentUrl\":\"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png\",\"width\":200,\"height\":83,\"caption\":\"Fixstars\"},\"image\":{\"@id\":\"https:\/\/griddb.net\/en\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/griddbcommunity\/\",\"https:\/\/x.com\/GridDBCommunity\",\"https:\/\/www.linkedin.com\/company\/griddb-by-toshiba\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/griddb.net\/en\/#\/schema\/person\/0f2f6d4b593adde8c43cf3ea5c794c66\",\"name\":\"Owen\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/griddb.net\/en\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/47438a5c81215c7a9043be1b427e0bbd8dc0f77bd536f147f8495575149e4325?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/47438a5c81215c7a9043be1b427e0bbd8dc0f77bd536f147f8495575149e4325?s=96&d=mm&r=g\",\"caption\":\"Owen\"},\"url\":\"https:\/\/griddb.net\/en\/author\/owen\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Configuring GridDB with Puppet | GridDB: Open Source Time Series Database for IoT","description":"Configuring many nodes can be very challenging with lots of manual work -- even just one small typo on one node can lead to hours of debugging. Puppet and","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:\/\/www.griddb.net\/en\/blog\/configuring-griddb-puppet\/","og_locale":"en_US","og_type":"article","og_title":"Configuring GridDB with Puppet | GridDB: Open Source Time Series Database for IoT","og_description":"Configuring many nodes can be very challenging with lots of manual work -- even just one small typo on one node can lead to hours of debugging. Puppet and","og_url":"https:\/\/www.griddb.net\/en\/blog\/configuring-griddb-puppet\/","og_site_name":"GridDB: Open Source Time Series Database for IoT","article_publisher":"https:\/\/www.facebook.com\/griddbcommunity\/","article_published_time":"2017-08-22T07:00:00+00:00","article_modified_time":"2025-11-13T20:54:27+00:00","og_image":[{"width":870,"height":490,"url":"https:\/\/griddb.net\/wp-content\/uploads\/2017\/08\/blog_title_15.png","type":"image\/png"}],"author":"Owen","twitter_card":"summary_large_image","twitter_creator":"@GridDBCommunity","twitter_site":"@GridDBCommunity","twitter_misc":{"Written by":"Owen","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.griddb.net\/en\/blog\/configuring-griddb-puppet\/#article","isPartOf":{"@id":"https:\/\/www.griddb.net\/en\/blog\/configuring-griddb-puppet\/"},"author":{"name":"Owen","@id":"https:\/\/griddb.net\/en\/#\/schema\/person\/0f2f6d4b593adde8c43cf3ea5c794c66"},"headline":"Configuring GridDB with Puppet","datePublished":"2017-08-22T07:00:00+00:00","dateModified":"2025-11-13T20:54:27+00:00","mainEntityOfPage":{"@id":"https:\/\/www.griddb.net\/en\/blog\/configuring-griddb-puppet\/"},"wordCount":632,"commentCount":0,"publisher":{"@id":"https:\/\/griddb.net\/en\/#organization"},"image":{"@id":"https:\/\/www.griddb.net\/en\/blog\/configuring-griddb-puppet\/#primaryimage"},"thumbnailUrl":"\/wp-content\/uploads\/2017\/08\/blog_title_15.png","articleSection":["Blog"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.griddb.net\/en\/blog\/configuring-griddb-puppet\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.griddb.net\/en\/blog\/configuring-griddb-puppet\/","url":"https:\/\/www.griddb.net\/en\/blog\/configuring-griddb-puppet\/","name":"Configuring GridDB with Puppet | GridDB: Open Source Time Series Database for IoT","isPartOf":{"@id":"https:\/\/griddb.net\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.griddb.net\/en\/blog\/configuring-griddb-puppet\/#primaryimage"},"image":{"@id":"https:\/\/www.griddb.net\/en\/blog\/configuring-griddb-puppet\/#primaryimage"},"thumbnailUrl":"\/wp-content\/uploads\/2017\/08\/blog_title_15.png","datePublished":"2017-08-22T07:00:00+00:00","dateModified":"2025-11-13T20:54:27+00:00","description":"Configuring many nodes can be very challenging with lots of manual work -- even just one small typo on one node can lead to hours of debugging. Puppet and","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.griddb.net\/en\/blog\/configuring-griddb-puppet\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.griddb.net\/en\/blog\/configuring-griddb-puppet\/#primaryimage","url":"\/wp-content\/uploads\/2017\/08\/blog_title_15.png","contentUrl":"\/wp-content\/uploads\/2017\/08\/blog_title_15.png","width":870,"height":490},{"@type":"WebSite","@id":"https:\/\/griddb.net\/en\/#website","url":"https:\/\/griddb.net\/en\/","name":"GridDB: Open Source Time Series Database for IoT","description":"GridDB is an open source time-series database with the performance of NoSQL and convenience of SQL","publisher":{"@id":"https:\/\/griddb.net\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/griddb.net\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/griddb.net\/en\/#organization","name":"Fixstars","url":"https:\/\/griddb.net\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/griddb.net\/en\/#\/schema\/logo\/image\/","url":"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png","contentUrl":"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png","width":200,"height":83,"caption":"Fixstars"},"image":{"@id":"https:\/\/griddb.net\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/griddbcommunity\/","https:\/\/x.com\/GridDBCommunity","https:\/\/www.linkedin.com\/company\/griddb-by-toshiba"]},{"@type":"Person","@id":"https:\/\/griddb.net\/en\/#\/schema\/person\/0f2f6d4b593adde8c43cf3ea5c794c66","name":"Owen","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/griddb.net\/en\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/47438a5c81215c7a9043be1b427e0bbd8dc0f77bd536f147f8495575149e4325?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/47438a5c81215c7a9043be1b427e0bbd8dc0f77bd536f147f8495575149e4325?s=96&d=mm&r=g","caption":"Owen"},"url":"https:\/\/griddb.net\/en\/author\/owen\/"}]}},"_links":{"self":[{"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/posts\/46557","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/users\/71"}],"replies":[{"embeddable":true,"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/comments?post=46557"}],"version-history":[{"count":1,"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/posts\/46557\/revisions"}],"predecessor-version":[{"id":51249,"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/posts\/46557\/revisions\/51249"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/media\/22046"}],"wp:attachment":[{"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/media?parent=46557"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/categories?post=46557"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/griddb.net\/en\/wp-json\/wp\/v2\/tags?post=46557"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}