{"id":269082,"date":"2015-11-26T15:11:06","date_gmt":"2015-11-26T12:11:06","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=269082"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=269082","title":{"rendered":"\u0421\u0432\u043e\u0439 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0437\u0430 5 \u043c\u0438\u043d\u0443\u0442. \u0427\u0430\u0441\u0442\u044c 3: Consul, Registrator, Consul-Template"},"content":{"rendered":"<p>       <a href=\"http:\/\/habrahabr.ru\/post\/264269\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/57f\/c1f\/9a2\/57fc1f9a2dd440f8b98d7991c516aa1a.png\" alt=\"Docker friends\"\/><\/a><\/p>\n<p>  \u041f\u0440\u0438\u0432\u0435\u0442 \u0425\u0430\u0431\u0440! \u042f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e \u0446\u0438\u043a\u043b \u0441\u0442\u0430\u0442\u0435\u0439 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0437\u0430 5 \u043c\u0438\u043d\u0443\u0442. \u0412 <a href=\"http:\/\/habrahabr.ru\/post\/262397\/\">\u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0440\u0435\u0448\u0438\u0442\u044c \u043d\u0430\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 (<i>Service Discovery<\/i>). \u0412 \u044d\u0442\u043e \u0447\u0430\u0441\u0442\u0438 \u043c\u044b \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435, \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u043c \u043e\u0431\u043b\u0430\u043a\u043e \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u0430\u043a \u044d\u0442\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0432\u0435\u0434\u0443\u0442 \u0441\u0435\u0431\u044f \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0436\u0438\u0437\u043d\u0438.<\/p>\n<p>  \u041a\u0430\u043a \u0438 \u043f\u0440\u0435\u0436\u0434\u0435, \u0432\u0441\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0438 5 \u043c\u0438\u043d\u0443\u0442, \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0432 \u043d\u0430\u0431\u043e\u0440 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432 \u0434\u043b\u044f <i>Ansible<\/i>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0432\u0430\u0441 \u0438 <a href=\"https:\/\/github.com\/vkozlovski\/ansible-cloud-hosting\">\u0432\u044b\u043b\u043e\u0436\u0438\u043b \u043d\u0430 GitHub<\/a>.<\/p>\n<p>  \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043d\u0430\u0448\u0435 \u043e\u0431\u043b\u0430\u043a\u043e \u0441\u0442\u0430\u043b\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u0432 \u043d\u0451\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0431\u043e\u0301\u043b\u044c\u0448\u0435\u0435 \u0447\u0438\u0441\u043b\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0435\u0433\u043e \u0441\u0442\u0430\u043b\u043e \u043f\u0440\u043e\u0449\u0435. \u042f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u043b \u043d\u0430\u0431\u043e\u0440 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432 \u0438\u0437 \u043f\u0440\u043e\u0448\u043b\u044b\u0445 \u0441\u0442\u0430\u0442\u0435\u0439, \u0443\u0434\u0430\u043b\u0438\u043b \u0432\u0441\u0451 \u043b\u0438\u0448\u043d\u0435\u0435, \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u043b \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e.<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h4><font color=\"#d62631\">\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435<\/font><\/h4>\n<p>  <\/p>\n<ol>\n<li><a href=\"http:\/\/habrahabr.ru\/post\/261415\/\">Ansible, Docker, Docker Swarm<\/a><\/li>\n<li><a href=\"http:\/\/habrahabr.ru\/post\/262397\/\">Service Discovery<\/a><\/li>\n<li>Consul, Registrator, Consul-Template<\/li>\n<li>&#8230;<\/li>\n<\/ol>\n<p>  <\/p>\n<h1><font color=\"#d62631\">\u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0435\u043c<\/font><\/h1>\n<p>  \u0423 \u0432\u0430\u0441 \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d <i><a href=\"http:\/\/www.ansible.com\/\">Ansible<\/a><\/i> \u0438 <i><a href=\"https:\/\/www.docker.com\/\">Docker<\/a><\/i>. \u0412 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c 3 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043f\u043e \u043a\u043b\u044e\u0447\u0443 \u0438 <i>Debian 8.1 x64<\/i> \u043d\u0430 \u0431\u043e\u0440\u0442\u0443 (<i>\u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432, \u0432\u043d\u0435\u0441\u044f \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438<\/i>). <\/p>\n<p>  \u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c <a href=\"https:\/\/github.com\/vkozlovski\/ansible-cloud-hosting\/archive\/v2.x.zip\">\u043d\u0430\u0431\u043e\u0440 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432<\/a> \u0438\u043b\u0438 \u043a\u043b\u043e\u043d\u0438\u0440\u0443\u0435\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439:<\/p>\n<pre><code class=\"bash\">\u00bb git clone https:\/\/github.com\/vkozlovski\/ansible-cloud-hosting \u00bb cd ansible-cloud-hosting \u00bb git checkout v2.x <\/code><\/pre>\n<p>  <\/p>\n<h4><font color=\"#d62631\">IP \u0430\u0434\u0440\u0435\u0441\u0430<\/font><\/h4>\n<p>  \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0444\u0430\u0439\u043b <b>stage<\/b> \u0438 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u043c \u0432 \u043d\u0435\u043c IP \u0430\u0434\u0440\u0435\u0441\u0430 \u043d\u0430 IP \u0441\u0432\u043e\u0438\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432:<\/p>\n<pre><code class=\"markdown\">[dc1-cloud] 192.168.1.1 192.168.1.2 192.168.1.3 <\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043e\u0431\u043b\u0430\u043a\u043e \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0434\u0430\u0442\u0430\u0446\u0435\u043d\u0442\u0440\u0430\u0445, \u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0433\u0440\u0443\u043f\u043f\u044b \u0441 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 IP \u0430\u0434\u0440\u0435\u0441\u0430\u043c\u0438 (<i>\u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u0441 \u0442\u0435\u043c, \u043a\u0430\u043a \u044d\u0442\u043e \u0443\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u043d\u043e<\/i>):<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u0440\u0438\u043c\u0435\u0440<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"markdown\">[dc1-cloud] 192.168.1.1 192.168.1.2 192.168.1.3  [dc2-cloud] 192.168.2.1 192.168.2.2 192.168.2.3  #--- in all DC ---#  # cloud in all DC [cloud:children] dc1-cloud dc2-cloud  #--- everything in DC ---#  [dc1:children] dc1-cloud  [dc2:children] dc2-cloud <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<h4><font color=\"#d62631\">\u0426\u0435\u043d\u0442\u0440 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438<\/font><\/h4>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0434\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043b\u044e\u0447\u0438 \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u0446\u0435\u043d\u0442\u0440\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u044b \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 <i>Docker<\/i>&#8216;a (<i>\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0432 <a href=\"http:\/\/habrahabr.ru\/post\/261415\/\">\u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a><\/i>). \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u044f \u0441\u043e\u0437\u0434\u0430\u043b \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u043e\u043c\u043e\u0449\u043d\u0438\u043a, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0437 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443:<\/p>\n<pre><code class=\"bash\">\u00bb make gen-ca <\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u0440\u0438\u043c\u0435\u0440<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">Generating RSA private key, 4096 bit long modulus ...++ ................++ e is 65537 (0x10001) Enter pass phrase for certs\/ca\/ca-key.pem: Verifying - Enter pass phrase for certs\/ca\/ca-key.pem: Enter pass phrase for certs\/ca\/ca-key.pem: You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:US State or Province Name (full name) [Some-State]:California Locality Name (eg, city) []:Cupertino Organization Name (eg, company) [Internet Widgits Pty Ltd]:Ansible Cloud Hosting Organizational Unit Name (eg, section) []: Common Name (e.g. server FQDN or YOUR name) []:example.com Email Address []:postmaster@example.com <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041e\u0442\u0432\u0435\u0447\u0430\u0435\u043c \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u044b (<i>\u0442\u0443\u0442 \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439, \u0434\u043e\u043c\u0435\u043d \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439<\/i>) \u0438 \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c \u043f\u0430\u0440\u043e\u043b\u044c. \u041f\u0430\u0440\u043e\u043b\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u0438\u0441\u0432\u043e\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <b>certs_ca_password<\/b> \u0432 \u0444\u0430\u0439\u043b\u0435 <b>group_vars\/all.yml<\/b>.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 group_vars\/all.yml<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"markdown\">--- common_packages:   - sudo   - htop   - mc   - git   - apt-transport-https   - python-setuptools # easy_install (necessary for install python pip)  debian_release: jessie certs_ca_password: '1234' # ;) <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<h4><font color=\"#d62631\">\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b<\/font><\/h4>\n<p>  \u041d\u0430 \u044d\u0442\u043e\u043c \u0448\u0430\u0433\u0435 \u043d\u0430\u0434\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0434\u043b\u044f <i><a href=\"https:\/\/consul.io\/\">Consul<\/a><\/i>. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u044f \u0442\u043e\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u043b \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u043e\u043c\u043e\u0449\u043d\u0438\u043a, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0437 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443:<\/p>\n<pre><code class=\"bash\">\u00bb make gen-consul-certs <\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u0440\u0438\u043c\u0435\u0440<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">Generating a 2048 bit RSA private key ..........................+++ .................................................+++ writing new private key to 'privkey.pem' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:US State or Province Name (full name) [Some-State]:California Locality Name (eg, city) []:Cupertino Organization Name (eg, company) [Internet Widgits Pty Ltd]:Ansible Cloud Hosting Organizational Unit Name (eg, section) []: Common Name (e.g. server FQDN or YOUR name) []:example.com Email Address []:postmaster@example.com Generating a 1024 bit RSA private key ...........................++++++ ..............++++++ writing new private key to 'consul.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:US State or Province Name (full name) [Some-State]:California Locality Name (eg, city) []:Cupertino Organization Name (eg, company) [Internet Widgits Pty Ltd]:Ansible Cloud Hosting Organizational Unit Name (eg, section) []: Common Name (e.g. server FQDN or YOUR name) []:example.com Email Address []:postmaster@example.com  Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: Using configuration from myca.conf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName           :PRINTABLE:'US' stateOrProvinceName   :PRINTABLE:'California' localityName          :PRINTABLE:'Cupertino' organizationName      :PRINTABLE:'Ansible Cloud Hosting' commonName            :PRINTABLE:'example.com' emailAddress          :IA5STRING:'postmaster@example.com' Certificate is to be certified until Nov 22 16:25:08 2025 GMT (3650 days)  Write out database with 1 new entries Data Base Updated ------------------------------------------------------------ <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u044d\u0442\u043e\u043c \u0448\u0430\u0433\u0435, \u0442\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 <a href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-secure-consul-with-tls-encryption-on-ubuntu-14-04\">\u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0451\u0439<\/a> \u043d\u0430 <i>DigitalOcean<\/i>.<\/p>\n<h4><font color=\"#d62631\">\u0421\u0435\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043a\u043b\u044e\u0447<\/font><\/h4>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/a2a\/394\/a80\/a2a394a80b02104d3433a3a63470a603.png\" alt=\"image\"\/><br \/>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043a\u043b\u044e\u0447, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 <i><a href=\"https:\/\/consul.io\/\">Consul<\/a><\/i> \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0442\u0440\u0430\u0444\u0444\u0438\u043a\u0430. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443:<\/p>\n<pre><code class=\"bash\">\u00bb docker run --rm --entrypoint &quot;\/bin\/consul&quot; progrium\/consul:latest keygen L+3UkrkFeXHQBT97nTZI\/g== <\/code><\/pre>\n<p>  \u041a\u043b\u044e\u0447 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u0438\u0441\u0432\u043e\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <b>docker_consul_encrypt<\/b> \u0432 \u0444\u0430\u0439\u043b\u0435 <b>group_vars\/cloud.yml<\/b>.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 group_vars\/cloud.yml<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"markdown\">--- # docker docker_api_version: 1.18 docker_key_server: &quot;hkp:\/\/pgp.mit.edu:80&quot; docker_key_id: &quot;58118E89F3A912897C070ADBF76221572C52609D&quot;  # docker-consul docker_consul_encrypt: 'L+3UkrkFeXHQBT97nTZI\/g==' docker_consul_start_join_wan:   - &quot;{{ hostvars[groups['dc1'][0]]['ansible_eth0']['ipv4']['address'] }}&quot;  # first host in DC1 <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<h4><font color=\"#d62631\">\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0434\u043b\u044f \u0434\u0430\u0442\u0430\u0446\u0435\u043d\u0442\u0440\u0430<\/font><\/h4>\n<p>  \u0424\u0430\u0439\u043b <b>dc1.yml<\/b> \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 <b>group_vars<\/b> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u0443\u044e \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0434\u0430\u0442\u0430\u0446\u0435\u043d\u0442\u0440\u0430. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0438\u0445 \u0431\u043e\u043b\u044c\u0448\u0435 \u043e\u0434\u043d\u043e\u0433\u043e, \u0442\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c <b>dc2.yml<\/b>, <b>dc3.yml<\/b>, <b>&#8230;<\/b> \u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0438\u0445 \u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438. <\/p>\n<pre><code class=\"markdown\">--- # docker-consul # first host in &quot;my_name_dc&quot; DC docker_consul_join: '{{ hostvars[groups[&quot;my_name_dc&quot;][0]][&quot;ansible_eth0&quot;][&quot;ipv4&quot;][&quot;address&quot;] }}' docker_consul_dc: 'dc1'  # docker-swarm-manager # first host in &quot;my_name_dc&quot; DC docker_swarm_manager_ip: '{{ hostvars[groups[&quot;my_name_dc&quot;][0]][&quot;ansible_eth0&quot;][&quot;ipv4&quot;][&quot;address&quot;] }}' <\/code><\/pre>\n<p>  <\/p>\n<h5><font color=\"#d62631\">Consul<\/font><\/h5>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u044b \u0441\u0442\u0440\u043e\u0438\u0442\u0435 \u043e\u0431\u043b\u0430\u043a\u043e \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0446\u0435\u043d\u0442\u0440\u0430\u0445 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u0442\u043e \u0443 \u043c\u0435\u043d\u044f \u0434\u043b\u044f \u0432\u0430\u0441 \u0445\u043e\u0440\u043e\u0448\u0438\u0435 \u043d\u043e\u0432\u043e\u0441\u0442\u0438 \u2013 <i><a href=\"https:\/\/consul.io\/\">Consul<\/a><\/i> \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u044d\u0442\u043e \u00ab\u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438\u00bb. \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u044d\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u0434 \u043e\u0434\u043d\u043e\u043c\u0443 IP \u0438\u0437 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0426\u041e\u0414\u0430 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <b>docker_consul_start_join_wan<\/b>:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u0440\u0438\u043c\u0435\u0440 group_vars\/cloud.yml<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"markdown\">--- # docker docker_api_version: 1.18 docker_key_server: &quot;hkp:\/\/pgp.mit.edu:80&quot; docker_key_id: &quot;58118E89F3A912897C070ADBF76221572C52609D&quot;  # docker-consul docker_consul_encrypt: 'L+3UkrkFeXHQBT97nTZI\/g==' docker_consul_start_join_wan:   - &quot;{{ hostvars[groups['dc1'][0]]['ansible_eth0']['ipv4']['address'] }}&quot;  # first host in DC1   - &quot;{{ hostvars[groups['dc2'][0]]['ansible_eth0']['ipv4']['address'] }}&quot;  # first host in DC2   ... <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<h1><font color=\"#d62631\">\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c<\/font><\/h1>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u044b \u0434\u043e\u0448\u043b\u0438 \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u0448\u0430\u0433\u0430 \u2013 \u0432\u0430\u0441 \u0436\u0434\u0451\u0442 \u0432\u043e\u0437\u043d\u0430\u0433\u0440\u0430\u0436\u0434\u0435\u043d\u0438\u0435. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u043e\u043c\u043e\u0449\u043d\u0438\u043a:<\/p>\n<pre><code class=\"bash\">\u00bb make run <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u00ab\u043e\u0442\u043a\u0438\u043d\u0443\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u043f\u0438\u043d\u043a\u0443 \u043a\u0440\u0435\u0441\u043b\u0430 \u0438 \u043e\u0442\u0434\u043e\u0445\u043d\u0443\u0442\u044c\u00bb.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/219\/974\/091\/219974091997475bb27c646b292f716c.png\"\/><\/p>\n<p>  \u0412\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u044b \u0442\u0430\u0431\u0443\u0440\u0435\u0442\u043e\u043a \u2014 \u0431\u0435\u0440\u0435\u0433\u0438\u0442\u0435 \u0441\u0435\u0431\u044f. <\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043c\u0430\u0433\u0438\u044f \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u0441\u044f, \u044f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432\u0441\u0435 \u043c\u0430\u0448\u0438\u043d\u044b.<\/p>\n<p>  \u0413\u043e\u0442\u043e\u0432\u043e!<\/p>\n<h2><font color=\"#d62631\">Consul UI<\/font><\/h2>\n<p>  \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043f\u043e \u043b\u044e\u0431\u043e\u043c\u0443 \u0438\u0437 IP \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u043d\u0430\u0448\u0438\u0445 \u043c\u0430\u0448\u0438\u043d (<i><a href=\"http:\/\/192.168.1.1:8500\/\">http:\/\/192.168.1.1:8500\/<\/a><\/i>). \u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0430\u0442\u0430\u0446\u0435\u043d\u0442\u0440\u043e\u0432, \u0442\u043e \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043f\u043e\u0445\u043e\u0436\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u0443:<br \/>  <img decoding=\"async\" width=\"600\" src=\"https:\/\/habrastorage.org\/files\/ee3\/54c\/b24\/ee354cb24f8f40b29b87a1386c9b98e3.png\"\/><br \/>  \u0415\u0441\u043b\u0438 \u0446\u0435\u043d\u0442\u0440 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0443 \u0432\u0430\u0441 \u043e\u0434\u0438\u043d \u0438\u043b\u0438 \u0432\u044b \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u0435\u0433\u043e \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430 \u0432\u044b\u0448\u0435:<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/8cf\/c64\/764\/8cfc647643174e108176fb842509d131.png\"\/><br \/>  <i>Consul<\/i> \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u043d\u0430\u0448\u0435 \u043e\u0431\u043b\u0430\u043a\u043e. \u0417\u0435\u043b\u0451\u043d\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u00ab\u0437\u0434\u043e\u0440\u043e\u0432\u044b\u0435\u00bb \u0441\u0435\u0440\u0432\u0438\u0441\u044b, \u0436\u0451\u043b\u0442\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c \u2013 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043d\u044b\u0435 (<i><a href=\"http:\/\/habrahabr.ru\/post\/262397\/\">\u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u044f \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b, \u0447\u0442\u043e Consul <a href=\"https:\/\/consul.io\/docs\/agent\/checks.html\">\u0443\u043c\u0435\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0437\u0434\u043e\u0440\u043e\u0432\u044c\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432<\/a><\/i>).<\/p>\n<h2><font color=\"#d62631\">Docker Swarm<\/font><\/h2>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c <i>Docker Swarm<\/i> (<i>\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043e \u043d\u0451\u043c \u0432 <a href=\"http:\/\/habrahabr.ru\/post\/261415\/\">\u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a><\/i>). <i>Docker Swarm Manager<\/i> \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 IP \u0430\u0434\u0440\u0435\u0441 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0434\u0430\u0442\u0430\u0446\u0435\u043d\u0442\u0440\u0430 \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430 \u0432 \u0444\u0430\u0439\u043b\u0435 <b>stage<\/b>. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430:<\/p>\n<pre><code class=\"markdown\">[dc1-cloud] 192.168.1.1 192.168.1.2 192.168.1.3  [dc2-cloud] 192.168.2.1 192.168.2.2 192.168.2.3  #--- in all DC ---#  # cloud in all DC [cloud:children] dc1-cloud dc2-cloud  #--- everything in DC ---#  [dc1:children] dc1-cloud  [dc2:children] dc2-cloud <\/code><\/pre>\n<p>  \u044d\u0442\u043e \u0431\u0443\u0434\u0443\u0442 <i>192.168.1.1<\/i> \u0438 <i>192.168.2.1<\/i>.<\/p>\n<p>  \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0431\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a <i>Docker Swarm Manager<\/i> \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c:<\/p>\n<pre><code class=\"bash\">\u00bb docker -H tcp:\/\/192.168.1.1:8000 --tlsverify=true --tlscacert=certs\/ca\/ca.pem --tlscert=certs\/docker\/cert.pem --tlskey=certs\/docker\/key.pem info <\/code><\/pre>\n<p>  \u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043b\u0438\u0446\u0435\u0437\u0440\u0435\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0445\u043e\u0436\u0435\u0435:<\/p>\n<pre><code class=\"bash\">Containers: 13 Images: 12 Role: primary Strategy: spread Filters: health, port, dependency, affinity, constraint Nodes: 3  debian1: 192.168.1.1:2376   \u2514 Containers: 5   \u2514 Reserved CPUs: 0 \/ 1   \u2514 Reserved Memory: 0 B \/ 519.2 MiB   \u2514 Labels: executiondriver=native-0.2, kernelversion=3.16.0-4-amd64, operatingsystem=Debian GNU\/Linux 8 (jessie), storagedriver=aufs  debian2: 192.168.1.2:2376   \u2514 Containers: 4   \u2514 Reserved CPUs: 0 \/ 1   \u2514 Reserved Memory: 0 B \/ 519.2 MiB   \u2514 Labels: executiondriver=native-0.2, kernelversion=3.16.0-4-amd64, operatingsystem=Debian GNU\/Linux 8 (jessie), storagedriver=aufs  debian3: 192.168.1.3:2376   \u2514 Containers: 4   \u2514 Reserved CPUs: 0 \/ 1   \u2514 Reserved Memory: 0 B \/ 519.2 MiB   \u2514 Labels: executiondriver=native-0.2, kernelversion=3.16.0-4-amd64, operatingsystem=Debian GNU\/Linux 8 (jessie), storagedriver=aufs CPUs: 3 Total Memory: 1.521 GiB Name: debian1 <\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u0442\u0430\u043a, \u0430 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a, \u0442\u043e\u0433\u0434\u0430 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0437\u0434\u0440\u0430\u0432\u0438\u0442\u044c \u0432\u0430\u0441. \u0415\u0441\u043b\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0438 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438 \u2013 \u0434\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438.<\/p>\n<h1><font color=\"#d62631\">\u0422\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c<\/font><\/h1>\n<p>  \u041f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432 \u043d\u0430\u0448\u0435\u043c \u043a\u0440\u0443\u0442\u043e\u043c \u043e\u0431\u043b\u0430\u043a\u0435. \u0418 \u0447\u0442\u043e \u0436\u0435 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c, \u0435\u0441\u043b\u0438 \u043d\u0435 <i>Nginx<\/i>? \u0412\u043e\u0442 \u0438\u043c\u0435\u043d\u043d\u043e! <\/p>\n<p>  \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c:<\/p>\n<pre><code class=\"bash\">\u00bb docker -H tcp:\/\/178.62.232.38:8000 --tlsverify=true --tlscacert=certs\/ca\/ca.pem --tlscert=certs\/docker\/cert.pem --tlskey=certs\/docker\/key.pem run -d -p 80:80 -p 443:443 -e &quot;SERVICE_80_NAME=http&quot; -e &quot;SERVICE_443_NAME=https&quot; nginx <\/code><\/pre>\n<p>  \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c \u0437\u0434\u0435\u0441\u044c, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"http:\/\/habrahabr.ru\/post\/262397\/\">\u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a>.<\/p>\n<p>  \u0421\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043a\u0430\u043a\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u0431\u044b\u043b \u0437\u0430\u043f\u0443\u0449\u0435\u043d <i>Nginx<\/i>:<\/p>\n<pre><code class=\"bash\">\u00bb docker -H tcp:\/\/192.168.1.1:8000 --tlsverify=true --tlscacert=certs\/ca\/ca.pem --tlscert=certs\/docker\/cert.pem --tlskey=certs\/docker\/key.pem ps CONTAINER ID        IMAGE                               COMMAND                  CREATED             STATUS              PORTS                                                                                                                                                            NAMES e96b351a857e        nginx                               &quot;nginx -g 'daemon off&quot;   3 minutes ago       Up 3 minutes        192.168.1.2:80-&gt;80\/tcp, 192.168.1.2:443-&gt;443\/tcp                                                                                                           debian2\/fervent_dubinsky  ... <\/code><\/pre>\n<p>  \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 <a href=\"http:\/\/192.168.1.2:80\/\">http:\/\/192.168.1.2:80\/<\/a>:<br \/>  <img decoding=\"async\" width=\"600\" src=\"https:\/\/habrastorage.org\/files\/fb2\/5f0\/64d\/fb25f064d1794a25be9bd94f1fbf33bb.png\"\/><\/p>\n<p>  \u0415\u0441\u0442\u044c \u043a\u043e\u043d\u0442\u0430\u043a\u0442. \u0422\u0435\u043f\u0435\u0440\u044c \u0433\u043b\u044f\u043d\u0435\u043c \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043b\u0438 \u043d\u0430\u0448 \u0441\u0435\u0440\u0432\u0438\u0441 \u0432 \u043f\u0430\u043d\u0435\u043b\u0438 <i>Consul&#8217;\u0430<\/i>:<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/fdc\/4cc\/c55\/fdc4ccc5529248539a854a75423f99a4.png\"\/><br \/>  \u041f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c 2 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 (<i>\u043f\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u043f\u043e\u0440\u0442\u043e\u0432<\/i>): <i>http<\/i> \u0438 <i>https<\/i> (<i>\u0438\u0445 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u043b\u0438 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 SERVICE_80_NAME \u0438 SERVICE_443_NAME<\/i>).<\/p>\n<h2><font color=\"#d62631\">DNS<\/font><\/h2>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u043b\u0443\u0436\u0431\u044b <i>DNS<\/i>, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0430\u043c \u043b\u044e\u0431\u0435\u0437\u043d\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b <i>Consul<\/i>. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u043d\u0430 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u043c\u0430\u0448\u0438\u043d\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0441 <i>Debian<\/i>:<\/p>\n<pre><code class=\"bash\">\u00bb docker -H tcp:\/\/192.168.1.1:8000 --tlsverify=true --tlscacert=certs\/ca\/ca.pem --tlscert=certs\/docker\/cert.pem --tlskey=certs\/docker\/key.pem run -ti debian:testing \/bin\/bash root@2e68749354b2:\/# <\/code><\/pre>\n<p>  \u0421\u043c\u043e\u0442\u0440\u0438\u043c \u0435\u0441\u0442\u044c \u043b\u0438 \u043d\u0430\u0448\u0430 \u0441\u043b\u0443\u0436\u0431\u0430 <i>http<\/i>:<\/p>\n<pre><code class=\"bash\">root@2e68749354b2:\/# ping http PING http.service.consul (172.17.0.6): 56 data bytes 64 bytes from 172.17.0.6: icmp_seq=0 ttl=64 time=0.076 ms 64 bytes from 172.17.0.6: icmp_seq=1 ttl=64 time=0.118 ms 64 bytes from 172.17.0.6: icmp_seq=2 ttl=64 time=0.075 ms ^C--- http.service.consul ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min\/avg\/max\/stddev = 0.075\/0.090\/0.118\/0.000 ms <\/code><\/pre>\n<p>  \u041f\u043e\u043b\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430 <i>http.service.consul<\/i>, \u043d\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u0438 \u043f\u043e \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u043c\u0443 <i>http<\/i> (<i>\u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e Docker \u043c\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c &#8212;dns-search service.consul<\/i>). \u0422\u0430\u043a\u0436\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438 \u0431\u043e\u043b\u0435\u0435 \u0434\u043b\u0438\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 <i>http.service.dc1.consul<\/i> \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u0434\u0430\u0442\u0430\u0446\u0435\u043d\u0442\u0440\u0430 (<i>\u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0434\u043e\u0441\u0442\u0443\u0447\u0430\u0442\u044c\u0441\u044f \u0434\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0438\u0437 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0426\u041e\u0414\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440<\/i>). \u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/consul.io\/docs\/agent\/dns.html\">\u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>.<\/p>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0435\u0449\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043f\u0438\u0439 <i>Nginx<\/i>. \u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0434\u0440\u0443\u0433\u0443\u044e \u0432\u043a\u043b\u0430\u0434\u043a\u0443 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 (<i>\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0441 Debian \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f<\/i>) \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 2 \u0440\u0430\u0437\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0443:<\/p>\n<pre><code class=\"bash\">\u00bb docker -H tcp:\/\/178.62.232.38:8000 --tlsverify=true --tlscacert=certs\/ca\/ca.pem --tlscert=certs\/docker\/cert.pem --tlskey=certs\/docker\/key.pem run -d -p 80:80 -p 443:443 -e &quot;SERVICE_80_NAME=http&quot; -e &quot;SERVICE_443_NAME=https&quot; nginx <\/code><\/pre>\n<p>  <i>Docker Swarm<\/i> \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u043c\u0451\u043d, \u0447\u0442\u043e \u0431\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u0441\u0435 3 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445 (<i>\u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u0433\u0434\u0435 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0435 80 \u0438 443 \u043f\u043e\u0440\u0442\u044b<\/i>). \u0418 \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043a\u043e\u043f\u0438\u0439 <i>Nginx<\/i>, \u0447\u0435\u043c \u0443 \u0432\u0430\u0441 \u043c\u0430\u0448\u0438\u043d, \u0442\u043e \u043e\u043d \u0441\u043e\u043e\u0431\u0449\u0438\u0442 \u043e\u0431 \u044d\u0442\u043e\u043c:<\/p>\n<pre><code class=\"bash\">Error response from daemon: unable to find a node with port 443 available <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0435\u0440\u043d\u0451\u043c\u0441\u044f \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0441 <i>Debian<\/i> \u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c \u043f\u0430\u043a\u0435\u0442:<\/p>\n<pre><code class=\"bash\">root@2e68749354b2:\/# apt-get update && apt-get install dnsutils --no-install-recommends <\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043b\u0438 \u043d\u043e\u0432\u044b\u0435 <i>http<\/i> \u0441\u0435\u0440\u0432\u0438\u0441\u044b:<\/p>\n<pre><code class=\"bash\">root@866f410a5f18:\/# dig http.service.dc1.consul. ANY  ; &lt;&lt;&gt;&gt; DiG 9.9.5-12+b1-Debian &lt;&lt;&gt;&gt; http.service.dc1.consul. ANY ;; global options: +cmd ;; Got answer: ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 17731 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0  ;; QUESTION SECTION: ;http.service.dc1.consul.\tIN\tANY  ;; ANSWER SECTION: http.service.dc1.consul. 0\tIN\tA\t192.168.1.1 http.service.dc1.consul. 0\tIN\tA\t192.168.1.2 http.service.dc1.consul. 0\tIN\tA\t192.168.1.3  ;; Query time: 4 msec ;; SERVER: 172.17.0.1#53(172.17.0.1) ;; WHEN: Thu Nov 26 10:22:41 UTC 2015 ;; MSG SIZE  rcvd: 158 <\/code><\/pre>\n<p>  \u0412\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. <\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a \u0432\u0430\u0448\u0435\u043c\u0443 \u0441\u0435\u0440\u0432\u0438\u0441\u0443 \u043f\u043e \u0438\u043c\u0435\u043d\u0438 <i>http<\/i>, \u0442\u043e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c\u0441\u044f \u043f\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0443 <i><a href=\"https:\/\/ru.wikipedia.org\/wiki\/Round-robin_%28%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%29\">Round-robin<\/a><\/i>. \u0415\u0441\u043b\u0438 \u0432\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u0441 <i>Nginx<\/i> \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0432\u044b\u0448\u0435\u0443\u043a\u0430\u0437\u0430\u043d\u043d\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443, \u0442\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u0435, \u0447\u0442\u043e \u0435\u0433\u043e \u0443\u0436\u0435 \u043d\u0435\u0442 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435. <\/p>\n<p>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0436\u0434\u0443 \u00ab\u0436\u0438\u0432\u044b\u043c\u0438\u00bb \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c\u0438. \u0422\u0430\u043a\u0436\u0435 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u043e\u043c \u0437\u0434\u043e\u0440\u043e\u0432\u044c\u044f, <a href=\"https:\/\/consul.io\/docs\/agent\/checks.html\">\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442<\/a> <i>Consul<\/i>, \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0436\u0434\u0443 \u00ab\u0437\u0434\u043e\u0440\u043e\u0432\u044b\u043c\u0438\u00bb \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c\u0438 (<i>\u043d\u0435 \u043f\u0443\u0442\u0430\u0439\u0442\u0435 \u0441 \u043f\u0440\u043e\u0441\u0442\u043e \u00ab\u0436\u0438\u0432\u044b\u043c\u0438\u00bb<\/i>).<\/p>\n<p>  \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0438 \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0438 \u0432\u0441\u0451 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0431\u0435\u0437 \u0432\u0430\u0448\u0435\u0433\u043e \u0432\u043c\u0435\u0448\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430. <\/p>\n<h1><font color=\"#d62631\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/font><\/h1>\n<p>  \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0445\u043e\u0442\u0435\u043b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0430\u043c, \u043a\u0430\u043a \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u0441\u0432\u043e\u0451 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u0431\u043b\u0430\u043a\u043e. <\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u044b \u0431\u044b\u043b\u0438 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u044b, \u0430 \u044f \u0443\u0432\u0435\u0440\u0435\u043d, \u0447\u0442\u043e \u044d\u0442\u043e \u0442\u0430\u043a, \u0442\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u043b\u0438, \u0447\u0442\u043e \u043c\u044b \u043d\u0435 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c <i>Consul-Template<\/i>. \u042f \u0440\u0435\u0448\u0438\u043b \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0434\u043b\u044f \u0432\u0430\u0441 \u0435\u0449\u0451 \u043e\u0434\u043d\u0443 \u0447\u0430\u0441\u0442\u044c \u0441\u0432\u043e\u0438\u0445 \u043d\u0430\u0440\u0430\u0431\u043e\u0442\u043e\u043a \u0438 \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0432 \u043d\u0430\u0448\u0435 \u043e\u0431\u043b\u0430\u043a\u043e \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435. \u041f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u043e\u0441\u044c \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0440\u0435\u043c\u044f, \u0447\u0442\u043e \u0431\u044b \u043d\u0430\u0439\u0442\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0434\u043b\u044f \u044d\u0442\u0438\u0445 \u0446\u0435\u043b\u0435\u0439 \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u044d\u0442\u043e \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442 \u043d\u0430\u043c \u043c\u0430\u0441\u0441\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<\/p>\n<p>  \u041a\u0430\u043a\u0438\u043c\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c\u0438 \u00ab\u043d\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c\u00bb \u0432\u0430\u0448\u0435 \u043e\u0431\u043b\u0430\u043a\u043e \u2013 \u0440\u0435\u0448\u0430\u0442\u044c \u0432\u0430\u043c. \u042f \u043f\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043d\u0430 \u044d\u0442\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043e\u043b\u0433\u043e \u0438 \u043d\u0435 \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u043b \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c.<\/p>\n<p>  \u041d\u0430 \u044d\u0442\u043e\u043c \u0432\u0441\u0451. \u0412\u0441\u0435\u043c \u0441\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435. \u0421\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0432\u0430\u043c \u043e\u0431\u043b\u0430\u043a\u043e\u0432 \u0438 \u0443\u0434\u0430\u0447\u0438! <\/p>\n<p>  P.S. <i>\u042f \u0438\u0449\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0432 \u0441\u0442\u0430\u0440\u0442\u0430\u043f, \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0443 \u043c\u0435\u043d\u044f <a href=\"http:\/\/habrahabr.ru\/users\/vladkozlovski\/\">\u0432 \u043f\u0440\u043e\u0444\u0438\u043b\u0435<\/a>.<\/p>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043c\u0435\u043d\u044f \u0432 \u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0442\u044f\u0445 (\u0443\u043a\u0430\u0437\u0430\u043d\u044b <a href=\"http:\/\/habrahabr.ru\/users\/vladkozlovski\/\">\u0432 \u043f\u0440\u043e\u0444\u0438\u043b\u0435<\/a>) \u0438 \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0442\u0430\u043c \u0441\u0432\u043e\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u044b. \u0420\u0430\u0431\u043e\u0442\u044b \u0443 \u043c\u0435\u043d\u044f \u0432\u0441\u0435\u0433\u0434\u0430 \u043c\u043d\u043e\u0433\u043e, \u043d\u043e \u0432 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u044f \u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u0432\u0441\u0435\u043c \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c.<\/i>               <\/p>\n<div class=\"clear\"><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/264269\/\"> http:\/\/habrahabr.ru\/post\/264269\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>       <a href=\"http:\/\/habrahabr.ru\/post\/264269\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/57f\/c1f\/9a2\/57fc1f9a2dd440f8b98d7991c516aa1a.png\" alt=\"Docker friends\"\/><\/a><\/p>\n<p>  \u041f\u0440\u0438\u0432\u0435\u0442 \u0425\u0430\u0431\u0440! \u042f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e \u0446\u0438\u043a\u043b \u0441\u0442\u0430\u0442\u0435\u0439 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0437\u0430 5 \u043c\u0438\u043d\u0443\u0442. \u0412 <a href=\"http:\/\/habrahabr.ru\/post\/262397\/\">\u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0440\u0435\u0448\u0438\u0442\u044c \u043d\u0430\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 (<i>Service Discovery<\/i>). \u0412 \u044d\u0442\u043e \u0447\u0430\u0441\u0442\u0438 \u043c\u044b \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435, \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u043c \u043e\u0431\u043b\u0430\u043a\u043e \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u0430\u043a \u044d\u0442\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0432\u0435\u0434\u0443\u0442 \u0441\u0435\u0431\u044f \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0436\u0438\u0437\u043d\u0438.<\/p>\n<p>  \u041a\u0430\u043a \u0438 \u043f\u0440\u0435\u0436\u0434\u0435, \u0432\u0441\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0438 5 \u043c\u0438\u043d\u0443\u0442, \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0432 \u043d\u0430\u0431\u043e\u0440 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432 \u0434\u043b\u044f <i>Ansible<\/i>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0432\u0430\u0441 \u0438 <a href=\"https:\/\/github.com\/vkozlovski\/ansible-cloud-hosting\">\u0432\u044b\u043b\u043e\u0436\u0438\u043b \u043d\u0430 GitHub<\/a>.<\/p>\n<p>  \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043d\u0430\u0448\u0435 \u043e\u0431\u043b\u0430\u043a\u043e \u0441\u0442\u0430\u043b\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u0432 \u043d\u0451\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0431\u043e\u0301\u043b\u044c\u0448\u0435\u0435 \u0447\u0438\u0441\u043b\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0435\u0433\u043e \u0441\u0442\u0430\u043b\u043e \u043f\u0440\u043e\u0449\u0435. \u042f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u043b \u043d\u0430\u0431\u043e\u0440 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432 \u0438\u0437 \u043f\u0440\u043e\u0448\u043b\u044b\u0445 \u0441\u0442\u0430\u0442\u0435\u0439, \u0443\u0434\u0430\u043b\u0438\u043b \u0432\u0441\u0451 \u043b\u0438\u0448\u043d\u0435\u0435, \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u043b \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-269082","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/269082","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=269082"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/269082\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=269082"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=269082"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=269082"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}