{"id":10502,"date":"2015-08-05T11:30:29","date_gmt":"2015-08-05T02:30:29","guid":{"rendered":"http:\/\/www.creationline.com\/?p=10502"},"modified":"2023-08-29T14:19:55","modified_gmt":"2023-08-29T05:19:55","slug":"chef-provisioning%e3%81%a8docker%e3%81%a7consul-template%e3%81%ae%e3%83%86%e3%82%b9%e3%83%88%e7%92%b0%e5%a2%83%e3%82%92%e4%bd%9c%e6%88%90%e3%81%99%e3%82%8b-getchef-docker-consul","status":"publish","type":"post","link":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/chef\/10502","title":{"rendered":"Chef Provisioning\u3068Docker\u3067Consul Template\u306e\u30c6\u30b9\u30c8\u74b0\u5883\u3092\u4f5c\u6210\u3059\u308b #getchef #docker #consul"},"content":{"rendered":"<h2>\u306f\u3058\u3081\u306b<\/h2>\n<p>\u672c\u7a3f\u3067\u306f\u3001Chef Provisioning \u3068 Docker \u3092\u7528\u3044\u3066 <a href=\"https:\/\/hashicorp.com\/blog\/introducing-consul-template.html\">Consul Template<\/a> \u306e\u30c6\u30b9\u30c8\u74b0\u5883\u3092\u4f5c\u6210\u3057\u3066\u307f\u307e\u3059\u3002Chef Provisioning \u3068 Docker \u306b\u3064\u3044\u3066\u306f\u300c<a href=\"\/lab\/10423\">Chef Provisioning\u3068Docker\u3067Serf\u30af\u30e9\u30b9\u30bf\u74b0\u5883\u3092\u4f5c\u6210\u3059\u308b<\/a>\u300d\u3092\u3001Consul \u30af\u30e9\u30b9\u30bf\u306b\u3064\u3044\u3066\u306f\u300c<a href=\"\/lab\/10412\">Chef Provisioning\u3068Vagrant\u3067Consul\u30af\u30e9\u30b9\u30bf\u74b0\u5883\u3092\u4f5c\u6210\u3059\u308b<\/a>\u300d\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u672c\u7a3f\u3067\u4f7f\u7528\u3057\u305f\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u306f\u3059\u3079\u3066 <a href=\"https:\/\/github.com\/cl-lab-k\/chef-consul-docker-cluster\">https:\/\/github.com\/cl-lab-k\/chef-consul-docker-cluster<\/a> \u306b\u3042\u308a\u307e\u3059\u3002<\/p>\n<h2>\u4e8b\u524d\u6e96\u5099<\/h2>\n<p>\u5b9f\u9a13\u306f Debian GNU\/Linux 8.1 \u4e0a\u3067\u884c\u3044\u307e\u3057\u305f\u3002\u4ee5\u4e0b\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u3084\u30d7\u30e9\u30b0\u30a4\u30f3\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<ul>\n<li><a href=\"https:\/\/downloads.chef.io\/chef-dk\/\">Chef-DK<\/a> 0.6.2<\/li>\n<li><a href=\"https:\/\/www.vagrantup.com\/\">Vagrant<\/a> 1.7.2\n<ul>\n<li>Vagrant \u30d7\u30e9\u30b0\u30a4\u30f3: <a href=\"https:\/\/github.com\/cogitatio\/vagrant-hostsupdater\">vagrant-hostsupdater<\/a> 0.0.11<\/li>\n<li>Vagrant \u30d7\u30e9\u30b0\u30a4\u30f3: <a href=\"https:\/\/github.com\/fgrehm\/vagrant-cachier\">vagrant-cachier<\/a> 1.2.0<\/li>\n<\/ul>\n<\/li>\n<li><a href=\"https:\/\/www.virtualbox.org\/\">VirtualBox<\/a> 4.3.28<\/li>\n<\/ul>\n<h2>\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u306e\u53d6\u5f97<\/h2>\n<p><a href=\"https:\/\/github.com\/cl-lab-k\/chef-consul-docker-cluster\/tree\/sample_blog\">https:\/\/github. com\/cl-lab-k\/chef-consul-docker-cluster\/tree\/sample_blog<\/a> \u3092 clone \u3057\u307e\u3059\u3002<\/p>\n<p><code lang=\"bash\"><br \/>\n% git clone https:\/\/github.com\/cl-lab-k\/chef-consul-docker-cluster -b sample_blog<br \/>\nCloning into 'chef-consul-docker-cluster'...<br \/>\n:<br \/>\n% cd chef-consul-docker-cluster<br \/>\n%<br \/>\n<\/code><\/p>\n<p>\u4ee5\u964d\u306f\u3053\u306e\u30c4\u30ea\u30fc\u5185\u3067\u4f5c\u696d\u3092\u884c\u3044\u307e\u3059\u3002<\/p>\n<h2>VM \u306e\u4f5c\u6210<\/h2>\n<p><a href=\"https:\/\/www.vagrantup.com\/\">Vagrant<\/a> \u3092\u7528\u3044\u3066\u3001\u4eca\u56de\u306e\u5b9f\u9a13\u7528\u306e\u4eee\u60f3\u30de\u30b7\u30f3\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n<p><code lang=\"bash\"><br \/>\n% ls -la<br \/>\n\u5408\u8a08 28<br \/>\ndrwxr-xr-x  5 dai  dai   240  7\u6708  9 19:17 .<br \/>\ndrwxrwxrwt 23 root root  680  7\u6708 10 11:45 ..<br \/>\ndrwxr-xr-x  8 dai  dai   300  7\u6708  9 19:46 .git<br \/>\n-rw-r--r--  1 dai  dai   172  7\u6708  6 15:20 .gitignore<br \/>\n-rw-r--r--  1 dai  dai   140  7\u6708  6 15:29 Berksfile<br \/>\n-rw-r--r--  1 dai  dai   824  7\u6708  6 12:50 README.md<br \/>\n-rw-r--r--  1 dai  dai   598  7\u6708  1 12:50 Rakefile<br \/>\n-rw-r--r--  1 dai  dai   511  7\u6708  9 14:57 Vagrantfile<br \/>\n-rw-r--r--  1 dai  dai  1114  6\u6708 30 12:11 chefignore<br \/>\n-rw-r--r--  1 dai  dai   344  7\u6708  6 15:54 metadata.rb<br \/>\ndrwxr-xr-x  3 dai  dai    60  6\u6708 30 18:26 provisioning<br \/>\ndrwxr-xr-x  2 dai  dai    60  7\u6708  6 12:50 recipes<br \/>\n%<br \/>\n<\/code><\/p>\n<p>\u4f5c\u6210\u3059\u308b VM \u306e\u8a2d\u5b9a\u306f <a href=\"https:\/\/github.com\/cl-lab-k\/chef-consul-docker-cluster\/blob\/sample_blog\/Vagrantfile\">Vagrantfile<\/a> \u30d5\u30a1\u30a4\u30eb\u3067\u884c\u3048\u307e\u3059\u3002\u521d\u671f\u8a2d\u5b9a\u3067\u306f\u3001Box \u306f <a href=\"https:\/\/atlas.hashicorp.com\/chef\/boxes\/ubuntu-14.04\">chef\/ubuntu-14.04<\/a>\u3001IP \u30a2\u30c9\u30ec\u30b9\u306f <strong>192.168.33.101<\/strong>\u3001\u30e1\u30e2\u30ea\u306f <strong>8192M<\/strong> \u306e\u8a2d\u5b9a\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002\u4e00\u9023\u306e\u4f5c\u696d\u306f\u57fa\u672c\u7684\u306b <strong>rake<\/strong> \u30bf\u30b9\u30af\u3068\u3057\u3066\u5b9a\u7fa9\u3057\u3066\u3042\u308a\u307e\u3059\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f <strong>berks vendor<\/strong> \u30b5\u30d6\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066 <a href=\"https:\/\/supermarket.chef.io\/cookbooks\/chef-dk\">chef-dk<\/a> Cookbook\u3001<a href=\"https:\/\/supermarket.chef.io\/cookbooks\/docker\">docker<\/a> Cookbook\u3001<a href=\"https:\/\/supermarket.chef.io\/cookbooks\/git\">git<\/a> Cookbook \u3092\u53d6\u5f97\u3057\u3001Vagrant \u306b\u3088\u3063\u3066 VirtualBox VM \u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u8d77\u52d5\u3057\u305f VM \u306b\u306f <a href=\"http:\/\/docs.vagrantup.com\/v2\/provisioning\/chef_zero.html\">Chef Zero Provisioner<\/a> \u3092\u7528\u3044\u3066 <a href=\"https:\/\/github.com\/cl-lab-k\/chef-consul-docker-cluster\/blob\/sample_blog\/recipes\/default.rb\">chef-consul-docker-cluster::default<\/a> Recipe \u3092\u9069\u7528\u3057\u3001Docker \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3068\u8d77\u52d5\u3001<strong>vagrant<\/strong> \u30e6\u30fc\u30b6\u306e\u6240\u5c5e\u30b0\u30eb\u30fc\u30d7\u306e\u5909\u66f4\u3001<a href=\"https:\/\/rubygems.org\/gems\/chef-provisioning-docker\">chef-provisioning-docker<\/a> \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3092\u884c\u3044\u3001Chef Provisioner Docker \u7528\u306e\u30d5\u30a1\u30a4\u30eb\u3092 VM \u306b\u8ee2\u9001\u3057\u307e\u3059\u3002<\/p>\n<p><code lang=\"bash\"><br \/>\n% rake<br \/>\nberks vendor cookbooks<br \/>\nResolving cookbook dependencies...<br \/>\n:<br \/>\n:<br \/>\n:<br \/>\nvagrant up<br \/>\nBringing machine 'default' up with 'virtualbox' provider...<br \/>\n:<br \/>\n:<br \/>\n:<br \/>\nscp -i \/tmp\/chef-consul-docker-cluster\/.vagrant\/machines\/default\/virtualbox\/private_key -P 2222 -r \/tmp\/chef-consul-docker-cluster\/provisioning\/docker vagrant@127.0.0.1:<br \/>\n:<br \/>\n:<br \/>\n:<br \/>\n%<br \/>\n<\/code><\/p>\n<h2>VM \u5185\u3067 Chef Provisioning Docker \u3092\u5b9f\u884c<\/h2>\n<p>\u4f5c\u6210\u3057\u305f VM \u306b\u30ed\u30b0\u30a4\u30f3\u3057\u307e\u3059\u3002<\/p>\n<p><code lang=\"bash\"><br \/>\n% vagrant ssh<br \/>\nWelcome to Ubuntu 14.04.1 LTS (GNU\/Linux 3.13.0-24-generic x86_64)<\/code><\/p>\n<p><code lang=\"bash\"><br \/>\n<\/code><\/p>\n<p><code lang=\"bash\"> * Documentation:  https:\/\/help.ubuntu.com\/<br \/>\nLast login: Tue Oct 21 14:52:42 2014 from 10.0.2.2<br \/>\nvagrant@vagrant:~$<br \/>\n<\/code><\/p>\n<p>\u5148\u7a0b VM \u306b scp \u3057\u305f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304c\u3042\u308b\u306e\u3067\u3001\u305d\u3061\u3089\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002<\/p>\n<p><code lang=\"bash\"><br \/>\nvagrant@vagrant:~$ cd docker<br \/>\nvagrant@vagrant:~\/docker$ ls -la<br \/>\ntotal 20<br \/>\ndrwxr-xr-x  7 vagrant vagrant 4096 Jul 10 01:05 .<br \/>\ndrwxr-xr-x  7 vagrant vagrant 4096 Jul 10 00:59 ..<br \/>\n-rw-r--r--  1 vagrant vagrant  323 Jul 10 00:58 Berksfile<br \/>\n-rw-r--r--  1 vagrant vagrant 2033 Jul 10 00:58 Rakefile<br \/>\n-rw-r--r--  1 vagrant vagrant  188 Jul 10 00:58 atlas.json<br \/>\ndrwxr-xr-x  5 vagrant vagrant 4096 Jul 10 00:58 consul-client-config<br \/>\n-rw-r--r--  1 vagrant vagrant 1155 Jul 10 00:58 consul-client.rb<br \/>\n-rw-r--r--  1 vagrant vagrant 1004 Jul 10 00:58 consul-server.rb<br \/>\nvagrant@vagrant:~\/docker$<br \/>\n<\/code><\/p>\n<p>\u3053\u3053\u3067\u306f <a href=\"https:\/\/github.com\/chef\/chef-provisioning-docker\">chef-provisioning-docker<\/a> \u3092\u7528\u3044\u3066\u3001Docker \u793e\u306e\u516c\u5f0f\u30ec\u30dd\u30b8\u30c8\u30ea\u306e <a href=\"https:\/\/registry.hub.docker.com\/_\/ubuntu\/\">ubuntu:14.04<\/a> \u30a4\u30e1\u30fc\u30b8\u304b\u3089 Consul \u7528\u30a4\u30e1\u30fc\u30b8\u3092\u4f5c\u6210\u3057\u3001\u305d\u308c\u3092\u57fa\u306b 7\u3064 Consul \u7528\u30b3\u30f3\u30c6\u30ca\u3092\u8d77\u52d5\u3057\u307e\u3059\u3002\u305d\u306e\u3046\u3061 3\u3064\u306f Consul Server \u7528\u3001\u5225\u306e 4\u3064\u306f Consul Client \u7528\u3067\u3001\u8d77\u52d5\u3057\u305f\u30b3\u30f3\u30c6\u30ca\u306f\u81ea\u52d5\u7684\u306b\u30af\u30e9\u30b9\u30bf\u3092\u69cb\u6210\u3057\u307e\u3059\u3002<\/p>\n<p>Consul \u30af\u30e9\u30b9\u30bf\u306e\u69cb\u6210\u306b\u306f <a href=\"https:\/\/atlas.hashicorp.com\/\">Atlas<\/a> \u306e Auto-Join \u3092\u5229\u7528\u3057\u3066\u3044\u307e\u3059\u3002<strong>atlas.json<\/strong> \u306b\u306f Atlas \u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3068 API \u30c8\u30fc\u30af\u30f3\u3092\u8a18\u8f09\u3057\u307e\u3059\u3002Atlas \u3092\u7528\u3044\u305f Consul \u30af\u30e9\u30b9\u30bf\u306e\u81ea\u52d5\u69cb\u6210\u306b\u3064\u3044\u3066\u306e\u8a73\u7d30\u306f\u300c<a href=\"\/lab\/10353\">Consul\u30b5\u30fc\u30d0\u30af\u30e9\u30b9\u30bf\u69cb\u6210\u624b\u9806\u306e\u6b74\u53f2<\/a>\u300d\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>\u306a\u304a\u3001\u3053\u306e <a href=\"https:\/\/github.com\/cl-lab-k\/chef-consul-docker-cluster\/tree\/sample_blog\/provisioning\/docker\">chef-consul-docker-cluster\/provisioning\/docker<\/a> \u306f VM \u5185\u3067\u306a\u304f\u3068\u3082\u5b9f\u6a5f\u4e0a\u3067\u5b9f\u884c\u304c\u53ef\u80fd\u3067\u3059\u306e\u3067\u3001\u8208\u5473\u304c\u3042\u308c\u3070\u5404\u81ea\u8a66\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>\u3053\u3061\u3089\u3082\u4f5c\u696d\u306f <strong>rake<\/strong> \u30bf\u30b9\u30af\u3068\u3057\u3066\u5b9a\u7fa9\u3057\u3066\u3042\u308a\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u3053\u306e VM \u306b\u306f Ubuntu \u516c\u5f0f\u306e rake \u30d1\u30c3\u30b1\u30fc\u30b8\u304c\u5165\u3063\u3066\u3044\u306a\u3044\u305f\u3081\u3001\u4ee3\u308f\u308a\u306b chef-dk \u540c\u68b1\u306e <strong>\/opt\/chefdk\/embedded\/bin\/rake<\/strong> \u3092\u5b9f\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p><code lang=\"bash\"><br \/>\nvagrant@vagrant:~\/docker$ \/opt\/chefdk\/embedded\/bin\/rake<br \/>\nberks vendor cookbooks<br \/>\nResolving cookbook dependencies...<br \/>\nFetching 'consul' from https:\/\/github.com\/johnbellone\/consul-cookbook.git (at 10d582a)<br \/>\nFetching 'consul-client-config' from source at consul-client-config<br \/>\nFetching cookbook index from https:\/\/supermarket.chef.io...<br \/>\nInstalling 7-zip (1.0.2)<br \/>\nInstalling apt (2.7.0)<br \/>\nInstalling ark (0.9.0)<br \/>\nInstalling bluepill (2.3.1)<br \/>\nInstalling build-essential (2.2.3)<br \/>\nInstalling chef-provisioning (0.1.2)<br \/>\nInstalling chef_handler (1.2.0)<br \/>\nUsing consul (0.10.0) from https:\/\/github.com\/johnbellone\/consul-cookbook.git (at 10d582a)<br \/>\nUsing consul-client-config (0.1.0) from source at consul-client-config<br \/>\nInstalling consul-template (0.8.0)<br \/>\nInstalling golang (1.5.1)<br \/>\nInstalling libarchive (0.4.4)<br \/>\nInstalling nginx (2.7.6)<br \/>\nInstalling ohai (2.0.1)<br \/>\nInstalling packagecloud (0.0.19)<br \/>\nInstalling python (1.4.6)<br \/>\nInstalling rsyslog (2.0.0)<br \/>\nInstalling runit (1.7.2)<br \/>\nInstalling supervisor (0.4.12)<br \/>\nInstalling windows (1.37.0)<br \/>\nInstalling yum (3.6.1)<br \/>\nInstalling yum-epel (0.6.2)<br \/>\nInstalling yum-repoforge (0.5.3)<br \/>\n:<br \/>\n:<br \/>\n:<br \/>\n<\/code><\/p>\n<p>\u307e\u305a <a href=\"http:\/\/berkshelf.com\/\">Berkshelf<\/a> \u3092\u4f7f\u3063\u3066\u3001\u5fc5\u8981\u306a <a href=\"https:\/\/supermarket.chef.io\/cookbooks\/consul\">consul<\/a> Cookbook\u3001<a href=\"https:\/\/supermarket.chef.io\/cookbooks\/nginx\">nginx<\/a> Cookbook\u3001<a href=\"https:\/\/supermarket.chef.io\/cookbooks\/supervisor\">supervisor<\/a> Cookbook \u306e\u53d6\u5f97\u3092\u884c\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n<p><code lang=\"bash\"><br \/>\nCHEF_DRIVER=docker chef-client -z consul-server.rb<br \/>\n[2015-07-10T00:59:36+00:00] WARN: No config file found or specified on command line, using command line options.<br \/>\nStarting Chef Client, version 12.3.0<br \/>\nresolving cookbooks for run list: []<br \/>\nSynchronizing Cookbooks:<br \/>\nCompiling Cookbooks...<br \/>\n[2015-07-10T00:59:37+00:00] WARN: Node vagrant.vm has an empty run list.<br \/>\nConverging 4 resources<br \/>\nRecipe: @recipe_files::\/home\/vagrant\/docker\/consul-server.rb<br \/>\n* machine_image[consul-server] action create<br \/>\n- create node consul-server at chefzero:\/\/localhost:8889<br \/>\n:<br \/>\n:<br \/>\n:<br \/>\n<\/code><\/p>\n<p>chef-provisioning-docker \u3092\u5229\u7528\u3057\u3066\u3001Consul Server \u7528\u306e Docker \u30a4\u30e1\u30fc\u30b8\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u3053\u306e\u969b\u3001Cookbook \u306e\u9069\u7528\u306b\u306f Chef-Zero \u3092\u7528\u3044\u3066\u3044\u307e\u3059\u3002<\/p>\n<p><code lang=\"bash\"><br \/>\n* machine[consul101] action converge<br \/>\n- create node consul101 at chefzero:\/\/localhost:8889<br \/>\n:<br \/>\n:<br \/>\n:<br \/>\n* machine[consul102] action converge<br \/>\n- create node consul102 at chefzero:\/\/localhost:8889<br \/>\n:<br \/>\n:<br \/>\n:<br \/>\n* machine[consul103] action converge<br \/>\n- create node consul103 at chefzero:\/\/localhost:8889<br \/>\n:<br \/>\n:<br \/>\n:<br \/>\nRunning handlers:<br \/>\nRunning handlers complete<br \/>\nChef Client finished, 4\/4 resources updated in 346.418441609 seconds<br \/>\n<\/code><\/p>\n<p>\u5f15\u304d\u7d9a\u304d\u3001chef-provisioning-docker \u3092\u5229\u7528\u3057\u3066\u3001Consul Server \u7528\u306e Docker \u30a4\u30e1\u30fc\u30b8\u304b\u3089\u30b3\u30f3\u30c6\u30ca\u3092\u4f5c\u6210\u3057\u3066\u3044\u304d\u307e\u3059\u3002\u3053\u3053\u3067\u3082 Chef-Zero \u3092\u6d3b\u7528\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>Consul Client \u7528\u306e Docker \u30b3\u30f3\u30c6\u30ca\u306f <a href=\"https:\/\/docs.docker.com\/articles\/using_supervisord\/\">Using Supervisor with Docker<\/a> \u3092\u53c2\u8003\u306b\u3001<a href=\"http:\/\/supervisord.org\/\">Supervisor<\/a> \u3092\u8d77\u52d5\u3057\u3001\u305d\u306e\u7ba1\u7406\u4e0b\u306b\u8907\u6570\u30b5\u30fc\u30d3\u30b9\u3092\u6301\u3064\u5f62\u3068\u3057\u307e\u3059\u3002supervisord \u306f <a href=\"https:\/\/github.com\/cl-lab-k\/chef-consul-docker-cluster\/blob\/sample_blog\/provisioning\/docker\/consul-client.rb\">provisioning\/docker\/consul-client.rb<\/a> \u306b\u3042\u308b\u901a\u308a <a href=\"http:\/\/supervisord.org\/running.html#supervisord-command-line-options\">--nodaemon<\/a> \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4ed8\u4e0e\u3057\u3066\u30d5\u30a9\u30a2\u30b0\u30e9\u30a6\u30f3\u30c9\u3067\u8d77\u52d5\u3057\u3001nginx \u306f <a href=\"https:\/\/github.com\/cl-lab-k\/chef-consul-docker-cluster\/blob\/sample_blog\/provisioning\/docker\/consul-client-config\/recipes\/default.rb\">provisioning\/docker\/consul-client-config\/recipes\/default.rb<\/a> \u306b\u3042\u308b\u901a\u308a <a href=\"http:\/\/nginx.org\/en\/docs\/ngx_core_module.html#daemon\">-g \"daemon off;\"<\/a> \u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4ed8\u4e0e\u3057\u3066\u30d5\u30a9\u30a2\u30b0\u30e9\u30a6\u30f3\u30c9\u3067\u8d77\u52d5\u3057\u307e\u3059\u3002<\/p>\n<p>4\u3064\u306e Consul Client \u7528\u306e Docker \u30b3\u30f3\u30c6\u30ca\u306e\u3046\u3061 3\u3064\u306f supervisor + Consul Client + Nginx \u3067\u3001\u3082\u3046 1\u3064\u306f <a href=\"https:\/\/hashicorp.com\/blog\/introducing-consul-template.html\">Consul Template<\/a> \u3092\u8d77\u52d5\u3057\u3066\u3044\u307e\u3059\u3002Consul Template \u3068\u306f\u3001Consul \u306e\u30a4\u30d9\u30f3\u30c8\u3092\u53d7\u3051\u3066\u30d5\u30a1\u30a4\u30eb\u306e\u66f4\u65b0\u3068\u30b3\u30de\u30f3\u30c9\u306e\u5b9f\u884c\u3092\u884c\u3046\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u30d7\u30ed\u30b0\u30e9\u30e0\u3067\u3059\u3002<\/p>\n<p><!-- chef-consul-docker-cluster.png \/\/--><a href=\"\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2015\/07\/chef-consul-docker-cluster.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-10503\" src=\"\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2015\/07\/chef-consul-docker-cluster.png\" alt=\"chef-consul-docker-cluster\" width=\"502\" height=\"243\" srcset=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2015\/07\/chef-consul-docker-cluster.png 502w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2015\/07\/chef-consul-docker-cluster-360x174.png 360w, https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2015\/07\/chef-consul-docker-cluster-196x95.png 196w\" sizes=\"auto, (max-width: 502px) 100vw, 502px\" \/><\/a><\/p>\n<p>\u3053\u3053\u3067\u306f 3\u3064\u306e\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u3078\u306e\u632f\u308a\u5206\u3051\u3092\u884c\u3046\u30ed\u30fc\u30c9\u30d0\u30e9\u30f3\u30b5\u3092\u8a2d\u7f6e\u3059\u308b\u3068\u3057\u307e\u3059\u3002\u30ed\u30fc\u30c9\u30d0\u30e9\u30f3\u30b5\u306f Consul \u3092\u901a\u3057\u3066\u5404\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u306e\u6b7b\u6d3b\u76e3\u8996\u3092\u884c\u3044\u3001Consul Template \u3092\u7528\u3044\u3066\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u66f8\u304d\u63db\u3048\u3068\u30b5\u30fc\u30d3\u30b9\u306e\u518d\u8d77\u52d5\u3092\u884c\u3046\u3088\u3046\u306b\u3057\u3066\u3044\u307e\u3059\u3002Consul Template \u306f\u3001\u5f8c\u8ff0\u3059\u308b\u300c<strong>lb.ctmpl<\/strong>\u300d\u3068\u3044\u3046\u30d5\u30a1\u30a4\u30eb\u3092\u4f7f\u3063\u3066\u30ed\u30fc\u30c9\u30d0\u30e9\u30f3\u30b7\u30f3\u30b0\u5148\u306e IP \u30a2\u30c9\u30ec\u30b9\u306e\u60c5\u5831\u3092\u66f8\u304d\u63db\u3048\u307e\u3059\u3002<\/p>\n<h2>Docker \u30b3\u30f3\u30c6\u30ca\u306e\u78ba\u8a8d<\/h2>\n<p>\u8d77\u52d5\u3057\u305f Docker \u30b3\u30f3\u30c6\u30ca\u306e\u72b6\u614b\u3092\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n<p><code lang=\"bash\"><br \/>\nvagrant@vagrant:~\/docker$ docker ps<br \/>\nCONTAINER ID        IMAGE                                                                     COMMAND                CREATED             STATUS              PORTS               NAMES<br \/>\na8e92ba7c3f3        db88494d511925db26ed56f9aaf647f3e44eccac98dea5f9a69583b1d00ed3d3:latest   \"\/usr\/local\/bin\/supe   2 hours ago         Up 2 hours                              consul119<br \/>\ncc83ba6cef94        f28aa99c791d71900a7a2b9228d7272bd669694d7a148950688e113ea99b0dd3:latest   \"\/usr\/local\/bin\/supe   2 hours ago         Up 2 hours                              consul113<br \/>\nd1080ac64af5        060d5ac515ab7a3b2aad5bb6d52f42a72c269270fe21729a2872d26dfd556613:latest   \"\/usr\/local\/bin\/supe   2 hours ago         Up 2 hours                              consul112<br \/>\n8635f1f53cb2        3e220e8ee57fce19140de264863ed5608fc9331b8926c828f27b5fb041b73d64:latest   \"\/usr\/local\/bin\/supe   2 hours ago         Up 2 hours                              consul111<br \/>\n495dca2561e9        861dd3d598149ce30f396d2beb11cc32d3166936e6284e93238333a4d252f7e5:latest   \"\/usr\/local\/bin\/cons   2 hours ago         Up 2 hours                              consul103<br \/>\n0df300a44541        5bba85c070f97a65322f2cb8670095b72e7ba2ff4071f56e60eb19dd12ebeb06:latest   \"\/usr\/local\/bin\/cons   2 hours ago         Up 2 hours                              consul102<br \/>\n603808f3229e        da15b948e41a58445caaeb3c182065571d81d34948e2681bc330964d908996a0:latest   \"\/usr\/local\/bin\/cons   2 hours ago         Up 2 hours                              consul101<br \/>\nvagrant@vagrant:~\/docker$<br \/>\n<\/code><\/p>\n<p><code lang=\"bash\"><br \/>\nvagrant@vagrant:~\/docker$ ps auxwwwf<br \/>\n:<br \/>\nroot      4044  0.1  0.2 852812 24456 ?        Ssl  00:58   0:16 \/usr\/bin\/docker -d --ip-forward=true --log-level=info --tls=true<br \/>\nroot     10944  0.6  0.2 33903548 19740 ?      Ssl  01:05   0:51  \\_ \/usr\/local\/bin\/consul agent -config-dir \/etc\/consul.d<br \/>\nroot     11471  1.3  0.2 34043904 20184 ?      Ssl  01:05   1:49  \\_ \/usr\/local\/bin\/consul agent -config-dir \/etc\/consul.d<br \/>\nroot     12025  0.6  0.2 33904636 17732 ?      Ssl  01:05   0:51  \\_ \/usr\/local\/bin\/consul agent -config-dir \/etc\/consul.d<br \/>\nroot     20379  0.0  0.1  57828 13388 ?        Ss   01:11   0:01  \\_ \/usr\/bin\/python \/usr\/local\/bin\/supervisord --nodaemon<br \/>\nroot     20609  0.2  0.1 287412 15276 ?        Sl   01:11   0:22  |   \\_ \/usr\/local\/bin\/consul agent -config-dir \/etc\/consul.d<br \/>\nroot     20610  0.0  0.0  85876  4152 ?        S    01:11   0:00  |   \\_ nginx: master process \/usr\/sbin\/nginx -g daemon off;<br \/>\nwww-data 20616  0.0  0.0  86216  2280 ?        S    01:11   0:00  |       \\_ nginx: worker process<br \/>\nroot     20937  0.0  0.1  57828 13392 ?        Ss   01:11   0:01  \\_ \/usr\/bin\/python \/usr\/local\/bin\/supervisord --nodaemon<br \/>\nroot     21125  0.2  0.1 352948 13208 ?        Sl   01:11   0:21  |   \\_ \/usr\/local\/bin\/consul agent -config-dir \/etc\/consul.d<br \/>\nroot     21126  0.0  0.0  85876  4148 ?        S    01:11   0:00  |   \\_ nginx: master process \/usr\/sbin\/nginx -g daemon off;<br \/>\nwww-data 21132  0.0  0.0  86216  2276 ?        S    01:11   0:00  |       \\_ nginx: worker process<br \/>\nroot     21483  0.0  0.1  57828 13392 ?        Ss   01:12   0:01  \\_ \/usr\/bin\/python \/usr\/local\/bin\/supervisord --nodaemon<br \/>\nroot     21675  0.2  0.1 352948 15188 ?        Sl   01:12   0:21  |   \\_ \/usr\/local\/bin\/consul agent -config-dir \/etc\/consul.d<br \/>\nroot     21676  0.0  0.0  85876  4152 ?        S    01:12   0:00  |   \\_ nginx: master process \/usr\/sbin\/nginx -g daemon off;<br \/>\nwww-data 21683  0.0  0.0  86216  2276 ?        S    01:12   0:00  |       \\_ nginx: worker process<br \/>\nroot     22507  0.0  0.1  57848 13408 ?        Ss   01:13   0:01  \\_ \/usr\/bin\/python \/usr\/local\/bin\/supervisord --nodaemon<br \/>\nroot     22536  0.0  0.0   8988  3796 ?        Sl   01:13   0:00      \\_ \/usr\/local\/bin\/consul-template -config \/etc\/consul-template.d<br \/>\nroot     22539  0.2  0.1 344752 15556 ?        Sl   01:13   0:19      \\_ \/usr\/local\/bin\/consul agent -config-dir \/etc\/consul.d<br \/>\nroot     22540  0.0  0.0  85876  4148 ?        S    01:13   0:00      \\_ nginx: master process \/usr\/sbin\/nginx -g daemon off;<br \/>\nwww-data 22547  0.0  0.0  86232  2284 ?        S    01:13   0:00          \\_ nginx: worker process<br \/>\n:<br \/>\nvagrant@vagrant:~\/docker$<br \/>\n<\/code><\/p>\n<p>\u3053\u306e\u3088\u3046\u306b\u3001Consul \u7528\u30b3\u30f3\u30c6\u30ca\u304c 7\u3064\u3068\u6240\u5c5e\u3059\u308b\u5404\u7a2e\u30b5\u30fc\u30d3\u30b9\u304c\u8d77\u52d5\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u30b3\u30f3\u30c6\u30ca\u5185\u3067 <strong>consul members<\/strong> \u3092\u884c\u3046 rake \u30bf\u30b9\u30af\u3092\u7528\u610f\u3057\u3066\u3042\u308b\u306e\u3067\u3001\u5b9f\u884c\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n<p><code lang=\"bash\"><br \/>\nvagrant@vagrant:~\/docker$ \/opt\/chefdk\/embedded\/bin\/rake members<br \/>\n:<br \/>\n:<br \/>\n:<br \/>\ndocker exec 603808f3229e consul members<br \/>\nNode          Address           Status  Type    Build  Protocol  DC<br \/>\n495dca2561e9  172.17.0.37:8301  alive   server  0.5.2  2         dc1<br \/>\n8635f1f53cb2  172.17.0.58:8301  alive   client  0.5.2  2         dc1<br \/>\nd1080ac64af5  172.17.0.66:8301  alive   client  0.5.2  2         dc1<br \/>\ncc83ba6cef94  172.17.0.74:8301  alive   client  0.5.2  2         dc1<br \/>\na8e92ba7c3f3  172.17.0.82:8301  alive   client  0.5.2  2         dc1<br \/>\n603808f3229e  172.17.0.21:8301  alive   server  0.5.2  2         dc1<br \/>\n0df300a44541  172.17.0.29:8301  alive   server  0.5.2  2         dc1<br \/>\nvagrant@vagrant:~\/docker$<br \/>\n<\/code><\/p>\n<p>\u3053\u306e\u3088\u3046\u306b Consul \u30af\u30e9\u30b9\u30bf\u304c\u69cb\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u30ed\u30fc\u30c9\u30d0\u30e9\u30f3\u30b5\u306e\u72b6\u614b\u3092\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n<p><code lang=\"bash\"><br \/>\nvagrant@vagrant:~\/docker$ docker exec a8e92ba7c3f3 cat \/etc\/nginx\/sites-enabled\/default<br \/>\nupstream lb_units {<\/code><\/p>\n<p><code lang=\"bash\"><code lang=\"bash\"><\/code><\/code><\/p>\n<p>server 172.17.0.58;<\/p>\n<p><code lang=\"bash\"><code lang=\"bash\"><\/code><\/code><\/p>\n<p>server 172.17.0.74;<\/p>\n<p><code lang=\"bash\"><code lang=\"bash\"><\/code><\/code><\/p>\n<p>server 172.17.0.66;<\/p>\n<p><code lang=\"bash\"><code lang=\"bash\"><\/code><\/code><\/p>\n<p>}<\/p>\n<p><code lang=\"bash\"><br \/>\n<\/code><\/p>\n<p><code lang=\"bash\">server {<br \/>\nlisten 80;<br \/>\nserver_name 4670d624aee6;<br \/>\nlocation \/ {<br \/>\nproxy_pass http:\/\/lb_units;<br \/>\nproxy_set_header Host $http_host;<br \/>\n}<br \/>\n}<br \/>\nvagrant@vagrant:~\/docker$<br \/>\n<\/code><\/p>\n<p><a href=\"https:\/\/github.com\/cl-lab-k\/chef-consul-docker-cluster\/blob\/sample_blog\/provisioning\/docker\/consul-client-config\/templates\/lb.ctmpl.erb\">provisioning\/docker\/consul-client-config\/templates\/lb.ctmpl.erb<\/a> \u306e <strong>server_name<\/strong> \u3092 Chef \u304c\u7f6e\u304d\u63db\u3048\u3066\u751f\u6210\u3057\u305f lb.ctmpl \u306e\u30ed\u30fc\u30c9\u30d0\u30e9\u30f3\u30b7\u30f3\u30b0\u5148\u306e IP \u30a2\u30c9\u30ec\u30b9\u3092 Consul Template \u304c\u5c55\u958b\u3057\u3001upstream \u3068\u3059\u308b\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u304c 3\u53f0\u767b\u9332\u3055\u308c\u3066\u3044\u307e\u3059\u3002Consul \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u66f8\u5f0f\u306f <a href=\"https:\/\/hashicorp.com\/blog\/introducing-consul-template.html\">Introducing Consul Template<\/a> \u3084 <a href=\"https:\/\/github.com\/hashicorp\/consul-template\">hashicorp\/consul-template<\/a> \u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>\u5b9f\u969b\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u307f\u307e\u3059\u3002\u4eca\u56de\u306f\u30dd\u30fc\u30c8\u3092\u5916\u306b\u51fa\u3057\u3066\u3044\u306a\u3044\u306e\u3067\u3001\u30b3\u30f3\u30c6\u30ca\u5185\u3067\u78ba\u8a8d\u3057\u307e\u3059\u3002<\/p>\n<p><code lang=\"html\"><br \/>\nvagrant@vagrant:~\/docker$ docker exec a8e92ba7c3f3 curl http:\/\/127.0.0.1\/ 2&gt; \/dev\/null<br \/>\n<\/code><\/p>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<h1>2646f38ba78b<\/h1>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<p>vagrant@vagrant:~\/docker$ docker exec a8e92ba7c3f3 curl http:\/\/127.0.0.1\/ 2&gt; \/dev\/null<\/p>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<h1>3c9f3015715d<\/h1>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<p>vagrant@vagrant:~\/docker$ docker exec a8e92ba7c3f3 curl http:\/\/127.0.0.1\/ 2&gt; \/dev\/null<\/p>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<h1>b8f0aed7b0cd<\/h1>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<p>vagrant@vagrant:~\/docker$ docker exec a8e92ba7c3f3 curl http:\/\/127.0.0.1\/ 2&gt; \/dev\/null<\/p>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<h1>2646f38ba78b<\/h1>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<p>vagrant@vagrant:~\/docker$ docker exec a8e92ba7c3f3 curl http:\/\/127.0.0.1\/ 2&gt; \/dev\/null<\/p>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<h1>3c9f3015715d<\/h1>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<p>vagrant@vagrant:~\/docker$ docker exec a8e92ba7c3f3 curl http:\/\/127.0.0.1\/ 2&gt; \/dev\/null<\/p>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<h1>b8f0aed7b0cd<\/h1>\n<p><code lang=\"html\"><br \/>\n<\/code><\/p>\n<p><code lang=\"html\"><br \/>\nvagrant@vagrant:~\/docker$<br \/>\n<\/code><\/p>\n<p>\u3053\u306e\u3088\u3046\u306b\u5404\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u306b\u632f\u308a\u5206\u3051\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3059\u3002<\/p>\n<h2>Consul Client \u30b3\u30f3\u30c6\u30ca\u306e\u505c\u6b62\u30fb\u8d77\u52d5<\/h2>\n<p>\u624b\u52d5\u3067\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u7528\u306e Consul Client \u30b3\u30f3\u30c6\u30ca\u3092 1\u3064\u505c\u6b62\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<strong>docker stop<\/strong> \u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u3044\u307e\u3059\u3002<\/p>\n<p><code lang=\"bash\"><br \/>\nvagrant@vagrant:~\/docker$ docker stop cc83ba6cef94<br \/>\ncc83ba6cef94<br \/>\nvagrant@vagrant:~\/docker$<br \/>\n<\/code><\/p>\n<p><strong>rake members<\/strong> \u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n<p><code lang=\"bash\"><br \/>\nvagrant@vagrant:~\/docker$ rake members<br \/>\n:<br \/>\ndocker exec 603808f3229e consul members<br \/>\nNode          Address           Status  Type    Build  Protocol  DC<br \/>\na8e92ba7c3f3  172.17.0.82:8301  alive   client  0.5.2  2         dc1<br \/>\n603808f3229e  172.17.0.21:8301  alive   server  0.5.2  2         dc1<br \/>\n0df300a44541  172.17.0.29:8301  alive   server  0.5.2  2         dc1<br \/>\n495dca2561e9  172.17.0.37:8301  alive   server  0.5.2  2         dc1<br \/>\n8635f1f53cb2  172.17.0.58:8301  alive   client  0.5.2  2         dc1<br \/>\nd1080ac64af5  172.17.0.66:8301  alive   client  0.5.2  2         dc1<br \/>\ncc83ba6cef94  172.17.0.74:8301  failed  client  0.5.2  2         dc1<br \/>\nvagrant@vagrant:~\/docker$<br \/>\n<\/code><\/p>\n<p>\u505c\u6b62\u3057\u305f\u30b3\u30f3\u30c6\u30ca\u306e Status \u304c <strong>failed<\/strong> \u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u30ed\u30fc\u30c9\u30d0\u30e9\u30f3\u30b5\u306e\u72b6\u614b\u3092\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n<p><code lang=\"bash\"><br \/>\nvagrant@vagrant:~\/docker$ docker exec a8e92ba7c3f3 cat \/etc\/nginx\/sites-enabled\/default<br \/>\nupstream lb_units {<\/code><\/p>\n<p><code lang=\"bash\"><code lang=\"bash\"><\/code><\/code><\/p>\n<p>server 172.17.0.58;<\/p>\n<p><code lang=\"bash\"><code lang=\"bash\"><\/code><\/code><\/p>\n<p>server 172.17.0.66;<\/p>\n<p><code lang=\"bash\"><code lang=\"bash\"><\/code><\/code><\/p>\n<p>}<\/p>\n<p><code lang=\"bash\"><br \/>\n<\/code><\/p>\n<p><code lang=\"bash\">server {<br \/>\nlisten 80;<br \/>\nserver_name 4670d624aee6;<br \/>\nlocation \/ {<br \/>\nproxy_pass http:\/\/lb_units;<br \/>\nproxy_set_header Host $http_host;<br \/>\n}<br \/>\n}<br \/>\nvagrant@vagrant:~\/docker$<br \/>\n<\/code><\/p>\n<p>\u505c\u6b62\u3057\u305f\u3076\u3093 1\u3064 upstream \u304c\u6e1b\u3063\u3066\u3044\u307e\u3059\u3002\u5b9f\u969b\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n<p><code lang=\"html\"><br \/>\nvagrant@vagrant:~\/docker$ docker exec a8e92ba7c3f3 curl http:\/\/127.0.0.1\/ 2&gt; \/dev\/null<br \/>\n<\/code><\/p>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<h1>3c9f3015715d<\/h1>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<p>vagrant@vagrant:~\/docker$ docker exec a8e92ba7c3f3 curl http:\/\/127.0.0.1\/ 2&gt; \/dev\/null<\/p>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<h1>b8f0aed7b0cd<\/h1>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<p>vagrant@vagrant:~\/docker$ docker exec a8e92ba7c3f3 curl http:\/\/127.0.0.1\/ 2&gt; \/dev\/null<\/p>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<h1>3c9f3015715d<\/h1>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<p>vagrant@vagrant:~\/docker$ docker exec a8e92ba7c3f3 curl http:\/\/127.0.0.1\/ 2&gt; \/dev\/null<\/p>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<h1>b8f0aed7b0cd<\/h1>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<p>vagrant@vagrant:~\/docker$ docker exec a8e92ba7c3f3 curl http:\/\/127.0.0.1\/ 2&gt; \/dev\/null<\/p>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<h1>3c9f3015715d<\/h1>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<p>vagrant@vagrant:~\/docker$ docker exec a8e92ba7c3f3 curl http:\/\/127.0.0.1\/ 2&gt; \/dev\/null<\/p>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<h1>b8f0aed7b0cd<\/h1>\n<p><code lang=\"html\"><br \/>\n<\/code><\/p>\n<p><code lang=\"html\"><br \/>\nvagrant@vagrant:~\/docker$<br \/>\n<\/code><\/p>\n<p>\u66f8\u304d\u63db\u3048\u3089\u308c\u305f\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u53cd\u6620\u3059\u308b\u305f\u3081\u306e\u30b5\u30fc\u30d3\u30b9\u306e\u518d\u8d77\u52d5\u304c\u81ea\u52d5\u7684\u306b\u884c\u308f\u308c\u3066\u3044\u3066\u3001\u632f\u308a\u5206\u3051\u5148\u304c 2\u3064\u306b\u306a\u3063\u3066\u3044\u308b\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3059\u3002<\/p>\n<p>\u3067\u306f\u3001\u505c\u6b62\u3057\u305f Consul Client \u30b3\u30f3\u30c6\u30ca\u3092 <strong>docker start<\/strong> \u30b3\u30de\u30f3\u30c9\u3067\u8d77\u52d5\u3057\u307e\u3059\u3002<\/p>\n<p><code lang=\"bash\"><br \/>\nvagrant@vagrant:~\/docker$ docker start cc83ba6cef94<br \/>\ncc83ba6cef94<br \/>\nvagrant@vagrant:~\/docker$<br \/>\n<\/code><\/p>\n<p>\u540c\u69d8\u306e\u624b\u9806\u3067\u78ba\u8a8d\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n<p><code lang=\"bash\"><br \/>\nvagrant@vagrant:~\/docker$ rake members<br \/>\n:<br \/>\ndocker exec 603808f3229e consul members<br \/>\nNode          Address           Status  Type    Build  Protocol  DC<br \/>\na8e92ba7c3f3  172.17.0.82:8301  alive   client  0.5.2  2         dc1<br \/>\n603808f3229e  172.17.0.21:8301  alive   server  0.5.2  2         dc1<br \/>\n0df300a44541  172.17.0.29:8301  alive   server  0.5.2  2         dc1<br \/>\n495dca2561e9  172.17.0.37:8301  alive   server  0.5.2  2         dc1<br \/>\n8635f1f53cb2  172.17.0.58:8301  alive   client  0.5.2  2         dc1<br \/>\nd1080ac64af5  172.17.0.66:8301  alive   client  0.5.2  2         dc1<br \/>\ncc83ba6cef94  172.17.0.83:8301  alive   client  0.5.2  2         dc1<br \/>\nvagrant@vagrant:~\/docker$<br \/>\n<\/code><\/p>\n<p><code lang=\"bash\"><br \/>\nvagrant@vagrant:~\/docker$ docker exec a8e92ba7c3f3 cat \/etc\/nginx\/sites-enabled\/default<br \/>\nupstream lb_units {<\/code><\/p>\n<p><code lang=\"bash\"><code lang=\"bash\"><\/code><\/code><\/p>\n<p>server 172.17.0.58;<\/p>\n<p><code lang=\"bash\"><code lang=\"bash\"><\/code><\/code><\/p>\n<p>server 172.17.0.83;<\/p>\n<p><code lang=\"bash\"><code lang=\"bash\"><\/code><\/code><\/p>\n<p>server 172.17.0.66;<\/p>\n<p><code lang=\"bash\"><code lang=\"bash\"><\/code><\/code><\/p>\n<p>}<\/p>\n<p><code lang=\"bash\"><br \/>\n<\/code><\/p>\n<p><code lang=\"bash\">server {<br \/>\nlisten 80;<br \/>\nserver_name 4670d624aee6;<br \/>\nlocation \/ {<br \/>\nproxy_pass http:\/\/lb_units;<br \/>\nproxy_set_header Host $http_host;<br \/>\n}<br \/>\n}<br \/>\nvagrant@vagrant:~\/docker$<br \/>\n<\/code><\/p>\n<p><code lang=\"html\"><br \/>\nvagrant@vagrant:~\/docker$ docker exec a8e92ba7c3f3 curl http:\/\/127.0.0.1\/ 2&gt; \/dev\/null<br \/>\n<\/code><\/p>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<h1>b8f0aed7b0cd<\/h1>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<p>vagrant@vagrant:~\/docker$ docker exec a8e92ba7c3f3 curl http:\/\/127.0.0.1\/ 2&gt; \/dev\/null<\/p>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<h1>2646f38ba78b<\/h1>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<p>vagrant@vagrant:~\/docker$ docker exec a8e92ba7c3f3 curl http:\/\/127.0.0.1\/ 2&gt; \/dev\/null<\/p>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<h1>3c9f3015715d<\/h1>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<p>vagrant@vagrant:~\/docker$ docker exec a8e92ba7c3f3 curl http:\/\/127.0.0.1\/ 2&gt; \/dev\/null<\/p>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<h1>b8f0aed7b0cd<\/h1>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<p>vagrant@vagrant:~\/docker$ docker exec a8e92ba7c3f3 curl http:\/\/127.0.0.1\/ 2&gt; \/dev\/null<\/p>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<h1>2646f38ba78b<\/h1>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<p>vagrant@vagrant:~\/docker$ docker exec a8e92ba7c3f3 curl http:\/\/127.0.0.1\/ 2&gt; \/dev\/null<\/p>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<h1>3c9f3015715d<\/h1>\n<p><code lang=\"html\"><br \/>\n<\/code><\/p>\n<p><code lang=\"html\"><br \/>\nvagrant@vagrant:~\/docker$<br \/>\n<\/code><\/p>\n<p>\u518d\u3073 3\u3064\u306e upstream \u306b\u632f\u308a\u5206\u3051\u3089\u308c\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002<\/p>\n<h2>Nginx \u30b5\u30fc\u30d3\u30b9\u306e\u505c\u6b62\u30fb\u8d77\u52d5<\/h2>\n<p>\u4eca\u5ea6\u306f Consul Client \u30b3\u30f3\u30c6\u30ca\u81ea\u4f53\u3092\u505c\u6b62\u3059\u308b\u306e\u3067\u306f\u306a\u304f\u3001\u30b3\u30f3\u30c6\u30ca\u5185\u306e Nginx \u30b5\u30fc\u30d3\u30b9\u3060\u3051\u3092\u505c\u6b62\u3057\u3066\u307f\u307e\u3059\u3002<br \/>\n<a href=\"https:\/\/github.com\/cl-lab-k\/chef-consul-docker-cluster\/blob\/sample_blog\/provisioning\/docker\/consul-client-config\/files\/web.json\">provisioning\/docker\/consul-client-config\/files\/web.json<\/a> \u306b\u3042\u308b\u901a\u308a\u3001Consul Client \u306f Nginx \u30b5\u30fc\u30d3\u30b9\u306e\u76e3\u8996\u3092\u884c\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u307e\u305a\u30b3\u30f3\u30c6\u30ca\u5185\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n<p><code lang=\"bash\"><br \/>\nvagrant@vagrant:~\/docker$ docker exec cc83ba6cef94 supervisorctl status<br \/>\nconsul_client                    RUNNING   pid 7, uptime 0:08:19<br \/>\nnginx_server                     RUNNING   pid 8, uptime 0:08:19<br \/>\nvagrant@vagrant:~\/docker$<br \/>\n<\/code><\/p>\n<p><strong>kill<\/strong> \u30b3\u30de\u30f3\u30c9\u3067\u30b5\u30fc\u30d3\u30b9\u3092 kill \u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u304c supervisord \u304c\u3059\u3050\u306b\u8d77\u52d5\u3057\u76f4\u3057\u3066\u3057\u307e\u3046\u306e\u3067\u3001<strong>supervisorctl stop<\/strong> \u3067\u30b5\u30fc\u30d3\u30b9\u3092\u505c\u6b62\u3057\u307e\u3059\u3002<\/p>\n<p><code lang=\"bash\"><br \/>\nvagrant@vagrant:~\/docker$ docker exec cc83ba6cef94 supervisorctl stop nginx_server<br \/>\nnginx_server: stopped<br \/>\nvagrant@vagrant:~\/docker$ <\/code><\/p>\n<p><code lang=\"bash\"><br \/>\n<\/code><\/p>\n<p><code lang=\"bash\">vagrant@vagrant:~\/docker$ docker exec cc83ba6cef94 supervisorctl status<br \/>\nconsul_client                    RUNNING   pid 7, uptime 0:09:18<br \/>\nnginx_server                     STOPPED   Jul 10 03:57 AM<br \/>\nvagrant@vagrant:~\/docker$<br \/>\n<\/code><\/p>\n<p>\u30b5\u30fc\u30d3\u30b9\u3092\u505c\u6b62\u3057\u307e\u3057\u305f\u3002<\/p>\n<p><strong>rake members<\/strong> \u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n<p><code lang=\"bash\"><br \/>\nvagrant@vagrant:~\/docker$ rake members<br \/>\n:<br \/>\ndocker exec 603808f3229e consul members<br \/>\nNode          Address           Status  Type    Build  Protocol  DC<br \/>\na8e92ba7c3f3  172.17.0.82:8301  alive   client  0.5.2  2         dc1<br \/>\n603808f3229e  172.17.0.21:8301  alive   server  0.5.2  2         dc1<br \/>\n0df300a44541  172.17.0.29:8301  alive   server  0.5.2  2         dc1<br \/>\n495dca2561e9  172.17.0.37:8301  alive   server  0.5.2  2         dc1<br \/>\n8635f1f53cb2  172.17.0.58:8301  alive   client  0.5.2  2         dc1<br \/>\nd1080ac64af5  172.17.0.66:8301  alive   client  0.5.2  2         dc1<br \/>\ncc83ba6cef94  172.17.0.84:8301  alive   client  0.5.2  2         dc1<br \/>\nvagrant@vagrant:~\/docker$<br \/>\n<\/code><\/p>\n<p>\u30b3\u30f3\u30c6\u30ca\u81ea\u4f53\u3001\u3042\u308b\u3044\u306f Consul Client \u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3092\u505c\u6b62\u3057\u305f\u308f\u3051\u3067\u306f\u306a\u306e\u3067\u3001Consul \u30af\u30e9\u30b9\u30bf\u5185\u306b\u7559\u307e\u308a\u7d9a\u3051\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u540c\u69d8\u306e\u624b\u9806\u3067\u78ba\u8a8d\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n<p><code lang=\"bash\"><br \/>\nvagrant@vagrant:~\/docker$ docker exec a8e92ba7c3f3 cat \/etc\/nginx\/sites-enabled\/default<br \/>\nupstream lb_units {<\/code><\/p>\n<p><code lang=\"bash\"><code lang=\"bash\"><\/code><\/code><\/p>\n<p>server 172.17.0.58;<\/p>\n<p><code lang=\"bash\"><code lang=\"bash\"><\/code><\/code><\/p>\n<p>server 172.17.0.66;<\/p>\n<p><code lang=\"bash\"><code lang=\"bash\"><\/code><\/code><\/p>\n<p>}<\/p>\n<p><code lang=\"bash\"><br \/>\n<\/code><\/p>\n<p><code lang=\"bash\">server {<br \/>\nlisten 80;<br \/>\nserver_name 4670d624aee6;<br \/>\nlocation \/ {<br \/>\nproxy_pass http:\/\/lb_units;<br \/>\nproxy_set_header Host $http_host;<br \/>\n}<br \/>\n}<br \/>\nvagrant@vagrant:~\/docker$<br \/>\n<\/code><\/p>\n<p><code lang=\"html\"><br \/>\nvagrant@vagrant:~\/docker$ docker exec a8e92ba7c3f3 curl http:\/\/127.0.0.1\/ 2&gt; \/dev\/null<br \/>\n<\/code><\/p>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<h1>b8f0aed7b0cd<\/h1>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<p>vagrant@vagrant:~\/docker$ docker exec a8e92ba7c3f3 curl http:\/\/127.0.0.1\/ 2&gt; \/dev\/null<\/p>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<h1>3c9f3015715d<\/h1>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<p>vagrant@vagrant:~\/docker$ docker exec a8e92ba7c3f3 curl http:\/\/127.0.0.1\/ 2&gt; \/dev\/null<\/p>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<h1>b8f0aed7b0cd<\/h1>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<p>vagrant@vagrant:~\/docker$ docker exec a8e92ba7c3f3 curl http:\/\/127.0.0.1\/ 2&gt; \/dev\/null<\/p>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<h1>3c9f3015715d<\/h1>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<p>vagrant@vagrant:~\/docker$ docker exec a8e92ba7c3f3 curl http:\/\/127.0.0.1\/ 2&gt; \/dev\/null<\/p>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<h1>b8f0aed7b0cd<\/h1>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<p>vagrant@vagrant:~\/docker$ docker exec a8e92ba7c3f3 curl http:\/\/127.0.0.1\/ 2&gt; \/dev\/null<\/p>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<h1>3c9f3015715d<\/h1>\n<p><code lang=\"html\"><br \/>\n<\/code><\/p>\n<p><code lang=\"html\"><br \/>\nvagrant@vagrant:~\/docker$<br \/>\n<\/code><\/p>\n<p>\u3053\u306e\u3088\u3046\u306b Nginx \u30b5\u30fc\u30d3\u30b9\u3092\u505c\u6b62\u3057\u305f\u3089\u30af\u30e9\u30b9\u30bf\u304b\u3089\u5916\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3059\u3002<\/p>\n<p>Nginx \u30b5\u30fc\u30d3\u30b9\u3092\u518d\u958b\u3057\u307e\u3059\u3002<\/p>\n<p><code lang=\"bash\"><br \/>\nvagrant@vagrant:~\/docker$ docker exec cc83ba6cef94 supervisorctl start nginx_server<br \/>\nnginx_server: started<br \/>\nvagrant@vagrant:~\/docker$ <\/code><\/p>\n<p><code lang=\"bash\"><br \/>\n<\/code><\/p>\n<p><code lang=\"bash\">vagrant@vagrant:~\/docker$ docker exec cc83ba6cef94 supervisorctl status<br \/>\nconsul_client                    RUNNING   pid 7, uptime 0:45:39<br \/>\nnginx_server                     RUNNING   pid 614, uptime 0:00:10<br \/>\nvagrant@vagrant:~\/docker$<br \/>\n<\/code><\/p>\n<p>\u540c\u69d8\u306e\u624b\u9806\u3067\u78ba\u8a8d\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n<p><code lang=\"bash\"><br \/>\nvagrant@vagrant:~\/docker$ docker exec a8e92ba7c3f3 cat \/etc\/nginx\/sites-enabled\/default<br \/>\nupstream lb_units {<\/code><\/p>\n<p><code lang=\"bash\"><code lang=\"bash\"><\/code><\/code><\/p>\n<p>server 172.17.0.58;<\/p>\n<p><code lang=\"bash\"><code lang=\"bash\"><\/code><\/code><\/p>\n<p>server 172.17.0.84;<\/p>\n<p><code lang=\"bash\"><code lang=\"bash\"><\/code><\/code><\/p>\n<p>server 172.17.0.66;<\/p>\n<p><code lang=\"bash\"><code lang=\"bash\"><\/code><\/code><\/p>\n<p>}<\/p>\n<p><code lang=\"bash\"><br \/>\n<\/code><\/p>\n<p><code lang=\"bash\">server {<br \/>\nlisten 80;<br \/>\nserver_name 4670d624aee6;<br \/>\nlocation \/ {<br \/>\nproxy_pass http:\/\/lb_units;<br \/>\nproxy_set_header Host $http_host;<br \/>\n}<br \/>\n}<br \/>\nvagrant@vagrant:~\/docker$<br \/>\n<\/code><\/p>\n<p><code lang=\"html\"><br \/>\nvagrant@vagrant:~\/docker$ docker exec a8e92ba7c3f3 curl http:\/\/127.0.0.1\/ 2&gt; \/dev\/null<br \/>\n<\/code><\/p>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<h1>2646f38ba78b<\/h1>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<p>vagrant@vagrant:~\/docker$ docker exec a8e92ba7c3f3 curl http:\/\/127.0.0.1\/ 2&gt; \/dev\/null<\/p>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<h1>3c9f3015715d<\/h1>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<p>vagrant@vagrant:~\/docker$ docker exec a8e92ba7c3f3 curl http:\/\/127.0.0.1\/ 2&gt; \/dev\/null<\/p>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<h1>b8f0aed7b0cd<\/h1>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<p>vagrant@vagrant:~\/docker$ docker exec a8e92ba7c3f3 curl http:\/\/127.0.0.1\/ 2&gt; \/dev\/null<\/p>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<h1>2646f38ba78b<\/h1>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<p>vagrant@vagrant:~\/docker$ docker exec a8e92ba7c3f3 curl http:\/\/127.0.0.1\/ 2&gt; \/dev\/null<\/p>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<h1>3c9f3015715d<\/h1>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<p>vagrant@vagrant:~\/docker$ docker exec a8e92ba7c3f3 curl http:\/\/127.0.0.1\/ 2&gt; \/dev\/null<\/p>\n<p><code lang=\"html\"><code lang=\"html\"><\/code><\/code><\/p>\n<h1>b8f0aed7b0cd<\/h1>\n<p><code lang=\"html\"><br \/>\n<\/code><\/p>\n<p><code lang=\"html\"><br \/>\nvagrant@vagrant:~\/docker$<br \/>\n<\/code><\/p>\n<p>\u518d\u3073 3\u3064\u306e upstream \u306b\u632f\u308a\u5206\u3051\u3089\u308c\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002<\/p>\n<h2>\u307e\u3068\u3081<\/h2>\n<p>\u672c\u7a3f\u3067\u306f\u3001Chef Provisioning \u3068 Docker \u3092\u7528\u3044\u3066 Consul Template \u306e\u30c6\u30b9\u30c8\u74b0\u5883\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\u3002\u624b\u8efd\u304b\u3064\u78ba\u5b9f\u306b\u30b5\u30fc\u30d3\u30b9\u306e\u69cb\u6210\u5909\u66f4\u304c\u53ef\u80fd\u3067\u3042\u308b\u3053\u3068\u304c\u304a\u308f\u304b\u308a\u3044\u305f\u3060\u3051\u305f\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n<p>\u672c\u5b9f\u9a13\u3067\u306f Consul Template \u306e\u52d5\u4f5c\u78ba\u8a8d\u306e\u307f\u306b\u7126\u70b9\u3092\u7d5e\u3063\u305f\u306e\u3067\u3001Chef Provisioning\u3001Docker\u3001Consul \u3084 Consul Template \u305d\u306e\u3082\u306e\u306b\u3082\u6df1\u304f\u898b\u3066\u3044\u307e\u305b\u3093\u3002\u305d\u308c\u305e\u308c\u306e\u8a73\u7d30\u8003\u5bdf\u306b\u95a2\u3057\u3066\u306f\u4eca\u5f8c\u306e\u8ab2\u984c\u3067\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u306f\u3058\u3081\u306b \u672c\u7a3f\u3067\u306f\u3001Chef Provisioning \u3068 Docker \u3092\u7528\u3044\u3066 Consul Template \u306e\u30c6\u30b9\u30c8\u74b0\u5883\u3092\u4f5c\u6210\u3057\u3066\u307f\u307e\u3059\u3002Chef Provisioning \u3068 Docker \u306b\u3064\u3044\u3066\u306f\u300cChef [&#8230;]<\/p>\n","protected":false},"author":2,"featured_media":10503,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":""},"categories":[36,31,43,42],"tags":[],"class_list":["post-10502","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-chef","category-higuchi","category-docker","category-hashicorp"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Chef Provisioning\u3068Docker\u3067Consul Template\u306e\u30c6\u30b9\u30c8\u74b0\u5883\u3092\u4f5c\u6210\u3059\u308b #getchef #docker #consul - Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3<\/title>\n<meta name=\"description\" content=\"Chef, d-higuchi, Docker, HashiCorp |\u306f\u3058\u3081\u306b \u672c\u7a3f\u3067\u306f\u3001Chef Provisioning \u3068 Docker \u3092\u7528\u3044\u3066 Consul Template \u306e\u30c6\u30b9\u30c8\u74b0\u5883\u3092\u4f5c\u6210\u3057\u3066\u307f\u307e\u3059\u3002Chef\" \/>\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.creationline.com\/tech-blog\/cloudnative\/chef\/10502\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Chef Provisioning\u3068Docker\u3067Consul Template\u306e\u30c6\u30b9\u30c8\u74b0\u5883\u3092\u4f5c\u6210\u3059\u308b #getchef #docker #consul - Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3\" \/>\n<meta property=\"og:description\" content=\"Chef, d-higuchi, Docker, HashiCorp |\u306f\u3058\u3081\u306b \u672c\u7a3f\u3067\u306f\u3001Chef Provisioning \u3068 Docker \u3092\u7528\u3044\u3066 Consul Template \u306e\u30c6\u30b9\u30c8\u74b0\u5883\u3092\u4f5c\u6210\u3057\u3066\u307f\u307e\u3059\u3002Chef\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/chef\/10502\" \/>\n<meta property=\"og:site_name\" content=\"Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/creationline\" \/>\n<meta property=\"article:published_time\" content=\"2015-08-05T02:30:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-29T05:19:55+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2015\/07\/chef-consul-docker-cluster.png\" \/>\n\t<meta property=\"og:image:width\" content=\"502\" \/>\n\t<meta property=\"og:image:height\" content=\"243\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Daisuke Higuchi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@creationline\" \/>\n<meta name=\"twitter:site\" content=\"@creationline\" \/>\n<meta name=\"twitter:label1\" content=\"\u57f7\u7b46\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"Daisuke Higuchi\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"11\u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/chef\\\/10502#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/chef\\\/10502\"},\"author\":{\"name\":\"Daisuke Higuchi\",\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/#\\\/schema\\\/person\\\/16f1373831fb6fd17387f16ae1195206\"},\"headline\":\"Chef Provisioning\u3068Docker\u3067Consul Template\u306e\u30c6\u30b9\u30c8\u74b0\u5883\u3092\u4f5c\u6210\u3059\u308b #getchef #docker #consul\",\"datePublished\":\"2015-08-05T02:30:29+00:00\",\"dateModified\":\"2023-08-29T05:19:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/chef\\\/10502\"},\"wordCount\":772,\"image\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/chef\\\/10502#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cms_x3GWkuX\\\/wp-content\\\/uploads\\\/2015\\\/07\\\/chef-consul-docker-cluster.png\",\"articleSection\":[\"Chef\",\"d-higuchi\",\"Docker\",\"HashiCorp\"],\"inLanguage\":\"ja\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/chef\\\/10502\",\"url\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/chef\\\/10502\",\"name\":\"Chef Provisioning\u3068Docker\u3067Consul Template\u306e\u30c6\u30b9\u30c8\u74b0\u5883\u3092\u4f5c\u6210\u3059\u308b #getchef #docker #consul - Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/chef\\\/10502#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/chef\\\/10502#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cms_x3GWkuX\\\/wp-content\\\/uploads\\\/2015\\\/07\\\/chef-consul-docker-cluster.png\",\"datePublished\":\"2015-08-05T02:30:29+00:00\",\"dateModified\":\"2023-08-29T05:19:55+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/#\\\/schema\\\/person\\\/16f1373831fb6fd17387f16ae1195206\"},\"description\":\"Chef, d-higuchi, Docker, HashiCorp |\u306f\u3058\u3081\u306b \u672c\u7a3f\u3067\u306f\u3001Chef Provisioning \u3068 Docker \u3092\u7528\u3044\u3066 Consul Template \u306e\u30c6\u30b9\u30c8\u74b0\u5883\u3092\u4f5c\u6210\u3057\u3066\u307f\u307e\u3059\u3002Chef\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/chef\\\/10502#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/chef\\\/10502\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/chef\\\/10502#primaryimage\",\"url\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cms_x3GWkuX\\\/wp-content\\\/uploads\\\/2015\\\/07\\\/chef-consul-docker-cluster.png\",\"contentUrl\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cms_x3GWkuX\\\/wp-content\\\/uploads\\\/2015\\\/07\\\/chef-consul-docker-cluster.png\",\"width\":502,\"height\":243},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/chef\\\/10502#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"HOME\",\"item\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6\",\"item\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Chef\",\"item\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cloudnative\\\/chef\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Chef Provisioning\u3068Docker\u3067Consul Template\u306e\u30c6\u30b9\u30c8\u74b0\u5883\u3092\u4f5c\u6210\u3059\u308b #getchef #docker #consul\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/#website\",\"url\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/\",\"name\":\"Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3\",\"description\":\"\u30a2\u30b8\u30e3\u30a4\u30eb\uff06DevOps\u3001\u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6\u3001AI\uff06LLM\u306e\u5148\u7aef\u6280\u8853\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ja\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/#\\\/schema\\\/person\\\/16f1373831fb6fd17387f16ae1195206\",\"name\":\"Daisuke Higuchi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cms_x3GWkuX\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/d-higuchi-wp-icon-230x230.png\",\"url\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cms_x3GWkuX\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/d-higuchi-wp-icon-230x230.png\",\"contentUrl\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/cms_x3GWkuX\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/d-higuchi-wp-icon-230x230.png\",\"caption\":\"Daisuke Higuchi\"},\"description\":\"Chef\u30fbDocker\u30fbMirantis\u88fd\u54c1\u306a\u3069\u306e\u6280\u8853\u8981\u7d20\u306b\u52a0\u3048\u3066\u3001\u4f1a\u8b70\u306e\u9032\u3081\u65b9\u30fb\u6587\u7ae0\u306e\u66f8\u304d\u65b9\u306a\u3069\u306e\u696d\u52d9\u6539\u5584\u306b\u3082\u53d6\u308a\u7d44\u3093\u3067\u3044\u307e\u3059\u3002\u300cChef\u6d3b\u7528\u30ac\u30a4\u30c9\u300d\u5171\u8457\u306e\u307b\u304b\u3001Debian Official Developer\u3082\u3084\u3063\u3066\u3044\u307e\u3059\u3002\",\"url\":\"https:\\\/\\\/www.creationline.com\\\/tech-blog\\\/author\\\/higuchi\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Chef Provisioning\u3068Docker\u3067Consul Template\u306e\u30c6\u30b9\u30c8\u74b0\u5883\u3092\u4f5c\u6210\u3059\u308b #getchef #docker #consul - Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3","description":"Chef, d-higuchi, Docker, HashiCorp |\u306f\u3058\u3081\u306b \u672c\u7a3f\u3067\u306f\u3001Chef Provisioning \u3068 Docker \u3092\u7528\u3044\u3066 Consul Template \u306e\u30c6\u30b9\u30c8\u74b0\u5883\u3092\u4f5c\u6210\u3057\u3066\u307f\u307e\u3059\u3002Chef","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.creationline.com\/tech-blog\/cloudnative\/chef\/10502","og_locale":"ja_JP","og_type":"article","og_title":"Chef Provisioning\u3068Docker\u3067Consul Template\u306e\u30c6\u30b9\u30c8\u74b0\u5883\u3092\u4f5c\u6210\u3059\u308b #getchef #docker #consul - Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3","og_description":"Chef, d-higuchi, Docker, HashiCorp |\u306f\u3058\u3081\u306b \u672c\u7a3f\u3067\u306f\u3001Chef Provisioning \u3068 Docker \u3092\u7528\u3044\u3066 Consul Template \u306e\u30c6\u30b9\u30c8\u74b0\u5883\u3092\u4f5c\u6210\u3057\u3066\u307f\u307e\u3059\u3002Chef","og_url":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/chef\/10502","og_site_name":"Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3","article_publisher":"https:\/\/www.facebook.com\/creationline","article_published_time":"2015-08-05T02:30:29+00:00","article_modified_time":"2023-08-29T05:19:55+00:00","og_image":[{"width":502,"height":243,"url":"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2015\/07\/chef-consul-docker-cluster.png","type":"image\/png"}],"author":"Daisuke Higuchi","twitter_card":"summary_large_image","twitter_creator":"@creationline","twitter_site":"@creationline","twitter_misc":{"\u57f7\u7b46\u8005":"Daisuke Higuchi","\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"11\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/chef\/10502#article","isPartOf":{"@id":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/chef\/10502"},"author":{"name":"Daisuke Higuchi","@id":"https:\/\/www.creationline.com\/tech-blog\/#\/schema\/person\/16f1373831fb6fd17387f16ae1195206"},"headline":"Chef Provisioning\u3068Docker\u3067Consul Template\u306e\u30c6\u30b9\u30c8\u74b0\u5883\u3092\u4f5c\u6210\u3059\u308b #getchef #docker #consul","datePublished":"2015-08-05T02:30:29+00:00","dateModified":"2023-08-29T05:19:55+00:00","mainEntityOfPage":{"@id":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/chef\/10502"},"wordCount":772,"image":{"@id":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/chef\/10502#primaryimage"},"thumbnailUrl":"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2015\/07\/chef-consul-docker-cluster.png","articleSection":["Chef","d-higuchi","Docker","HashiCorp"],"inLanguage":"ja"},{"@type":"WebPage","@id":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/chef\/10502","url":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/chef\/10502","name":"Chef Provisioning\u3068Docker\u3067Consul Template\u306e\u30c6\u30b9\u30c8\u74b0\u5883\u3092\u4f5c\u6210\u3059\u308b #getchef #docker #consul - Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3","isPartOf":{"@id":"https:\/\/www.creationline.com\/tech-blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/chef\/10502#primaryimage"},"image":{"@id":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/chef\/10502#primaryimage"},"thumbnailUrl":"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2015\/07\/chef-consul-docker-cluster.png","datePublished":"2015-08-05T02:30:29+00:00","dateModified":"2023-08-29T05:19:55+00:00","author":{"@id":"https:\/\/www.creationline.com\/tech-blog\/#\/schema\/person\/16f1373831fb6fd17387f16ae1195206"},"description":"Chef, d-higuchi, Docker, HashiCorp |\u306f\u3058\u3081\u306b \u672c\u7a3f\u3067\u306f\u3001Chef Provisioning \u3068 Docker \u3092\u7528\u3044\u3066 Consul Template \u306e\u30c6\u30b9\u30c8\u74b0\u5883\u3092\u4f5c\u6210\u3057\u3066\u307f\u307e\u3059\u3002Chef","breadcrumb":{"@id":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/chef\/10502#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.creationline.com\/tech-blog\/cloudnative\/chef\/10502"]}]},{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/chef\/10502#primaryimage","url":"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2015\/07\/chef-consul-docker-cluster.png","contentUrl":"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2015\/07\/chef-consul-docker-cluster.png","width":502,"height":243},{"@type":"BreadcrumbList","@id":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/chef\/10502#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"HOME","item":"https:\/\/www.creationline.com\/tech-blog"},{"@type":"ListItem","position":2,"name":"\u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6","item":"https:\/\/www.creationline.com\/tech-blog\/cloudnative"},{"@type":"ListItem","position":3,"name":"Chef","item":"https:\/\/www.creationline.com\/tech-blog\/cloudnative\/chef"},{"@type":"ListItem","position":4,"name":"Chef Provisioning\u3068Docker\u3067Consul Template\u306e\u30c6\u30b9\u30c8\u74b0\u5883\u3092\u4f5c\u6210\u3059\u308b #getchef #docker #consul"}]},{"@type":"WebSite","@id":"https:\/\/www.creationline.com\/tech-blog\/#website","url":"https:\/\/www.creationline.com\/tech-blog\/","name":"Tech Blog\uff5c\u30af\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30f3","description":"\u30a2\u30b8\u30e3\u30a4\u30eb\uff06DevOps\u3001\u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6\u3001AI\uff06LLM\u306e\u5148\u7aef\u6280\u8853","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.creationline.com\/tech-blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ja"},{"@type":"Person","@id":"https:\/\/www.creationline.com\/tech-blog\/#\/schema\/person\/16f1373831fb6fd17387f16ae1195206","name":"Daisuke Higuchi","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/d-higuchi-wp-icon-230x230.png","url":"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/d-higuchi-wp-icon-230x230.png","contentUrl":"https:\/\/www.creationline.com\/tech-blog\/cms_x3GWkuX\/wp-content\/uploads\/2023\/08\/d-higuchi-wp-icon-230x230.png","caption":"Daisuke Higuchi"},"description":"Chef\u30fbDocker\u30fbMirantis\u88fd\u54c1\u306a\u3069\u306e\u6280\u8853\u8981\u7d20\u306b\u52a0\u3048\u3066\u3001\u4f1a\u8b70\u306e\u9032\u3081\u65b9\u30fb\u6587\u7ae0\u306e\u66f8\u304d\u65b9\u306a\u3069\u306e\u696d\u52d9\u6539\u5584\u306b\u3082\u53d6\u308a\u7d44\u3093\u3067\u3044\u307e\u3059\u3002\u300cChef\u6d3b\u7528\u30ac\u30a4\u30c9\u300d\u5171\u8457\u306e\u307b\u304b\u3001Debian Official Developer\u3082\u3084\u3063\u3066\u3044\u307e\u3059\u3002","url":"https:\/\/www.creationline.com\/tech-blog\/author\/higuchi"}]}},"_links":{"self":[{"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/posts\/10502","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/comments?post=10502"}],"version-history":[{"count":1,"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/posts\/10502\/revisions"}],"predecessor-version":[{"id":65796,"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/posts\/10502\/revisions\/65796"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/media\/10503"}],"wp:attachment":[{"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/media?parent=10502"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/categories?post=10502"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.creationline.com\/tech-blog\/wp-json\/wp\/v2\/tags?post=10502"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}