{"id":4561,"date":"2018-02-06T03:50:46","date_gmt":"2018-02-06T11:50:46","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=4561"},"modified":"2023-06-13T23:44:06","modified_gmt":"2023-06-14T06:44:06","slug":"couchbase-and-ansible","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-and-ansible\/","title":{"rendered":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ubc0f \uc564\uc11c\ube14"},"content":{"rendered":"<p><em>\uc544\ub974\uce74\ub514\uc6b0\uc2a4 \ubcf4\ub8e8\ud0a4\uc758 \uc5c5\ubb34\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/em><strong>\u00a0<\/strong><em>a<\/em><strong>\u00a0<\/strong><em>Amadeus\uc758 \uc0ac\uc774\ud2b8 \uc548\uc815\uc131 \uc5d4\uc9c0\ub2c8\uc5b4\ub85c NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ubc0f \uc790\ub3d9\ud654\uc5d0 \uc911\uc810\uc744 \ub450\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc77c\uc0c1\uc801\uc778 \uc5c5\ubb34\uc5d0\uc11c Couchbase, MongoDB, Oracle, Python, Ansible\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \uc790\uce6d \ube45\ub370\uc774\ud130 \uc560\ud638\uac00\uc774\uba70 \ub370\uc774\ud130 \uc800\uc7a5\uc18c \uae30\uc220, \ubd84\uc0b0 \uc2dc\uc2a4\ud15c, \ubd84\uc11d \ubc0f \uc790\ub3d9\ud654\uc5d0 \uad00\uc2ec\uc774 \ub9ce\uc2b5\ub2c8\ub2e4. \ubbf8\uad6d\uacfc \uc720\ub7fd\uc758 \uc5ec\ub7ec \ucee8\ud37c\ub7f0\uc2a4\uc640 \uc0ac\uc6a9\uc790 \uadf8\ub8f9\uc5d0\uc11c \uc5f0\uc0ac\ub85c \ud65c\ub3d9\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \ud2b8\uc704\ud130\uc5d0\uc11c \uadf8\ub97c \ucc3e\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\u00a0<\/em><a href=\"https:\/\/twitter.com\/@_Aras_B\"><em>@_Aras_B<\/em><\/a><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-4560\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/02\/pasted-image-0-2-201x300.png\" alt=\"Arkadiusz Borucki\" width=\"201\" height=\"300\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/02\/pasted-image-0-2-201x300.png 201w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/02\/pasted-image-0-2-300x447.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/02\/pasted-image-0-2-13x20.png 13w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/02\/pasted-image-0-2.png 319w\" sizes=\"auto, (max-width: 201px) 100vw, 201px\" \/><\/p>\n<p><strong>{{ \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 - \uccab \ubc88\uc9f8 \uc564\uc11c\ube14 \uc790\ub3d9\ud654 \uc791\uc131\ud558\uae30 <\/strong><strong>}}<\/strong><strong>\u00a0<\/strong><strong>\u00a0<\/strong><\/p>\n<p>Couchbase\ub294 \ube60\ub974\uace0 \ud655\uc7a5 \uac00\ub2a5\ud558\uba70 \uc790\ub3d9\ud654\ud558\uae30 \uc26c\uc6b4 \ucd5c\uc2e0 \uae30\uc220\uc785\ub2c8\ub2e4. \uc218\ucc9c \uac1c\uc758 \ub178\ub4dc\uac00 \uc788\ub294 Couchbase \ud31c\uc744 \uc6b4\uc601\ud560 \ub54c \ubaa8\ub4e0 \uba38\uc2e0\uc5d0 \ub85c\uadf8\uc778\ud558\uc5ec \uc218\ub3d9\uc73c\ub85c \uc124\uc815\uc744 \uc801\uc6a9\ud558\uace0 \uc2f6\uc9c0\ub294 \uc54a\uc744 \uac83\uc785\ub2c8\ub2e4. \uc774\ub294 \uc5c4\uccad\ub09c \uc624\ubc84\ud5e4\ub4dc, \ubd88\uc77c\uce58, \uc778\uc801 \uc624\ub958\ub97c \ucd08\ub798\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc88b\uc740 \ud574\uacb0\ucc45\uc740 <a href=\"https:\/\/www.ansible.com\/\">Ansible<\/a> \ud31c \uc790\ub3d9\ud654 \ubc0f \uc624\ucf00\uc2a4\ud2b8\ub808\uc774\uc158\uc744 \uc704\ud574. \ub2e4\uc74c\uc744 \uc2e4\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <strong>\uc6b4\uc601 \uccb4\uc81c <\/strong>\uba85\ub839\uc744 \uc2e4\ud589\ud558\uc5ec <strong>\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 API<\/strong>\u00a0\ud638\ucd9c\uc744 \uc0ac\uc6a9\ud558\uac70\ub098<strong>\u00a0\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 CLI<\/strong>\u00a0\uba85\ub839\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ube14\ub85c\uadf8\uc5d0\uc11c\ub294 Couchbase \ud31c\uc5d0\uc11c Ansible\uc744 \uc0ac\uc6a9\ud558\ub294 \ubc29\ubc95\uc744 \ubcf4\uc5ec\ub4dc\ub9bd\ub2c8\ub2e4.<\/p>\n<p>Ansible \uc790\ub3d9\ud654\ub97c \ub9cc\ub4dc\ub294 \uacbd\uc6b0 <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/install\/init-setup.html\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ud074\ub7ec\uc2a4\ud130<\/a> \ub97c \uc0ac\uc6a9\ud558\ub824\uba74 \ub2ec\uc131\ud558\uace0\uc790 \ud558\ub294 \ubaa9\ud45c\uac00 \ubb34\uc5c7\uc778\uc9c0 \uc0dd\uac01\ud574\uc57c \ud569\ub2c8\ub2e4. Couchbase \ud31c\uc5d0 \ubcf5\uc7a1\ud55c \uba85\ub839 \uc9d1\ud569\uc744 \uc801\uc6a9\ud558\uace0 \uc2f6\uc9c0 \uc54a\ub2e4\uba74 \uac00\uc7a5 \uac04\ub2e8\ud55c \ud574\uacb0\ucc45\uc740 \uae30\ubcf8 Ansible \ud50c\ub808\uc774\ubd81\uc744 \ub9cc\ub4e4\uace0 \ud50c\ub808\uc774\ubd81 \uc791\uc5c5\uc744 \ud2b9\uc815 \uc21c\uc11c\ub85c \ubc30\uce58\ud558\ub294 \uac83\uc785\ub2c8\ub2e4. \uc774 \uc194\ub8e8\uc158\uc740 \ub9e4\uc6b0 \uac04\ub2e8\ud558\uace0 \ube60\ub985\ub2c8\ub2e4. \ud50c\ub808\uc774\ubd81 \uad6c\ubb38\uc740 \ubcf5\uc7a1\ud558\uc9c0 \uc54a\uc73c\uba70 \uae30\ubcf8 \ud50c\ub808\uc774\ubd81\uc744 \ub9cc\ub4dc\ub294 \ub370 \ub2e8 \uba87 \ubd84\ubc16\uc5d0 \uac78\ub9ac\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4! \ud50c\ub808\uc774\ubd81\uc740 \uae30\ubcf8\uc801\uc73c\ub85c \ud638\uc2a4\ud2b8 \ub610\ub294 \ud638\uc2a4\ud2b8 \uadf8\ub8f9\uc5d0 \ubcf4\ub0b4\ub294 \uc77c\ub828\uc758 \uc9c0\uce68(\ud50c\ub808\uc774)\uc785\ub2c8\ub2e4. Ansible\uc740 \ub300\uc0c1\uc5d0\uc11c \uc774\ub7ec\ud55c \uc9c0\uce68\uc744 \uc2e4\ud589\ud558\uace0 \ubc18\ud658 \ucf54\ub4dc\ub97c \ub2e4\uc2dc \ubcf4\ub0c5\ub2c8\ub2e4. \uadf8\ub7ec\uba74 \uba85\ub839\uc774 \uc131\uacf5\uc801\uc73c\ub85c \uc801\uc6a9\ub418\uc5c8\ub294\uc9c0 \uc5ec\ubd80\ub97c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\uac83\uc774 \uae30\ubcf8\uc801\uc73c\ub85c \ud50c\ub808\uc774\ubd81\uc774 \uc791\ub3d9\ud558\ub294 \ubc29\uc2dd\uc785\ub2c8\ub2e4.<\/p>\n<p>\uc880 \ub354 \ubcf5\uc7a1\ud55c \uacb0\uacfc\ub97c \uc5bb\uc73c\ub824\uba74 Ansible \uc5ed\ud560\uc744 \ud65c\uc6a9\ud558\uc5ec \uc791\uc5c5\uc744 \uc5ed\ud560\ub85c \uad6c\uc131\ud574\uc57c \ud569\ub2c8\ub2e4. \uc5ed\ud560\uc740 \ud50c\ub808\uc774\ubd81\uc744 \ub354 \ubaa8\ub4c8\ud654\ud558\uae30 \uc704\ud55c \ucd94\uc0c1\ud654\uc5d0 \ubd88\uacfc\ud569\ub2c8\ub2e4. \uc5ed\ud560\uc740 Couchbase \ud658\uacbd\uc744 \uad6c\uc131\ud558\uae30 \uc704\ud55c \uc791\uc5c5 \ubc0f \ucd94\uac00 \ud30c\uc77c\uc758 \uc9d1\ud569\uc785\ub2c8\ub2e4. Ansible \uc5ed\ud560\uc5d0 \ub300\ud574\uc11c\ub294 \uace7 \uc124\uba85\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p><strong>{{ \ud50c\ub808\uc774\ubd81 }}<\/strong><\/p>\n<p>\uccab \ubc88\uc9f8 \ud50c\ub808\uc774\ubd81\uc744 \ub9cc\ub4e4\uc5b4 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \uc774 \ud50c\ub808\uc774\ubd81\uc740 \ud638\uc2a4\ud2b8\uc5d0 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc11c\ubc84\ub97c \uc124\uce58\ud558\uace0 \uc11c\ubc84\ub97c \uc2e4\ud589\ud560 \uc218 \uc788\ub3c4\ub85d \ud569\ub2c8\ub2e4. \ub354 \uc774\uc0c1 \ubaa8\ub4e0 \ucef4\ud4e8\ud130\uc5d0 \ub85c\uadf8\uc628\ud558\uc5ec \uba85\ub839\uc744 \uc2e4\ud589\ud560 \ud544\uc694\uac00 \uc5c6\uc2b5\ub2c8\ub2e4! \ubc18\ubcf5\uc801\uc778 \uc791\uc5c5\uc5d0 \ub9ce\uc740 \uc2dc\uac04\uc744 \uc808\uc57d\ud558\uace0 \uc778\uc801 \uc624\ub958\ub97c \ubc29\uc9c0\ud558\ub824\uba74 \uc790\ub3d9\ud654 \ubc0f \ucf54\ub529\uc5d0 \uc2dc\uac04\uc744 \ud22c\uc790\ud574\uc57c \ud569\ub2c8\ub2e4. Ansible \ud50c\ub808\uc774\ubd81\uc744 \ub9cc\ub4e4\uae30\ub9cc \ud558\uba74 \ub429\ub2c8\ub2e4! \uc774\ub97c \uc5fc\ub450\uc5d0 \ub450\uace0 Couchbase \ud31c\uc5d0\uc11c \uc2e4\ud589\ud574\uc57c \ud558\ub294 \ub85c\uc9c1\uc744 \uc774\ud574\ud574\uc57c \ud569\ub2c8\ub2e4. Ansible\uc740 \uc0ac\uc6a9\uc790\uac00 \ubb34\uc5c7\uc744 \ud558\ub824\ub294\uc9c0 \uc54c\uace0 \uc788\ub2e4\uace0 \uac00\uc815\ud558\uace0 \uc774\ub97c \uc790\ub3d9\ud654\ud569\ub2c8\ub2e4. \ud50c\ub808\uc774\ubd81\uc740 Ansible\uc5d0 \ub300\ud55c \uc9c0\uce68 \ub610\ub294 \uc9c0\uce68\uc785\ub2c8\ub2e4.<\/p>\n<p>\ud50c\ub808\uc774\ubd81\uc740 YAML \ud615\uc2dd\uc73c\ub85c \uc791\uc131\ub41c \ud14d\uc2a4\ud2b8 \ud30c\uc77c\ub85c, \ud655\uc7a5\uc790\uac00 yml\uc778 \ud30c\uc77c\ub85c \uc800\uc7a5\ub429\ub2c8\ub2e4. \ud50c\ub808\uc774\ubd81\uc740 \uacf5\ubc31 \ubb38\uc790\uc640 \ud568\uaed8 \ub4e4\uc5ec\uc4f0\uae30\ub97c \uc0ac\uc6a9\ud558\uc5ec \ub370\uc774\ud130\uc758 \uad6c\uc870\ub97c \ub098\ud0c0\ub0c5\ub2c8\ub2e4. \ub450 \uac00\uc9c0 \uae30\ubcf8 \uaddc\uce59\uc774 \uc788\uc2b5\ub2c8\ub2e4:<\/p>\n<ul>\n<li>\uacc4\uce35 \uad6c\uc870\uc5d0\uc11c \uac19\uc740 \uc218\uc900\uc758 \ub370\uc774\ud130 \uc694\uc18c\uc5d0\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \ub4e4\uc5ec\uc4f0\uae30\uac00 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4.<\/li>\n<li>\ub2e4\ub978 \ud56d\ubaa9\uc758 \uc790\uc2dd\uc778 \ud56d\ubaa9\uc740 \ubd80\ubaa8 \ud56d\ubaa9\ubcf4\ub2e4 \ub4e4\uc5ec\uc4f0\uae30\ud574\uc57c \ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n<p><strong>{{ \uc608\uc81c }} <\/strong>- \ub2e8\uc77c \uc791\uc5c5 \ud50c\ub808\uc774\ubd81:<\/p>\n<pre class=\"lang:default decode:true\">---\r\n\r\n- name configure Couchbase user on your farm\r\n\r\nhosts:\u00a0 all\r\n\r\ntasks:\r\n\r\n- name:\u00a0create couchbase user with UID 5000\r\n\r\nuser:\r\n\r\nname:\u00a0couchbase\r\n\r\nuid:\u00a03000\r\n\r\nstate:\u00a0present<\/pre>\n<p>\ud50c\ub808\uc774\ubd81\uc740 \ub300\uc2dc(-) \uc138 \uac1c\ub85c \uad6c\uc131\ub41c \uc120\uc73c\ub85c \uc2dc\uc791\ud558\uba70 \uc810(...) \uc138 \uac1c\ub85c \ub05d\ub0a0 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub7ec\ud55c \ub9c8\ucee4 \uc0ac\uc774\uc5d0\uc11c \ud50c\ub808\uc774\ubd81\uc740 \ud50c\ub808\uc774 \ubaa9\ub85d\uc73c\ub85c \uc815\uc758\ub429\ub2c8\ub2e4. YAML \ubaa9\ub85d\uc758 \ud56d\ubaa9\uc740 \ub300\uc2dc \ud558\ub098\ub85c \uc2dc\uc791\ud558\uace0 \uacf5\ubc31\uc73c\ub85c \ub05d\ub0a9\ub2c8\ub2e4. YAML \ubaa9\ub85d\uc740 \ub2e4\uc74c\uacfc \uac19\uc774 \ud45c\uc2dc\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">---\r\n\r\n- name\u00a0just example\r\n\r\nhosts:\u00a0 all\r\n\r\ntasks:\r\n\r\n\u00a0first\r\n\u00a0second\r\n\u00a0third<\/pre>\n<p><strong>\uc774\ub984<\/strong>, <strong>\ud638\uc2a4\ud2b8<\/strong>,<strong>\u00a0<\/strong>\uadf8\ub9ac\uace0 <strong>\uc791\uc5c5 <\/strong>\ud0a4\uc785\ub2c8\ub2e4. \uc774 \ud0a4\ub4e4\uc740 \ubaa8\ub450 \ub3d9\uc77c\ud55c \ud648\uc774 \uc788\uc2b5\ub2c8\ub2e4. \ud0a4\uc758 <a href=\"https:\/\/docs.couchbase.com\/server\/6.0\/manage\/manage-security\/manage-users-and-roles.html\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc0ac\uc6a9\uc790 \uc0dd\uc131<\/a> \uc608\uc81c \uc7ac\uc0dd\uc740 \ub300\uc2dc\uc640 \uc2a4\ud398\uc774\uc2a4\ub85c \uc2dc\uc791\ud558\uace0 \uccab \ubc88\uc9f8 \ud0a4\uc778 <strong>\uc774\ub984 <\/strong>\uc18d\uc131\uc774 \ubc1c\uc0dd\ud569\ub2c8\ub2e4.<strong>\u00a0<\/strong>\ub808\uc774\ube14\uc778 \ubb38\uc790\uc5f4\uacfc \uc5f0\uad00\ub41c \uc774\ub984\uc785\ub2c8\ub2e4. \uc774\ub294 \ud50c\ub808\uc774\uc758 \ubaa9\uc801\uc744 \uc2dd\ubcc4\ud558\ub294 \ub370 \ub3c4\uc6c0\uc774 \ub429\ub2c8\ub2e4. The <strong>\uc774\ub984 <\/strong>\ud0a4\ub294 \uc120\ud0dd \uc0ac\ud56d\uc774\uc9c0\ub9cc \ud2b9\ud788 \ud50c\ub808\uc774\ubd81\uc5d0 \uc5ec\ub7ec \uac1c\uc758 \ud50c\ub808\uc774\uac00 \uc788\ub294 \uacbd\uc6b0 \ud50c\ub808\uc774\ubd81\uc744 \ubb38\uc11c\ud654\ud558\uae30 \ub54c\ubb38\uc5d0 \uad8c\uc7a5\ud569\ub2c8\ub2e4. \ub450 \ubc88\uc9f8 \ud0a4\ub294 <strong>\ud638\uc2a4\ud2b8 <\/strong>\uc5b4\ud2b8\ub9ac\ubdf0\ud2b8\ub294 \ud50c\ub808\uc774\uc758 \uc791\uc5c5\uc744 \uc2e4\ud589\ud560 \ud638\uc2a4\ud2b8\ub97c \uc9c0\uc815\ud569\ub2c8\ub2e4. \ud638\uc2a4\ud2b8\uc758 <strong>\ud638\uc2a4\ud2b8 <\/strong>\uc18d\uc131\uc740 \ud638\uc2a4\ud2b8 \uc774\ub984\uc744 \uac12\uc73c\ub85c \ubc1b\uac70\ub098 \uc778\ubca4\ud1a0\ub9ac\uc5d0\uc11c \ud638\uc2a4\ud2b8 \uadf8\ub8f9\uc744 \ubc1b\uc2b5\ub2c8\ub2e4. \ub9c8\uc9c0\ub9c9\uc73c\ub85c, \ud50c\ub808\uc774\uc758 \ub9c8\uc9c0\ub9c9 \ud0a4\ub294 <strong>\uc791\uc5c5<\/strong>\u00a0\uc18d\uc131\uc5d0 \uac12\uc744 \uc9c0\uc815\ud558\uc5ec \uc774 \ud50c\ub808\uc774\uc5d0 \ub300\ud574 \uc2e4\ud589\ud560 \ud0dc\uc2a4\ud06c \ubaa9\ub85d\uc744 \uc9c0\uc815\ud569\ub2c8\ub2e4. \uc774 \uc608\uc81c\uc5d0\uc11c\ub294 \ub2e8\uc77c \ud0dc\uc2a4\ud06c\ub97c \uc2e4\ud589\ud558\uc5ec <strong>\uc0ac\uc6a9\uc790 <\/strong>\ubaa8\ub4c8\uc5d0 \ud2b9\uc815 \uc778\uc218\ub97c \ucd94\uac00\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. Ansible\uc5d0\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \ub2e4\uc591\ud55c <strong>\ubaa8\ub4c8 <\/strong>(\"<strong>\ubaa8\ub4c8 \ub77c\uc774\ube0c\ub7ec\ub9ac<\/strong>\") \uc6d0\uaca9 \ud638\uc2a4\ud2b8\uc5d0\uc11c \uc9c1\uc811 \uc2e4\ud589\ud558\uac70\ub098 \ud50c\ub808\uc774\ubd81\uc744 \ud1b5\ud574 \uc2e4\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub7ec\ud55c \ubaa8\ub4c8\uc740 \uc11c\ube44\uc2a4, \ud328\ud0a4\uc9c0 \ub610\ub294 \ud30c\uc77c\uacfc \uac19\uc740 \uc2dc\uc2a4\ud15c \ub9ac\uc18c\uc2a4\ub97c \uc81c\uc5b4\ud558\uac70\ub098 \uc2dc\uc2a4\ud15c \uba85\ub839 \uc2e4\ud589\uc744 \ucc98\ub9ac\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p><strong>{{ \ub450 \ubc88\uc9f8 \uc608\uc81c }}<\/strong><\/p>\n<p><strong>Couchbase \uc124\uce58 <\/strong>\ub2e8\uc77c \ud50c\ub808\uc774\ubd81\uc5d0\uc11c \ud074\ub7ec\uc2a4\ud130 - \uc774 \ud50c\ub808\uc774\ubd81\uc744 \ud638\ucd9c\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. <strong>couchbase-install.yml<\/strong>.<strong>\u00a0<\/strong>\ud074\ub7ec\uc2a4\ud130\uc758 \ub85c\uadf8\uc778 \ub370\uc774\ud130\ub294 \ubcf4\uc548\uc0c1\uc758 \uc774\uc720\ub85c \ub2e4\uc74c \uc704\uce58\uc5d0 \ubcf4\uad00\ub429\ub2c8\ub2e4. <strong>Vault<\/strong>. Ansible-vault\ub294 \uc815\ubcf4\ub97c \uc554\ud638\ud654\ud558\uae30 \uc704\ud574 Ansible\uc5d0\uc11c \uc0ac\uc6a9\ud558\ub294 \uba85\ub839\uc904 \ub3c4\uad6c\uc785\ub2c8\ub2e4. Couchbase \ub85c\uadf8\uc778 \ub370\uc774\ud130\ub97c \uc77c\ubc18 \ud14d\uc2a4\ud2b8\ub85c \ubcf4\uad00\ud574\uc11c\ub294 \uc548 \ub429\ub2c8\ub2e4. \ube44\ubc00\ubc88\ud638\ub294 \ub2e4\uc74c\uacfc \uac19\uc544\uc57c \ud569\ub2c8\ub2e4. <strong>\ud56d\uc0c1 <\/strong>\uc554\ud638\ud654\ud574\uc57c \ud569\ub2c8\ub2e4!<\/p>\n<ol>\n<li>\ub9cc\ub4e4\uae30 <strong>\uc554\ud638\ud654\ub41c <\/strong>\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ud074\ub7ec\uc2a4\ud130\uc758 \ub85c\uadf8\uc778 \ub370\uc774\ud130:<\/li>\n<\/ol>\n<p>\ub450 \uac1c\uc758 \ud30c\uc77c\uc744 \ub9cc\ub4e4\uc5b4 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4: <strong>variables.yml<\/strong>\u00a0\uadf8\ub9ac\uace0<strong>\u00a0vault.yml<\/strong>. \uc774 \ub450 \ud30c\uc77c\uc740 \ub2e4\uc74c \ub514\ub809\ud130\ub9ac \uad6c\uc870 \uc544\ub798\uc5d0 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4: <strong>\/ansible\/group_vars\/all<\/strong>.<\/p>\n<p><strong>ansible<\/strong><\/p>\n<pre class=\"lang:default decode:true\">\u00a0 \u00a0\u251c\u2500\u2500 couchbase-install.yml\r\n\r\n\u00a0 \u00a0\u251c\u2500\u2500 group_vars\r\n\r\n\u00a0 \u00a0\u2502 \u00a0 \u2514\u2500\u2500 all\r\n\r\n\u00a0 \u00a0\u2502 \u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u251c\u2500\u2500 varibales.yml\r\n\r\n\u00a0 \u00a0\u2502 \u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u2514\u2500\u2500 vault.yml\r\n\r\n\u00a0 \u00a0\u251c\u2500\u2500 inventory.inv\r\n\r\n\u00a0 \u00a0\u2514\u2500\u2500 template-add-node.j2\r\n\r\n<\/pre>\n<p>\ud30c\uc77c\uc5d0\uc11c <strong>variables.yml <\/strong>\uc0c8 \ud074\ub7ec\uc2a4\ud130\uc5d0 \uc0ac\uc6a9\uc790 \uc774\ub984, RAM \ud06c\uae30, \ube44\ubc00\ubc88\ud638 \ubcc0\uc218\ub97c \ub123\uc5b4 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \uc2e4\uc81c \ube44\ubc00\ubc88\ud638 \uac12\uc740 \ub450 \ubc88\uc9f8 \ud30c\uc77c\uc5d0 \ub123\uc2b5\ub2c8\ub2e4. <strong>vault.yml<\/strong>\u00a0\uc554\ud638\ud654\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:default decode:true\"># cat variables.yml\r\n\r\nuser: admin\r\n\r\npassword:\u00a0\"{{ vault_password }}\"\r\n\r\nram: 512\r\n\r\nreplicas: 2\r\n\r\nbucket_ram: 256\r\n\r\nbucket: Ansible\r\n\r\n# cat vault.yml\r\n\r\npassword: couchbase321\r\n\r\n<\/pre>\n<p>ansible-vault\ub97c \uc0ac\uc6a9\ud558\uace0 \ub2e4\uc74c\uc5d0\uc11c \ube44\ubc00\ubc88\ud638\ub97c \uc554\ud638\ud654\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. <strong>vault.yml<\/strong>\u00a0file:<\/p>\n<pre class=\"lang:default decode:true\">ansible-vault encrypt\u00a0vault.yml\r\n\r\n<\/pre>\n<p>\uc0c8 Vault \ube44\ubc00\ubc88\ud638:<\/p>\n<p>\uc774\uc81c\ubd80\ud130\ub294 \ube44\ubc00\ubc88\ud638\uac00 \uc554\ud638\ud654\ub418\uc5b4 \uc548\uc804\ud558\uac8c \ubcf4\ud638\ub429\ub2c8\ub2e4. \ud50c\ub808\uc774\ubd81\uc744 \uc2e4\ud589\ud560 \ub54c\ub9c8\ub2e4 \ubcfc\ud2b8\ub97c \ub9cc\ub4e4 \ub54c \uc124\uc815\ud55c \ube44\ubc00\ubc88\ud638\ub97c \uc81c\uacf5\ud574\uc57c \ud569\ub2c8\ub2e4. \ucc38\uace0: Ansible\uc740 AES-256 \uc554\ud638\ud654 \uc54c\uace0\ub9ac\uc998\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:default decode:true\">cat vault.yml\r\n\r\n$ANSIBLE_VAULT;1.1;AES256\r\n\r\n6339353631303431626531306636313862396434306661356432373434623834653\r\n\r\n<\/pre>\n<p>\uc8fc\uc694 \ud50c\ub808\uc774\ubd81 <strong>couchbase-install.yml <\/strong>\uc5d0\ub294 \ub9ce\uc740 \uc791\uc5c5\uc774 \ud3ec\ud568\ub418\uba70, \uc774\ub7ec\ud55c \uc791\uc5c5\uc740 \ub2e4\uc74c\uacfc \uac19\uc740 Ansible \ubaa8\ub4c8\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4: <strong>\ud15c\ud50c\ub9bf, \uc178, \uc11c\ube44\uc2a4<\/strong>\u00a0\ub610\ub294 <strong>yum<\/strong>.<\/p>\n<pre class=\"lang:default decode:true\">cat couchbase-install.yml\r\n\r\n---\r\n\r\n- name:\u00a0Install and configure 3 node Couchbase cluster\r\n\r\nhosts:\u00a0all\r\n\r\ntasks:\r\n\r\n- name:\u00a0Download the appropriate meta package from the package download location\r\n\r\nget_url:\r\n\r\nurl:\u00a0https:\/\/packages.couchbase.com\/releases\/couchbase-release\/\r\n\r\ncouchbase-release-1.0-1-x86_64.rpm\r\n\r\ndest: \/tmp\/couchbase-release-1.0-1-x86_64.rpm\r\n\r\n- name:\u00a0install the package source and the Couchbase public keys\r\n\r\nyum:\r\n\r\nname:\u00a0\/tmp\/couchbase-release-1.0-1-x86_64.rpm\r\n\r\nstate:\u00a0present\r\n\r\n- name: Install Couchbase Server package\r\n\r\nyum:\r\n\r\nname:\u00a0couchbase-server\r\n\r\nstate:\u00a0present\r\n\r\n- name:\u00a0make sure Couchbase Server started\r\n\r\nservice:\r\n\r\nname:\u00a0couchbase-server\r\n\r\nstate:\u00a0started\r\n\r\n- name:\u00a0Initialize the cluster and add the nodes to the cluster\r\n\r\nhosts: couchbase-master\r\n\r\ntasks:\r\n\r\n- name:\u00a0set-up Couchbase central node -\u00a0init Couchbase cluster\r\n\r\nshell:\u00a0\/opt\/couchbase\/bin\/couchbase-cli cluster-init -c 127.0.0.1\u00a0--cluster-username={{ user }} --cluster-password={{ password }} --cluster-port=8091 --cluster-ramsize={{ ram }}\r\n\r\n- name:\u00a0template use case example - use Jinja2 templating\r\n\r\ntemplate:\u00a0src=template-add-node.j2 dest=\/tmp\/add_nodes.sh mode=750\r\n\r\n- name:\u00a0start config script - add remaining nodes to the cluster\r\n\r\nshell: \u00a0\/tmp\/add_nodes.sh\r\n\r\n- name:\u00a0rebalance Couchbase cluster\r\n\r\nshell:\u00a0\/opt\/couchbase\/bin\/couchbase-cli rebalance -c 127.0.0.1:8091 -u {{ user }} \u00a0-p {{ password }}\r\n\r\n- name:\u00a0create bucket Ansible with 2 replicas\r\n\r\nshell:\u00a0\/opt\/couchbase\/bin\/couchbase-cli bucket-create -c 127.0.0.1:8091 \u00a0--bucket={{ bucket }} --bucket-type=couchbase --bucket-port=11222 --bucket-ramsize={{ bucket_ram }} \u00a0--bucket-replica={{ replicas }} -u {{ user }} -p {{ password }}\r\n\r\nCouchbase cluster is ready in\u00a0a\u00a0few seconds\u00a0\u2013 this is how fast Ansible can create it!\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"843\" height=\"401\" class=\"wp-image-4558\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/02\/pasted-image-0.png\" alt=\"pasted image 0\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/02\/pasted-image-0.png 843w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/02\/pasted-image-0-300x143.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/02\/pasted-image-0-768x365.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/02\/pasted-image-0-20x10.png 20w\" sizes=\"auto, (max-width: 843px) 100vw, 843px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"830\" height=\"299\" class=\"wp-image-4559\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/02\/pasted-image-0-1.png\" alt=\"pasted image 0 1\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/02\/pasted-image-0-1.png 830w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/02\/pasted-image-0-1-300x108.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/02\/pasted-image-0-1-768x277.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/02\/pasted-image-0-1-20x7.png 20w\" sizes=\"auto, (max-width: 830px) 100vw, 830px\" \/><\/p>\n<p>\ud50c\ub808\uc774\ubd81\uc744 \ubd84\uc11d\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \ud50c\ub808\uc774\ubd81\uc740 \ub2e4\uc74c\uacfc \uac19\uc774 \ub450 \ubd80\ubd84\uc73c\ub85c \ub098\ub269\ub2c8\ub2e4.<strong>\u00a0\ub2e4\ub978 <\/strong>\uc218\uc900<strong>\u00a0\ub4e4\uc5ec\uc4f0\uae30<\/strong>. \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uac00 \uc124\uce58\ub418\uc5b4 \uc788\ub294 \ud638\uc2a4\ud2b8\ub294 <strong>inventory.inv<\/strong>\u00a0\ud30c\uc77c\uc744 \uc0dd\uc131\ud569\ub2c8\ub2e4. inventory.inv \ud30c\uc77c\uc740 \ud638\uc2a4\ud2b8 \uadf8\ub8f9\uacfc \ud574\ub2f9 \uadf8\ub8f9 \ub0b4\uc758 \ud638\uc2a4\ud2b8\ub85c \uad6c\uc131\ub429\ub2c8\ub2e4. \ub2e4\uc74c\uc740 \ub9e4\uc6b0 \uae30\ubcf8\uc801\uc778 Ansible \ud638\uc2a4\ud2b8 \ud30c\uc77c\uc758 \uc608\uc785\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">cat\u00a0inventory.inv\r\n\r\n[couchbase-master]\r\n\r\n192.168.178.83\r\n\r\n[couchbase-nodes]\r\n\r\n192.168.178.84\r\n\r\n192.168.178.85<\/pre>\n<p>&nbsp;<\/p>\n<p>\uc791\uc5c5\uc758 \uccab \ubc88\uc9f8 \ubd80\ubd84\uc740 \uc138 \ud638\uc2a4\ud2b8 \ubaa8\ub450\uc5d0\uc11c \uc2e4\ud589\ub429\ub2c8\ub2e4(\ud638\uc2a4\ud2b8: \ubaa8\ub450). \ubaa8\ub4e0 \ud638\uc2a4\ud2b8\uc5d0\uc11c Ansible\uc740 Couchbase \ub9ac\ud3ec\uc9c0\ud1a0\ub9ac\ub97c \uc124\uce58\ud55c \ub2e4\uc74c Linux \ub3c4\uad6c YUM Couchbase Server\ub97c \ud1b5\ud574 \uc124\uce58\ud569\ub2c8\ub2e4. \ub9c8\uc9c0\ub9c9\uc5d0 Couchbase Server\uac00 \uc2e4\ud589 \uc911\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. \ub2e4\uc74c \ubaa8\ub4c8\uc774 \uc2e4\ud589\ub429\ub2c8\ub2e4:<\/p>\n<p><strong>get_url:<\/strong>\u00a0HTTP, HTTPS \ub610\ub294 FTP\uc5d0\uc11c \uc6d0\uaca9 \uc11c\ubc84\ub85c \ud30c\uc77c\uc744 \ub2e4\uc6b4\ub85c\ub4dc\ud569\ub2c8\ub2e4. \uc6d0\uaca9 \uc11c\ubc84\ub294 \uc6d0\uaca9 \ub9ac\uc18c\uc2a4\uc5d0 \uc9c1\uc811 \uc561\uc138\uc2a4\ud560 \uc218 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<p><strong>yum: <\/strong>yum \ud328\ud0a4\uc9c0 \uad00\ub9ac\uc790\ub97c \uc0ac\uc6a9\ud558\uc5ec \ud328\ud0a4\uc9c0 \ubc0f \uadf8\ub8f9\uc744 \uc124\uce58, \uc5c5\uadf8\ub808\uc774\ub4dc, \ub2e4\uc6b4\uadf8\ub808\uc774\ub4dc, \uc81c\uac70 \ubc0f \ub098\uc5f4\ud569\ub2c8\ub2e4.<\/p>\n<p><strong>\uc11c\ube44\uc2a4:<\/strong>\u00a0\uc6d0\uaca9 \ud638\uc2a4\ud2b8\uc758 \uc11c\ube44\uc2a4\ub97c \uc81c\uc5b4\ud569\ub2c8\ub2e4. \uc9c0\uc6d0\ub418\ub294 \ucd08\uae30\ud654 \uc2dc\uc2a4\ud15c\uc5d0\ub294 BSD init, OpenRC, SysV, Solaris SMF, systemd, upstart\uac00 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc791\uc5c5\uc758 \ub450 \ubc88\uc9f8 \ubd80\ubd84\uc740 \"\ub9c8\uc2a4\ud130\" \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc11c\ubc84 \ub178\ub4dc(\ud638\uc2a4\ud2b8: couchbase-master)\uc5d0\uc11c \uc2e4\ud589\ub429\ub2c8\ub2e4. \ub450 \ubc88\uc9f8 \ubd80\ubd84\uc5d0\uc11c\ub294 \ub2e4\uc74c \ubaa8\ub4c8\uc774 \uc2e4\ud589\ub429\ub2c8\ub2e4:<\/p>\n<p><strong>\uc178:<\/strong>\u00a0\uc178 \ubaa8\ub4c8\uc740 \uba85\ub839 \uc774\ub984 \ub4a4\uc5d0 \uacf5\ubc31\uc73c\ub85c \uad6c\ubd84\ub41c \uc778\uc218\uc758 \ubaa9\ub85d\uc744 \ubc1b\uc2b5\ub2c8\ub2e4. \uc774\ub294 \uac70\uc758 \uc815\ud655\ud788\u00a0<a href=\"https:\/\/docs.ansible.com\/ansible\/latest\/command_module.html#command\" target=\"_blank\" rel=\"noopener noreferrer\">\uba85\ub839<\/a>\u00a0\ubaa8\ub4c8\uc744 \uc0ac\uc6a9\ud558\uc9c0\ub9cc \uc6d0\uaca9 \ub178\ub4dc\uc5d0\uc11c \uc178\uc744 \ud1b5\ud574 \uba85\ub839\uc744 \uc2e4\ud589\ud569\ub2c8\ub2e4. \uc6b0\ub9ac\ub294 <strong>shell <\/strong>\ubaa8\ub4c8\uc744 \uc2e4\ud589\ud569\ub2c8\ub2e4. <strong>\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 CLI <\/strong>\ud074\ub7ec\uc2a4\ud130 \ucd08\uae30\ud654, \uc7ac\uc870\uc815 \ub610\ub294 \ubc84\ud0b7 \uc0dd\uc131 \ub4f1\uc758 \uba85\ub839\uc744 \uc2e4\ud589\ud569\ub2c8\ub2e4.<\/p>\n<p><strong>\ud15c\ud50c\ub9bf\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4: <\/strong>\ud15c\ud50c\ub9bf\uc740 Jinja2 \ud15c\ud50c\ub9bf \uc5b8\uc5b4\ub85c \ucc98\ub9ac\ub429\ub2c8\ub2e4. Ansible\uc758 \ud15c\ud50c\ub9bf\uc740 \uad6c\uc131 \ub9e4\uac1c\ubcc0\uc218\uac00 \ud3ec\ud568\ub41c \ud30c\uc77c\uc774\uc9c0\ub9cc \ub3d9\uc801 \uac12\uc740 \ubcc0\uc218\ub85c \uc81c\uacf5\ub429\ub2c8\ub2e4. \ud50c\ub808\uc774\ubd81 \uc2e4\ud589 \uc911\uc5d0 \uc0ac\uc6a9 \uc911\uc778 \ud074\ub7ec\uc2a4\ud130\uc640 \uac19\uc740 \uc870\uac74\uc5d0 \ub530\ub77c \ubcc0\uc218\uac00 \uad00\ub828 \uac12\uc73c\ub85c \ub300\uccb4\ub429\ub2c8\ub2e4. \uc774 \uc2dc\ub098\ub9ac\uc624\uc5d0\uc11c \ud15c\ud50c\ub9bf\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">cat template-add-node.j2\r\n\r\n{% for host in groups['couchbase-nodes'] %}\r\n\r\n\/opt\/couchbase\/bin\/couchbase-cli server-add -c 127.0.0.1:8091 -u {{ user }} -p {{ password }} --server-add={{ hostvars[host]['ansible_default_ipv4']['address'] }}:8091 --server-add-username={{ user }} --server-add-password={{ password }}\r\n\r\n{% endfor %}\r\n\r\n<\/pre>\n<p>\ud15c\ud50c\ub9bf\uc740 \/tmp \ub514\ub809\ud130\ub9ac\uc5d0 \ub2e4\uc74c \uc2a4\ud06c\ub9bd\ud2b8\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4(\uc774 \uc2a4\ud06c\ub9bd\ud2b8\ub294 \ub2e4\uc74c\uc5d0 \ud638\ucd9c\ub429\ub2c8\ub2e4. <strong>\uc791\uc5c5<\/strong>).<\/p>\n<pre class=\"lang:default decode:true\">cat \/tmp\/addnodes.sh\r\n\r\n\/opt\/couchbase\/bin\/couchbase-cli server-add -c 127.0.0.1:8091 -u admin -p couchbase321 --server-add=192.168.178.84:8091 --server-add-username=admin --server-add-password=couchbase321\r\n\r\n\/opt\/couchbase\/bin\/couchbase-cli server-add -c 127.0.0.1:8091 -u admin -p couchbase321 --server-add=192.168.178.85:8091 --server-add-username=admin --server-add-password=couchbase321<\/pre>\n<p>&nbsp;<\/p>\n<p>\ud15c\ud50c\ub9bf \ubaa8\ub4c8\uc744 \ud1b5\ud574 \ub3d9\uc801\uc73c\ub85c \uc0dd\uc131\u00a0<strong>\/tmp\/add_nodes.sh<\/strong><strong>\u00a0<\/strong>\uc2a4\ud06c\ub9bd\ud2b8\ub294 \ub098\uba38\uc9c0 \ub450 \ub178\ub4dc\ub97c Couchbase \ud074\ub7ec\uc2a4\ud130\uc5d0 \ucd94\uac00\ud569\ub2c8\ub2e4.<\/p>\n<p>\ub9c8\uc9c0\ub9c9 \ub450 \uc791\uc5c5\uc740 Ansible <strong>shell <\/strong>\ubaa8\ub4c8\uc744 \ucd94\uac00\ud558\uace0 Couchbase CLI \uba85\ub839\uc744 \uc2e4\ud589\ud569\ub2c8\ub2e4:<\/p>\n<ul>\n<li>\u00a0\uc774\ub984: \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ud074\ub7ec\uc2a4\ud130\ub97c \uc7ac\uc870\uc815\ud569\ub2c8\ub2e4,<\/li>\n<li>\u00a0\uc774\ub984: 2\uac1c\uc758 \ubcf5\uc81c\ubcf8\uc774 \uc788\ub294 \ubc84\ud0b7 Ansible \ub9cc\ub4e4\uae30<\/li>\n<\/ul>\n<p>\uc774 \ubaa8\ub4e0 \uc791\uc5c5\uc774 \ub05d\ub098\uba74 3\ub178\ub4dc Couchbase \ud074\ub7ec\uc2a4\ud130\ub97c \uc0ac\uc6a9\ud560 \uc900\ube44\uac00 \ub418\uc5c8\uc2b5\ub2c8\ub2e4! \ube60\ub974\uace0 \uac04\ub2e8\ud588\uc73c\uba70, inventory.inv \ud30c\uc77c\uc5d0 \ud638\uc2a4\ud2b8\ub97c \ub354 \ucd94\uac00\ud558\uae30\ub9cc \ud558\uba74 \ub2e4\uc74c \uc124\uce58\uc5d0 \uc774 \ud50c\ub808\uc774\ubd81\uc744 \uc7ac\uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p><strong>{{ \uc5ed\ud560 }}<\/strong><\/p>\n<p>\uba87 \uac00\uc9c0 \uac04\ub2e8\ud55c \uc791\uc5c5\uc744 \uc2e4\ud589\ud574\uc57c \ud560 \ub54c\ub294 \ub2e8\uc77c \ud30c\uc77c Ansible \ud50c\ub808\uc774\ubd81\uc744 \uc0ac\uc6a9\ud558\ub294 \uac83\uc774 \uc88b\uc2b5\ub2c8\ub2e4. \ud50c\ub808\uc774\ubd81\uc758 \ubcf5\uc7a1\uc131\uc774 \uc99d\uac00\ud558\uba74 Ansible \uc0ac\uc6a9\uc744 \uace0\ub824\ud574\uc57c \ud569\ub2c8\ub2e4. <strong>\uc5ed\ud560<\/strong>. \uc5ed\ud560\uc740 \ud50c\ub808\uc774\ubd81\uc744 \ubbf8\ub9ac \uc815\uc758\ub41c \ub514\ub809\ud1a0\ub9ac \uad6c\uc870\ub85c \uad6c\uc131\ud558\uc5ec Ansible\uc774 \ubaa8\ub4e0 \uac83\uc744 \uc790\ub3d9\uc73c\ub85c \uac80\uc0c9\ud560 \uc218 \uc788\ub3c4\ub85d \ud558\ub294 \ubc29\ubc95\uc785\ub2c8\ub2e4.<\/p>\n<ul>\n<li>\n<h2>\uc5ed\ud560 \ud504\ub808\uc784\uc6cc\ud06c \ub9cc\ub4e4\uae30<\/h2>\n<\/li>\n<\/ul>\n<p>Ansible\uc774 \uc5ed\ud560\uc744 \uc62c\ubc14\ub974\uac8c \ucc98\ub9ac\ud558\ub824\uba74 \uc5ed\ud560\uc744 \ucc3e\uace0 \uc774\ud574\ud560 \uc218 \uc788\ub294 \ub514\ub809\ud130\ub9ac \uad6c\uc870\ub97c \uad6c\ucd95\ud574\uc57c \ud569\ub2c8\ub2e4. \uc774\ub97c \uc704\ud574 \uc791\uc5c5 \ub514\ub809\ud130\ub9ac\uc5d0 Ansible\uc6a9 \"roles\" \ub514\ub809\ud130\ub9ac\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4.<\/p>\n<p>Couchbase \uc124\uce58\ub97c \uc704\ud55c \uc5ed\ud560 \uad6c\uc870\ub97c \ub9cc\ub4e4\uc5b4 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \ub2e8\uc77c \ud30c\uc77c \ud50c\ub808\uc774\ubd81\uc744 \uc5ed\ud560\ub85c '\ubc88\uc5ed'\ud558\ub294 \ubc29\ubc95\uc744 \ubcf4\uc5ec\ub4dc\ub9ac\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<ol>\n<li><strong>Couchbase \uc124\uce58\ub97c \uc704\ud55c \uc5ed\ud560 \ub514\ub809\ud130\ub9ac \uad6c\uc870\ub97c \ub9cc\ub4ed\ub2c8\ub2e4.<\/strong>\u00a0\uac04\ub2e8\ud55c \uc5ed\ud560 \uad6c\uc870\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:<\/li>\n<\/ol>\n<pre class=\"lang:default decode:true\">ansible\r\n\r\n\u2514\u2500\u2500 roles\r\n\r\n\u2514\u2500\u2500 couchbase\r\n\r\n\u251c\u2500\u2500 defaults\r\n\r\n\u251c\u2500\u2500 handlers\r\n\r\n\u251c\u2500\u2500 meta\r\n\r\n\u251c\u2500\u2500 tasks\r\n\r\n\u251c\u2500\u2500 templates\r\n\r\n\u251c\u2500\u2500 tests\r\n\r\n\u2514\u2500\u2500 vars\r\n\r\n<\/pre>\n<p>\uc774\uac83\uc774 \ubc14\ub85c \uc774 \ubaa8\ub4e0 \uac83\uc758 \ubaa9\uc801\uc785\ub2c8\ub2e4:<\/p>\n<ul>\n<li><strong>\uce74\uc6b0\uce58\ubca0\uc774\uc2a4: <\/strong>\uc5ed\ud560 \uc774\ub984<\/li>\n<li><strong>\uae30\ubcf8\uac12<\/strong>: \uc5ed\ud560\uc758 \uae30\ubcf8 \ubcc0\uc218<\/li>\n<li><strong>\ud578\ub4e4\ub7ec<\/strong>\uc774\uc804\uc5d0 \ud50c\ub808\uc774\ubd81\uc5d0 \uc788\ub358 \ubaa8\ub4e0 \ud578\ub4e4\ub7ec\ub97c \uc774\uc81c \uc774 \ub514\ub809\ud130\ub9ac\uc5d0 \ucd94\uac00\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<li><strong>\uba54\ud0c0<\/strong>\uc774 \uc5ed\ud560\uc5d0 \ub300\ud55c \uc77c\ubd80 \uba54\ud0c0 \ub370\uc774\ud130\ub97c \uc815\uc758\ud569\ub2c8\ub2e4.<\/li>\n<li><strong>\ud15c\ud50c\ub9bf<\/strong>\uc720\uc9c0: \uc9c4\uc7902 \ud15c\ud50c\ub9bf<\/li>\n<li><strong>\uc791\uc5c5<\/strong>\uc5ed\ud560\uc774 \uc2e4\ud589\ud560 \uc8fc\uc694 \uc791\uc5c5 \ubaa9\ub85d\uc774 \ud3ec\ud568\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<li><strong>vars<\/strong>: \uc5ed\ud560\uc5d0 \ub300\ud55c \uae30\ud0c0 \ubcc0\uc218<\/li>\n<\/ul>\n<p>2.<strong>\u00a0\uc704\uc5d0\uc11c \ub9cc\ub4e0 \ud50c\ub808\uc774\ubd81\uc744 \uc564\uc11c\ube14 \uc5ed\ud560\ub85c \ub098\ub215\ub2c8\ub2e4. <\/strong>\uc791\uc5c5 \ub514\ub809\ud1a0\ub9ac\uc5d0\uc11c \uc2dc\uc791\ud574\uc57c \ud569\ub2c8\ub2e4. \ub2e4\uc74c\uc758 \ubaa8\ub4e0 \uc791\uc5c5 <strong>couchbase-install.yml <\/strong>\ub294 <strong>\ubd84\ud560 <\/strong>\ub97c \ubcc4\ub3c4\uc758 \ud30c\uc77c\ub85c \ubd84\ub9ac\ud558\uc5ec \/tasks \ub514\ub809\ud130\ub9ac\ub85c \uc62e\uacbc\uc2b5\ub2c8\ub2e4.<strong>\u00a0<\/strong><strong>tasks\/main.yml <\/strong>\ud30c\uc77c\uc5d0 \uc791\uc5c5\uc758 \uc2e4\ud589 \uc21c\uc11c\ub97c \uc54c\ub824\uc57c \ud569\ub2c8\ub2e4. \uc2dc\ub098\ub9ac\uc624 \uc194\ub8e8\uc158\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">ls -ltr .\/tasks\r\n\r\ndownload_meta_package.yml\r\n\r\ninstall_source.yml\r\n\r\ninstall_couchbase.yml\r\n\r\nstart_couchbase.ylm\r\n\r\ninitialize-cluster.yml\r\n\r\nuse_template.ymp\r\n\r\nstart_addnode_script.yml\r\n\r\nrebalance_cluster.yml\r\n\r\ncreate_bucket.yml\r\n\r\nmain.yml\r\n\r\n<\/pre>\n<p>yml \ud30c\uc77c \ub0b4\ubd80\uc5d0 \ubb34\uc5c7\uc774 \uc788\ub294\uc9c0 \ubcf4\uc5ec\ub4dc\ub9ac\uaca0\uc2b5\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">download_meta_package.yml\r\n\r\n---\r\n\r\n- name:\u00a0Download the appropriate meta package from the package download location\r\n\r\nget_url:\r\n\r\nurl: https:\/\/packages.couchbase.com\/releases\/couchbase-release\/\r\n\r\ncouchbase-release-1.0-1-x86_64.rpm\r\n\r\ndest:\u00a0\/tmp\/couchbase-release-1.0-1-x86_64.rpm\r\n\r\nrebalance_cluster.yml\r\n\r\n---\r\n\r\n- name: Rebalance Couchbase cluster\r\n\r\nshell:\u00a0\/opt\/couchbase\/bin\/couchbase-cli rebalance -c 127.0.0.1:8091 -u {{ user }} -p {{ password }}\r\n\r\ninitialize-cluster.yml\r\n\r\n---\r\n\r\n- name: Set-up Couchbase central node - init Couchbase cluster\r\n\r\nshell:\u00a0\/opt\/couchbase\/bin\/couchbase-cli cluster-init -c 127.0.0.1 --cluster-username={{ user }} --cluster-password={{ password }} --cluster-port=8091 --cluster-ramsize={{ ram }}\r\n\r\n<\/pre>\n<p>\uc544\uc2dc\ub2e4\uc2dc\ud53c, \ud50c\ub808\uc774\ubd81\uc740 \ub2e4\uc74c\uacfc \uac19\uc740 \uc791\uc740 \uc791\uc5c5\uc73c\ub85c \ub098\ub269\ub2c8\ub2e4. <strong>\uc791\uc5c5 <\/strong>\ub514\ub809\ud130\ub9ac\ub97c \uc0dd\uc131\ud588\uc2b5\ub2c8\ub2e4. \uc774\uc81c Ansible \uc2e4\ud589 \uc21c\uc11c\ub97c \uc54c\ub824\uc8fc\uc5b4\uc57c \ud558\uba70, \ub610\ud55c \uc5b4\ub5a4 \uc791\uc5c5\uc774 \ubaa8\ub4e0 \ud638\uc2a4\ud2b8\uc5d0\uc11c \uc2e4\ud589\ub418\uc5b4\uc57c \ud558\ub294\uc9c0, \uc5b4\ub5a4 \uc791\uc5c5\uc774 couchbase-master \ub178\ub4dc\uc5d0\uc11c\ub9cc \uc2e4\ud589\ub418\uc5b4\uc57c \ud558\ub294\uc9c0 Ansible\uc774 \uc54c\uc544\uc57c \ud569\ub2c8\ub2e4. \uc6b0\ub9ac\uc758 <strong>main.yml<\/strong>\u00a0file:<\/p>\n<pre class=\"lang:default decode:true\">main.yml\r\n\r\n---\r\n\r\n- include:\u00a0download_meta_package.yml\r\n\r\n- include: install_source.yml\r\n\r\n- include:\u00a0install_couchbase.yml\r\n\r\n- include:\u00a0start_couchbase.ylm\r\n\r\n- include:\u00a0initialize-cluster.yml\r\n\r\nwhen: group_names[0] \u00a0== 'couchbase-master'\r\n\r\n- include:\u00a0use_template.yml\r\n\r\nwhen: group_names[0] \u00a0== 'couchbase-master'\r\n\r\n- include:\u00a0start_addnode_script.yml\r\n\r\nwhen: group_names[0] \u00a0== 'couchbase-master'\r\n\r\n- include:\u00a0rebalance_cluster.yml\r\n\r\nwhen:\u00a0group_names[0] \u00a0== 'couchbase-master'\r\n\r\n- include:\u00a0create_bucket.yml\r\n\r\nwhen:\u00a0group_names[0] \u00a0== 'couchbase-master'\r\n\r\n<\/pre>\n<p>\uc791\uc5c5\uc5d0 \ud45c\uc2dc\ub41c \uc21c\uc11c\uc5d0 \ub530\ub77c \uc791\uc5c5\uc774 \uc2e4\ud589\ub429\ub2c8\ub2e4. <strong>main.yml<\/strong>\u00a0\ud30c\uc77c\uc5d0 \ucd94\uac00\ud569\ub2c8\ub2e4. \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ub9c8\uc2a4\ud130 \uba38\uc2e0\uc5d0\uc11c\ub9cc \uc2e4\ud589\ud574\uc57c \ud558\ub294 \uc791\uc5c5\uc5d0\ub294 \"<strong>\uc5b4\ub514<\/strong>\"\ub97c \ucd94\uac00\ud569\ub2c8\ub2e4. \uc774\ub7ec\ud55c \uc791\uc5c5\uc740 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ub178\ub4dc \uba38\uc2e0\uc5d0\uc11c \uac74\ub108\ub6f0\uac8c \ub429\ub2c8\ub2e4.<\/p>\n<p>\ucd5c\uc885 \uad6c\uc870:<\/p>\n<pre class=\"lang:default decode:true\">ansible\r\n\r\n\u00a0 \u00a0 \u251c\u2500\u2500 couchbase-install.yml\r\n\r\n\u00a0 \u00a0 \u251c\u2500\u2500 group_vars\r\n\r\n\u00a0 \u00a0 \u2502 \u00a0 \u2514\u2500\u2500 all\r\n\r\n\u00a0 \u00a0 \u2502 \u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u251c\u2500\u2500 variables.yml\r\n\r\n\u00a0 \u00a0 \u2502 \u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u2514\u2500\u2500 vault.yml\r\n\r\n\u00a0 \u00a0 \u251c\u2500\u2500 inventory.inv\r\n\r\n\u00a0 \u00a0 \u2514\u2500\u2500 roles\r\n\r\n\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u00a0\u2514\u2500\u2500 couchbase\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u251c\u2500\u2500 defaults\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u251c\u2500\u2500 handlers\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u251c\u2500\u2500 meta\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u251c\u2500\u2500 tasks\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u2502 \u00a0 \u00a0 \u00a0 \u00a0\u251c\u2500\u2500 create_bucket.yml\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u2502 \u00a0 \u00a0 \u00a0 \u00a0\u251c\u2500\u2500 download_meta_package.yml\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u2502 \u00a0 \u00a0 \u00a0 \u00a0\u251c\u2500\u2500 initialize-cluster.yml\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u2502 \u00a0 \u00a0 \u00a0 \u00a0\u251c\u2500\u2500\u00a0install_couchbase.yml\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u2502 \u00a0 \u00a0 \u00a0 \u00a0\u251c\u2500\u2500 install_source.yml\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u2502 \u00a0 \u00a0 \u00a0 \u00a0\u251c\u2500\u2500\u00a0main.yml\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u2502 \u00a0 \u00a0 \u00a0 \u00a0\u251c\u2500\u2500 rebalance_cluster.yml\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u2502 \u00a0 \u00a0 \u00a0 \u00a0\u251c\u2500\u2500 start_addnode_script.yml\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u2502 \u00a0 \u00a0 \u00a0 \u00a0\u251c\u2500\u2500 start_couchbase.ylm\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u2502 \u00a0 \u00a0 \u00a0 \u00a0\u2514\u2500\u2500 use_template.ymp\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u251c\u2500\u2500 templates\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u2502 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u2514\u2500\u2500 template_add-node.j2\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u251c\u2500\u2500 tests\r\n\r\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u2514\u2500\u2500 vars<\/pre>\n<p>\ud50c\ub808\uc774\ubd81 <strong>couchbase-install.yml<\/strong><strong>\u00a0<\/strong>\uc5d0\ub294 \ud574\ub2f9 \uc904\ub9cc \ud3ec\ud568\ub429\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">---\r\n\r\n- hosts:\u00a0all\r\n\r\nroles:\r\n\r\n- couchbase\r\n\r\n<\/pre>\n<p>3. \uc2e4\ud589 <strong>couchbase-install.yml <\/strong>\ud50c\ub808\uc774\ubd81\uc744 \ub2e4\uc6b4\ub85c\ub4dc\ud558\uace0 Couchbase \ud074\ub7ec\uc2a4\ud130\ub97c \uc124\uce58\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:default decode:true\">ansible-playbook\u00a0-i inventory.inv \u00a0.\/couchbase-install.yml\u00a0--ask-vault-pass\r\n\r\nVault password:<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>{{ <\/strong><strong>\uc694\uc57d<\/strong><strong>\u00a0<\/strong><strong>}}<\/strong><\/p>\n<p>\uc704\uc758 \uc608\ub294 Couchbase\uac00 \uc720\uc5f0\ud55c \uae30\uc220\uc774\uba70 Ansible\uc744 \uc0ac\uc6a9\ud55c \uc790\ub3d9\ud654 \ubc0f \uc624\ucf00\uc2a4\ud2b8\ub808\uc774\uc158\uc5d0 \uc774\uc0c1\uc801\uc774\ub77c\ub294 \uac83\uc744 \ubcf4\uc5ec\uc90d\ub2c8\ub2e4. \uac00\uc7a5 \uc88b\uc740 \ud559\uc2b5 \ubc29\ubc95\uc740<strong>\u00a0\ub2e4\uc74c\uc744 \uc218\ud589\ud558\uc5ec<\/strong>! Ansible\uc740 \uc608\uc81c\uc640 \uc790\uc138\ud55c \ubaa8\ub4c8 \uc124\uba85\uc774 \ud3ec\ud568\ub41c \ub9e4\uc6b0 \ud6cc\ub96d\ud55c \uc124\uba85\uc11c\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4. Ansible\uc744 \uc0ac\uc6a9\ud558\uba74 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ud31c\uc744 \uc27d\uace0 \uba4b\uc9c0\uac8c \uad00\ub9ac\ud560 \uc218 \uc788\ub3c4\ub85d Playbook Couchbase CLI \uba85\ub839\uc744 \uc2e4\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4! Ansible\uc5d0\uc11c \uc790\uc2e0\ub9cc\uc758 \ubaa8\ub4c8\uc744 \uc791\uc131\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. Ansible\uc5d0\uc11c \uc81c\uacf5\ud558\ub294 \ubaa8\ub4c8\uc5d0\uc11c \uc6d0\ud558\ub294 \uac83\uc744 \ucc3e\uc744 \uc218 \uc5c6\ub294 \uacbd\uc6b0 \uc790\uccb4 \ubaa8\ub4c8\uc744 \uc27d\uac8c \uc791\uc131\ud560 \uc218 \uc788\ub294 \ubc29\ubc95\uc774 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub610\ud55c Ansible \ucee4\ubba4\ub2c8\ud2f0\uc5d0\uc11c \ub9cc\ub4e0 Ansible \uc5ed\ud560\uc744 \uc0ac\uc6a9\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. <strong>Ansible Galaxy<\/strong>\u00a0\ub294 \uc0ac\uc6a9\uc790\uac00 \uc5ed\ud560\uc744 \uacf5\uc720\ud560 \uc218 \uc788\ub294 \uc6f9\uc0ac\uc774\ud2b8\uc774\uba70 \uc5ed\ud560\uc744 \uc124\uce58, \uc0dd\uc131 \ubc0f \uad00\ub9ac\ud560 \uc218 \uc788\ub294 \uba85\ub839\uc904 \ub3c4\uad6c\uac00 \uc788\uc2b5\ub2c8\ub2e4. Galaxy\ub294 \ucee4\ubba4\ub2c8\ud2f0\uc5d0\uc11c \uac1c\ubc1c\ud55c \uc5ed\ud560\uc744 \ucc3e\uace0, \ub2e4\uc6b4\ub85c\ub4dc\ud558\uace0, \uacf5\uc720\ud560 \uc218 \uc788\ub294 \ubb34\ub8cc \uc0ac\uc774\ud2b8\uc785\ub2c8\ub2e4. Galaxy\uc5d0\uc11c \uc5ed\ud560\uc744 \ub2e4\uc6b4\ub85c\ub4dc\ud558\uba74 \uc790\ub3d9\ud654 \ud504\ub85c\uc81d\ud2b8\ub97c \ube60\ub974\uac8c \uc2dc\uc791\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uc0ac\uc774\ud2b8\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc790\uc2e0\uc774 \ub9cc\ub4e0 \uc5ed\ud560\uc744 \uacf5\uc720\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. GitHub \uacc4\uc815\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc0ac\uc774\ud2b8\uc5d0\uc11c \uc778\uc99d\ud558\uba74 \ub429\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: center\"><a href=\"https:\/\/www.couchbase.com\/blog\/ko\/community\/community-writers-program\/\"><em>\uc774 \uac8c\uc2dc\ubb3c\uc740 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ucee4\ubba4\ub2c8\ud2f0 \uae00\uc4f0\uae30 \ud504\ub85c\uadf8\ub7a8\uc758 \uc77c\ubd80\uc785\ub2c8\ub2e4.<\/em><\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Arkadiusz Borucki works as\u00a0a\u00a0Site Reliability Engineer at Amadeus, focused on NoSQL databases and automation. In his day-to-day work, he uses Couchbase, MongoDB, Oracle, Python, and Ansible. He\u2019s a self-proclaimed big data enthusiast, interested in data store technologies, distributed systems, analytics, [&hellip;]<\/p>","protected":false},"author":53,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1821,1816],"tags":[1299],"ppma_author":[9026],"class_list":["post-4561","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-architecture","category-couchbase-server","tag-ansible"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.8 (Yoast SEO v25.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Couchbase and Ansible - The Couchbase Blog<\/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:\/\/www.couchbase.com\/blog\/ko\/couchbase-and-ansible\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Couchbase and Ansible\" \/>\n<meta property=\"og:description\" content=\"Arkadiusz Borucki works as\u00a0a\u00a0Site Reliability Engineer at Amadeus, focused on NoSQL databases and automation. In his day-to-day work, he uses Couchbase, MongoDB, Oracle, Python, and Ansible. He\u2019s a self-proclaimed big data enthusiast, interested in data store technologies, distributed systems, analytics, [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-and-ansible\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-02-06T11:50:46+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-14T06:44:06+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/02\/pasted-image-0-2-201x300.png\" \/>\n<meta name=\"author\" content=\"Laura Czajkowski, Developer Community Manager, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Laura Czajkowski, Developer Community Manager, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-and-ansible\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-and-ansible\/\"},\"author\":{\"name\":\"Laura Czajkowski, Developer Community Manager, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/5f1a0ece4e644bc8c037686fbc8f3220\"},\"headline\":\"Couchbase and Ansible\",\"datePublished\":\"2018-02-06T11:50:46+00:00\",\"dateModified\":\"2023-06-14T06:44:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-and-ansible\/\"},\"wordCount\":1906,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-and-ansible\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"Ansible\"],\"articleSection\":[\"Couchbase Architecture\",\"Couchbase Server\"],\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-and-ansible\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-and-ansible\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/couchbase-and-ansible\/\",\"name\":\"Couchbase and Ansible - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-and-ansible\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-and-ansible\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2018-02-06T11:50:46+00:00\",\"dateModified\":\"2023-06-14T06:44:06+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-and-ansible\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-and-ansible\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-and-ansible\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-and-ansible\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Couchbase and Ansible\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/5f1a0ece4e644bc8c037686fbc8f3220\",\"name\":\"Laura Czajkowski, Developer Community Manager, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/9deb07d5daaa00220534c31768bc4409\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/bc8eebaf25cbe39bc12fd7b1ef92550becc3953ab877a3f0285a59ec2d30b754?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/bc8eebaf25cbe39bc12fd7b1ef92550becc3953ab877a3f0285a59ec2d30b754?s=96&d=mm&r=g\",\"caption\":\"Laura Czajkowski, Developer Community Manager, Couchbase\"},\"description\":\"Laura Czajkowski is the Snr. Developer Community Manager at Couchbase overseeing the community. She\u2019s responsible for our monthly developer newsletter.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/ko\/author\/laura-czajkowski\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Couchbase and Ansible - The Couchbase Blog","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.couchbase.com\/blog\/ko\/couchbase-and-ansible\/","og_locale":"ko_KR","og_type":"article","og_title":"Couchbase and Ansible","og_description":"Arkadiusz Borucki works as\u00a0a\u00a0Site Reliability Engineer at Amadeus, focused on NoSQL databases and automation. In his day-to-day work, he uses Couchbase, MongoDB, Oracle, Python, and Ansible. He\u2019s a self-proclaimed big data enthusiast, interested in data store technologies, distributed systems, analytics, [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-and-ansible\/","og_site_name":"The Couchbase Blog","article_published_time":"2018-02-06T11:50:46+00:00","article_modified_time":"2023-06-14T06:44:06+00:00","og_image":[{"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/02\/pasted-image-0-2-201x300.png","type":"","width":"","height":""}],"author":"Laura Czajkowski, Developer Community Manager, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Laura Czajkowski, Developer Community Manager, Couchbase","Est. reading time":"12\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-and-ansible\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-and-ansible\/"},"author":{"name":"Laura Czajkowski, Developer Community Manager, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/5f1a0ece4e644bc8c037686fbc8f3220"},"headline":"Couchbase and Ansible","datePublished":"2018-02-06T11:50:46+00:00","dateModified":"2023-06-14T06:44:06+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-and-ansible\/"},"wordCount":1906,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-and-ansible\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["Ansible"],"articleSection":["Couchbase Architecture","Couchbase Server"],"inLanguage":"ko-KR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/couchbase-and-ansible\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-and-ansible\/","url":"https:\/\/www.couchbase.com\/blog\/couchbase-and-ansible\/","name":"Couchbase and Ansible - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-and-ansible\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-and-ansible\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2018-02-06T11:50:46+00:00","dateModified":"2023-06-14T06:44:06+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-and-ansible\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/couchbase-and-ansible\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-and-ansible\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-and-ansible\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Couchbase and Ansible"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","description":"NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4, Couchbase","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/5f1a0ece4e644bc8c037686fbc8f3220","name":"Laura Czajkowski, \uac1c\ubc1c\uc790 \ucee4\ubba4\ub2c8\ud2f0 \uad00\ub9ac\uc790, Couchbase","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/9deb07d5daaa00220534c31768bc4409","url":"https:\/\/secure.gravatar.com\/avatar\/bc8eebaf25cbe39bc12fd7b1ef92550becc3953ab877a3f0285a59ec2d30b754?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bc8eebaf25cbe39bc12fd7b1ef92550becc3953ab877a3f0285a59ec2d30b754?s=96&d=mm&r=g","caption":"Laura Czajkowski, Developer Community Manager, Couchbase"},"description":"\ub85c\ub77c \ucc60\ucf54\ube0c\uc2a4\ud0a4\ub294 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc758 Snr. \uac1c\ubc1c\uc790 \ucee4\ubba4\ub2c8\ud2f0 \ub9e4\ub2c8\uc800\ub85c \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc758 \ucee4\ubba4\ub2c8\ud2f0\ub97c \ucd1d\uad04\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub140\ub294 \uc6d4\uac04 \uac1c\ubc1c\uc790 \ub274\uc2a4\ub808\ud130\ub97c \ub2f4\ub2f9\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.","url":"https:\/\/www.couchbase.com\/blog\/ko\/author\/laura-czajkowski\/"}]}},"authors":[{"term_id":9026,"user_id":53,"is_guest":0,"slug":"laura-czajkowski","display_name":"Laura Czajkowski, Developer Community Manager, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/bc8eebaf25cbe39bc12fd7b1ef92550becc3953ab877a3f0285a59ec2d30b754?s=96&d=mm&r=g","author_category":"","last_name":"Czajkowski","first_name":"Laura","job_title":"","user_url":"","description":"\ub85c\ub77c \ucc60\ucf54\ube0c\uc2a4\ud0a4\ub294 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc758 Snr. \uac1c\ubc1c\uc790 \ucee4\ubba4\ub2c8\ud2f0 \ub9e4\ub2c8\uc800\ub85c \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc758 \ucee4\ubba4\ub2c8\ud2f0\ub97c \ucd1d\uad04\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub140\ub294 \uc6d4\uac04 \uac1c\ubc1c\uc790 \ub274\uc2a4\ub808\ud130\ub97c \ub2f4\ub2f9\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/4561","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/users\/53"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/comments?post=4561"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/4561\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media?parent=4561"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=4561"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=4561"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=4561"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}