{"id":34974,"date":"2024-09-12T10:47:45","date_gmt":"2024-09-12T03:47:45","guid":{"rendered":"http:\/\/jupitek.maudemo.vip\/index.php\/2024\/09\/12\/create-a-salt-execution-module\/"},"modified":"2024-09-12T10:47:45","modified_gmt":"2024-09-12T03:47:45","slug":"create-a-salt-execution-module","status":"publish","type":"post","link":"https:\/\/jupitek.maudemo.vip\/index.php\/2024\/09\/12\/create-a-salt-execution-module\/","title":{"rendered":"T\u1ea1o m\u1ed9t Salt Execution Module"},"content":{"rendered":"<p><em>M\u00f4-\u0111un th\u1ef1c thi<\/em>&nbsp;Salt&nbsp;l\u00e0 m\u00f4-\u0111un Python ch\u1ea1y tr\u00ean Salt minion. N\u00f3 th\u1ef1c hi\u1ec7n c\u00e1c t\u00e1c v\u1ee5 v\u00e0 tr\u1ea3 v\u1ec1 d\u1eef li\u1ec7u cho Salt master. Trong h\u01b0\u1edbng d\u1eabn n\u00e0y, b\u1ea1n s\u1ebd t\u1ea1o v\u00e0 c\u00e0i \u0111\u1eb7t m\u00f4-\u0111un th\u1ef1c thi s\u1ebd g\u1ecdi API c\u1ee7a&nbsp;<a href=\"https:\/\/forecast-v3.weather.gov\/documentation\" target=\"_blank\" rel=\"noreferrer noopener\">US National Weather Service<\/a>&nbsp;v\u00e0 tr\u1ea3 v\u1ec1 nhi\u1ec7t \u0111\u1ed9 hi\u1ec7n t\u1ea1i t\u1ea1i m\u1ed9t tr\u1ea1m th\u1eddi ti\u1ebft \u0111\u01b0\u1ee3c ch\u1ec9 \u0111\u1ecbnh. V\u00ed d\u1ee5 n\u00e0y c\u00f3 th\u1ec3 d\u1ec5 d\u00e0ng \u0111\u01b0\u1ee3c \u0111i\u1ec1u ch\u1ec9nh \u0111\u1ec3 truy c\u1eadp b\u1ea5t k\u1ef3 API n\u00e0o.<\/p>\n<h2 id=\"before-you-begin\">Tr\u01b0\u1edbc khi b\u1ea1n b\u1eaft \u0111\u1ea7u<a href=\"https:\/\/www.linode.com\/docs\/guides\/create-a-salt-execution-module\/#before-you-begin\"><\/a><\/h2>\n<p>N\u1ebfu b\u1ea1n ch\u01b0a l\u00e0m, h\u00e3y thi\u1ebft l\u1eadp m\u1ed9t Salt master v\u00e0 \u00edt nh\u1ea5t m\u1ed9t Salt minion. B\u1ea1n c\u00f3 th\u1ec3 l\u00e0m theo m\u1ed9t v\u00e0i b\u01b0\u1edbc \u0111\u1ea7u ti\u00ean trong h\u01b0\u1edbng d\u1eabn&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/getting-started-with-salt-basic-installation-and-setup\/\">B\u1eaft \u0111\u1ea7u v\u1edbi Salt &#8211; C\u00e0i \u0111\u1eb7t v\u00e0 Thi\u1ebft l\u1eadp C\u01a1 b\u1ea3n<\/a>&nbsp;c\u1ee7a ch\u00fang t\u00f4i .<\/p>\n<p class=\"has-background\" style=\"background-color:#74f78c33\">Ghi ch\u00fa: C\u00e1c b\u01b0\u1edbc trong h\u01b0\u1edbng d\u1eabn n\u00e0y y\u00eau c\u1ea7u quy\u1ec1n root. H\u00e3y \u0111\u1ea3m b\u1ea3o ch\u1ea1y c\u00e1c b\u01b0\u1edbc b\u00ean d\u01b0\u1edbi v\u1edbi ti\u1ec1n&nbsp;<code>sudo<\/code>t\u1ed1. \u0110\u1ec3 bi\u1ebft th\u00eam th\u00f4ng tin v\u1ec1 quy\u1ec1n, h\u00e3y xem h\u01b0\u1edbng d\u1eabn&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/linux-users-and-groups\/\">Ng\u01b0\u1eddi d\u00f9ng v\u00e0 Nh\u00f3m<\/a>&nbsp;c\u1ee7a ch\u00fang t\u00f4i .<\/p>\n<h2 id=\"prepare-salt\">Chu\u1ea9n b\u1ecb mu\u1ed1i<a href=\"https:\/\/www.linode.com\/docs\/guides\/create-a-salt-execution-module\/#prepare-salt\"><\/a><\/h2>\n<p>C\u00e1c t\u1ec7p \u0111\u01b0\u1ee3c t\u1ea1o trong c\u00e1c b\u01b0\u1edbc sau s\u1ebd n\u1eb1m trong th\u01b0&nbsp;<code>\/srv\/salt<\/code>m\u1ee5c. N\u1ebfu b\u1ea1n \u0111\u00e3 thay \u0111\u1ed5i&nbsp;<a href=\"https:\/\/docs.saltproject.io\/en\/latest\/ref\/configuration\/master.html#std:conf_master-file_roots\" target=\"_blank\" rel=\"noreferrer noopener\"><code>file_roots<\/code><\/a>c\u1ea5u h\u00ecnh m\u1eb7c \u0111\u1ecbnh c\u1ee7a Salt, h\u00e3y s\u1eed d\u1ee5ng v\u1ecb tr\u00ed th\u01b0 m\u1ee5c \u0111\u00f3.<\/p>\n<p>1.B\u1eaft \u0111\u1ea7u b\u1eb1ng c\u00e1ch t\u1ea1o th\u01b0&nbsp;<code>\/srv\/salt<\/code>m\u1ee5c n\u1ebfu n\u00f3 ch\u01b0a t\u1ed3n t\u1ea1i. \u0110\u00e2y l\u00e0 n\u01a1i b\u1ea1n s\u1ebd \u0111\u1eb7t t\u1ec7p top v\u00e0 t\u1ec7p Salt state c\u1ee7a m\u00ecnh:<\/p>\n<pre class=\"wp-block-code\"><code>mkdir \/srv\/salt\n<\/code><\/pre>\n<p>2.T\u1ea1o m\u1ed9t t\u1ec7p tr\u00ean c\u00f9ng trong&nbsp;<code>\/srv\/salt<\/code>\u0111\u00f3 s\u1ebd l\u00e0 \u0111i\u1ec3m v\u00e0o c\u1ee7a Salt cho c\u1ea5u h\u00ecnh Salt c\u1ee7a ch\u00fang ta:<\/p>\n<pre class=\"wp-block-code\"><code>base:\n  '*':\n    - weather<\/code><\/pre>\n<p>3.T\u1ea1o m\u1ed9t t\u1ec7p tr\u1ea1ng th\u00e1i c\u00f3 t\u00ean&nbsp;<code>weather.sls<\/code>v\u00e0 h\u01b0\u1edbng d\u1eabn Salt \u0111\u1ea3m b\u1ea3o c\u00e1c minion c\u1ee7a ch\u00fang ta \u0111\u00e3 c\u00e0i \u0111\u1eb7t PIP c\u0169ng nh\u01b0 th\u01b0 vi\u1ec7n Python c\u1ea7n thi\u1ebft.<\/p>\n<pre class=\"wp-block-code\"><code>python-pip:\n  pkg.installed\n\nrequests:\n  pip.installed:\n    - require:\n      - pkg: python-pip<\/code><\/pre>\n<p>4.\u00c1p d\u1ee5ng nh\u1eefng thay \u0111\u1ed5i tr\u1ea1ng th\u00e1i sau:<\/p>\n<pre class=\"wp-block-code\"><code><code>salt '*' state.apply<\/code><\/code><\/pre>\n<p>5.Cu\u1ed1i c\u00f9ng, t\u1ea1o th\u01b0&nbsp;<code>\/srv\/salt\/_modules<\/code>m\u1ee5c ch\u1ee9a m\u00f4-\u0111un th\u1ef1c thi c\u1ee7a ch\u00fang ta:<\/p>\n<pre class=\"wp-block-code\"><code><code>mkdir \/srv\/salt\/_modules<\/code><\/code><\/pre>\n<h2 id=\"create-the-execution-module\">T\u1ea1o M\u00f4-\u0111un Th\u1ef1c thi<a href=\"https:\/\/www.linode.com\/docs\/guides\/create-a-salt-execution-module\/#create-the-execution-module\"><\/a><\/h2>\n<p>1.T\u1ea1o m\u1ed9t t\u1ec7p c\u00f3 t\u00ean&nbsp;<code>weather.py<\/code>trong&nbsp;<code>\/srv\/salt\/_modules<\/code>th\u01b0 m\u1ee5c v\u00e0 th\u00eam c\u00e1c d\u00f2ng sau \u0111\u1ec3 thi\u1ebft l\u1eadp ghi nh\u1eadt k\u00fd Salt v\u00e0 nh\u1eadp m\u00f4-\u0111un y\u00eau c\u1ea7u.<\/p>\n<pre class=\"wp-block-code\"><code>import logging\ntry:\n    import requests\n    HAS_REQUESTS = True\nexcept ImportError:\n    HAS_REQUESTS = False\n\nlog = logging.getLogger(__name__)\n\n. . .<\/code><\/pre>\n<p>2.Th\u00eam&nbsp;<code>__virtualname__<\/code>bi\u1ebfn v\u00e0&nbsp;<code>__virtual__<\/code>h\u00e0m.<\/p>\n<pre class=\"wp-block-code\"><code>. . .\n\n__virtualname__ = 'weather'\n\ndef __virtual__():\n    '''\n    Only load weather if requests is available\n    '''\n    if HAS_REQUESTS:\n        return __virtualname__\n    else:\n        return False, 'The weather module cannot be loaded: requests package unavailable.'\n\n. . .<\/code><\/pre>\n<p>H\u00e0m n\u00e0y&nbsp;<code>__virtual__<\/code>tr\u1ea3 v\u1ec1 t\u00ean \u1ea3o c\u1ee7a m\u00f4-\u0111un v\u00e0 t\u1ea3i m\u00f4-\u0111un ho\u1eb7c tr\u1ea3 v\u1ec1&nbsp;<code>False<\/code>chu\u1ed7i l\u1ed7i v\u00e0 m\u00f4-\u0111un kh\u00f4ng \u0111\u01b0\u1ee3c t\u1ea3i. \u0110i\u1ec1u&nbsp;<code>if HAS_REQUESTS<\/code>ki\u1ec7n \u0111\u01b0\u1ee3c li\u00ean k\u1ebft v\u1edbi kh\u1ed1i try\/except \u0111\u01b0\u1ee3c t\u1ea1o \u1edf b\u01b0\u1edbc tr\u01b0\u1edbc th\u00f4ng qua vi\u1ec7c s\u1eed d\u1ee5ng bi\u1ebfn&nbsp;<code>HAS_REQUESTS<\/code>.<\/p>\n<p>3.Th\u00eam&nbsp;<code>get()<\/code>h\u00e0m c\u00f4ng khai v\u00e0&nbsp;<code>_make_request()<\/code>h\u00e0m ri\u00eang t\u01b0:<\/p>\n<pre class=\"wp-block-code\"><code>. . .\n\ndef get(signs=None):\n    '''\n    Gets the Current Weather\n\n    CLI Example::\n\n        salt minion weather.get KPHL\n\n    This module also accepts multiple values in a comma separated list::\n\n        salt minion weather.get KPHL,KACY\n    '''\n    log.debug(signs)\n    return_value = {}\n    signs = signs.split(',')\n    for sign in signs:\n        return_value&#91;sign] = _make_request(sign)\n    return return_value\n\ndef _make_request(sign):\n    '''\n    The function that makes the request for weather data from the National Weather Service.\n    '''\n    request = requests.get('https:\/\/api.weather.gov\/stations\/{}\/observations\/current'.format(sign))\n    conditions = {\n        \"description:\": request.json()&#91;\"properties\"]&#91;\"textDescription\"],\n        \"temperature\": round(request.json()&#91;\"properties\"]&#91;\"temperature\"]&#91;\"value\"], 1)\n    }\n    return conditions<\/code><\/pre>\n<p>C\u00f3 hai h\u00e0m trong b\u01b0\u1edbc n\u00e0y.&nbsp;<code>get()<\/code>H\u00e0m n\u00e0y ch\u1ea5p nh\u1eadn m\u1ed9t ho\u1eb7c nhi\u1ec1u t\u00edn hi\u1ec7u g\u1ecdi tr\u1ea1m th\u1eddi ti\u1ebft d\u01b0\u1edbi d\u1ea1ng danh s\u00e1ch ph\u00e2n c\u00e1ch b\u1eb1ng d\u1ea5u ph\u1ea9y. N\u00f3 g\u1ecdi&nbsp;<code>_make_request()<\/code>\u0111\u1ec3 th\u1ef1c hi\u1ec7n y\u00eau c\u1ea7u HTTP v\u00e0 tr\u1ea3 v\u1ec1 m\u00f4 t\u1ea3 v\u0103n b\u1ea3n v\u1ec1 th\u1eddi ti\u1ebft hi\u1ec7n t\u1ea1i v\u00e0 nhi\u1ec7t \u0111\u1ed9.<\/p>\n<p>\u0110i\u1ec1u quan tr\u1ecdng c\u1ea7n l\u01b0u \u00fd l\u00e0 khi th\u00eam d\u1ea5u g\u1ea1ch d\u01b0\u1edbi v\u00e0o \u0111\u1ea7u h\u00e0m,&nbsp;<code>_make_request()<\/code>n\u00f3 s\u1ebd tr\u1edf th\u00e0nh h\u00e0m ri\u00eang t\u01b0, ngh\u0129a l\u00e0 kh\u00f4ng th\u1ec3 truy c\u1eadp tr\u1ef1c ti\u1ebfp th\u00f4ng qua d\u00f2ng l\u1ec7nh Salt ho\u1eb7c t\u1ec7p tr\u1ea1ng th\u00e1i.<\/p>\n<p>T\u1ec7p tin \u0111\u1ea7y \u0111\u1ee7 tr\u00f4ng nh\u01b0 th\u1ebf n\u00e0y:<\/p>\n<pre class=\"wp-block-code\"><code>import logging\ntry:\n    import requests\n    HAS_REQUESTS = True\nexcept ImportError:\n    HAS_REQUESTS = False\n\nlog = logging.getLogger(__name__)\n\n__virtual_name__ = 'weather'\n\ndef __virtual__():\n    '''\n    Only load weather if requests is available\n    '''\n    if HAS_REQUESTS:\n        return __virtual_name__\n    else:\n        return False, 'The weather module cannot be loaded: requests package unavailable.'\n\n\ndef get(signs=None):\n    '''\n    Gets the Current Weather\n\n    CLI Example::\n\n        salt minion weather.get KPHL\n\n    This module also accepts multiple values in a comma seperated list::\n\n        salt minion weather.get KPHL,KACY\n    '''\n    log.debug(signs)\n    return_value = {}\n    signs = signs.split(',')\n    for sign in signs:\n        return_value&#91;sign] = _make_request(sign)\n    return return_value\n\ndef _make_request(sign):\n    '''\n    The function that makes the request for weather data from the National Weather Service.\n    '''\n    request = requests.get('https:\/\/api.weather.gov\/stations\/{}\/observations\/current'.format(sign))\n    conditions = {\n        \"description:\": request.json()&#91;\"properties\"]&#91;\"textDescription\"],\n        \"temperature\": round(request.json()&#91;\"properties\"]&#91;\"temperature\"]&#91;\"value\"], 1)\n    }\n    return conditions<\/code><\/pre>\n<h2 id=\"run-the-execution-module\">Ch\u1ea1y M\u00f4-\u0111un Th\u1ef1c thi<a href=\"https:\/\/www.linode.com\/docs\/guides\/create-a-salt-execution-module\/#run-the-execution-module\"><\/a><\/h2>\n<p>1.\u0110\u1ec3 ch\u1ea1y m\u00f4-\u0111un th\u1ef1c thi, tr\u01b0\u1edbc ti\u00ean b\u1ea1n c\u1ea7n \u0111\u1ed3ng b\u1ed9 h\u00f3a n\u00f3 v\u1edbi c\u00e1c minion c\u1ee7a m\u00ecnh. \u0110\u1ec3 th\u1ef1c hi\u1ec7n vi\u1ec7c n\u00e0y, b\u1ea1n c\u00f3 th\u1ec3 g\u1ecdi highstate v\u1edbi&nbsp;<code>state.apply<\/code>, c\u0169ng s\u1ebd c\u1ed1 g\u1eafng \u00e1p d\u1ee5ng c\u00e1c thay \u0111\u1ed5i tr\u1ea1ng th\u00e1i m\u00e0 b\u1ea1n \u0111\u00e3 ch\u1ec9 \u0111\u1ecbnh tr\u01b0\u1edbc \u0111\u00f3 trong&nbsp;<code>weather.sls<\/code>t\u1ec7p tr\u1ea1ng th\u00e1i. V\u00ec&nbsp;<code>weather.sls<\/code>tr\u1ea1ng th\u00e1i \u0111\u00e3 \u0111\u01b0\u1ee3c \u00e1p d\u1ee5ng trong ph\u1ea7n Chu\u1ea9n&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/create-a-salt-execution-module\/#preparing-salt\">b\u1ecb mu\u1ed1i<\/a>&nbsp;, h\u00e3y s\u1eed d\u1ee5ng&nbsp;<code>saltutil.sync_modules<\/code>h\u00e0m:<\/p>\n<pre class=\"wp-block-code\"><code><code>salt '*' saltutil.sync_modules<\/code><\/code><\/pre>\n<p>2.Ch\u1ea1y m\u00f4-\u0111un th\u1ef1c thi tr\u00ean m\u00e1y ch\u1ee7 Salt c\u1ee7a b\u1ea1n:<\/p>\n<pre class=\"wp-block-code\"><code><code>salt '*' weather.get KPHL<\/code><\/code><\/pre>\n<p>B\u1ea1n s\u1ebd th\u1ea5y k\u1ebft qu\u1ea3 nh\u01b0 sau:<\/p>\n<pre class=\"wp-block-code\"><code>salt-minion:\n----------\nKPHL:\n    ----------\n    description::\n        Cloudy\n    temperature:\n        17.2<\/code><\/pre>\n<p>3.Ngo\u00e0i ra, b\u1ea1n c\u00f3 th\u1ec3 ch\u1ea1y m\u00f4-\u0111un th\u1ef1c thi Salt c\u1ee5c b\u1ed9 tr\u00ean minion Salt c\u1ee7a m\u00ecnh b\u1eb1ng c\u00e1ch nh\u1eadp l\u1ec7nh sau:<\/p>\n<pre class=\"wp-block-code\"><code>salt-call weather.get KVAY,KACY<\/code><\/pre>\n<p>B\u1ea1n s\u1ebd nh\u1eadn \u0111\u01b0\u1ee3c k\u1ebft qu\u1ea3 nh\u01b0 sau:<\/p>\n<pre class=\"wp-block-code\"><code>local:\n    ----------\n    KACY:\n        ----------\n        description::\n            Cloudy\n        temperature:\n            18.9\n    KVAY:\n        ----------\n        description::\n            Cloudy\n        temperature:\n            16.7<\/code><\/pre>\n<p>B\u00e2y gi\u1edd b\u1ea1n \u0111\u00e3 t\u1ea1o v\u00e0 c\u00e0i \u0111\u1eb7t th\u00e0nh c\u00f4ng m\u00f4-\u0111un th\u1ef1c thi Salt.<\/p>\n<h2 id=\"more-information\">Th\u00f4ng tin th\u00eam<\/h2>\n<p>B\u1ea1n c\u00f3 th\u1ec3 mu\u1ed1n tham kh\u1ea3o c\u00e1c ngu\u1ed3n sau \u0111\u1ec3 bi\u1ebft th\u00eam th\u00f4ng tin v\u1ec1 ch\u1ee7 \u0111\u1ec1 n\u00e0y. M\u1eb7c d\u00f9 ch\u00fang t\u00f4i cung c\u1ea5p v\u1edbi hy v\u1ecdng r\u1eb1ng ch\u00fang s\u1ebd h\u1eefu \u00edch, nh\u01b0ng xin l\u01b0u \u00fd r\u1eb1ng ch\u00fang t\u00f4i kh\u00f4ng th\u1ec3 \u0111\u1ea3m b\u1ea3o t\u00ednh ch\u00ednh x\u00e1c ho\u1eb7c t\u00ednh k\u1ecbp th\u1eddi c\u1ee7a c\u00e1c t\u00e0i li\u1ec7u \u0111\u01b0\u1ee3c l\u01b0u tr\u1eef b\u00ean ngo\u00e0i.<\/p>\n<ul>\n<li><a href=\"https:\/\/docs.saltproject.io\/en\/latest\/ref\/modules\/\" target=\"_blank\" rel=\"noreferrer noopener\">Vi\u1ebft c\u00e1c m\u00f4-\u0111un th\u1ef1c thi<\/a><\/li>\n<li><a href=\"https:\/\/docs.saltproject.io\/en\/latest\/ref\/states\/all\/salt.states.module.html#execution-of-salt-modules-from-within-states\" target=\"_blank\" rel=\"noreferrer noopener\">Th\u1ef1c hi\u1ec7n c\u00e1c m\u00f4-\u0111un mu\u1ed1i t\u1eeb b\u00ean trong c\u00e1c tr\u1ea1ng th\u00e1i<\/a><\/li>\n<\/ul>\n<p>Ngu\u1ed3n: https:\/\/www.linode.com\/docs\/guides\/create-a-salt-execution-module\/<\/p>\n","protected":false},"excerpt":{"rendered":"<p>M\u00f4-\u0111un th\u1ef1c thi&nbsp;Salt&nbsp;l\u00e0 m\u00f4-\u0111un Python ch\u1ea1y tr\u00ean Salt minion. N\u00f3 th\u1ef1c hi\u1ec7n c\u00e1c t\u00e1c v\u1ee5 v\u00e0 tr\u1ea3 v\u1ec1 d\u1eef li\u1ec7u cho Salt master. Trong h\u01b0\u1edbng d\u1eabn n\u00e0y, b\u1ea1n s\u1ebd t\u1ea1o v\u00e0 c\u00e0i \u0111\u1eb7t m\u00f4-\u0111un th\u1ef1c thi s\u1ebd g\u1ecdi API c\u1ee7a&nbsp;US National Weather Service&nbsp;v\u00e0 tr\u1ea3 v\u1ec1 nhi\u1ec7t \u0111\u1ed9 hi\u1ec7n t\u1ea1i t\u1ea1i m\u1ed9t tr\u1ea1m th\u1eddi ti\u1ebft \u0111\u01b0\u1ee3c<\/p>\n","protected":false},"author":1,"featured_media":36006,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[124],"tags":[],"class_list":["post-34974","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-salt"],"_links":{"self":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/34974","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/comments?post=34974"}],"version-history":[{"count":0,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/34974\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/media\/36006"}],"wp:attachment":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/media?parent=34974"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/categories?post=34974"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/tags?post=34974"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}