{"id":2370,"date":"2016-05-13T14:07:31","date_gmt":"2016-05-13T07:07:31","guid":{"rendered":"https:\/\/engineerball.com\/?p=2370"},"modified":"2016-05-13T14:07:31","modified_gmt":"2016-05-13T07:07:31","slug":"ansible-with-docker","status":"publish","type":"post","link":"https:\/\/engineerball.com\/blog\/2016\/05\/13\/ansible-with-docker.html","title":{"rendered":"\u0e43\u0e0a\u0e49 Ansible \u0e2a\u0e31\u0e48\u0e07 Docker"},"content":{"rendered":"<p>Ansible \u0e04\u0e37\u0e2d\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d orchestration \u0e15\u0e31\u0e27\u0e19\u0e36\u0e48\u0e07\u0e17\u0e35\u0e48\u0e40\u0e23\u0e32\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e02\u0e35\u0e22\u0e19 step \u0e15\u0e48\u0e32\u0e07\u0e46 \u0e41\u0e25\u0e49\u0e27\u0e01\u0e47\u0e2a\u0e31\u0e48\u0e07\u0e43\u0e2b\u0e49 ansible \u0e17\u0e33\u0e07\u0e32\u0e19\u0e15\u0e32\u0e21\u0e17\u0e35\u0e48\u0e40\u0e23\u0e32\u0e40\u0e02\u0e35\u0e22\u0e19\u0e44\u0e27\u0e49 \u0e02\u0e49\u0e2d\u0e14\u0e35\u0e04\u0e37\u0e2d\u0e40\u0e23\u0e32\u0e40\u0e02\u0e35\u0e22\u0e19 script (ansible \u0e40\u0e04\u0e49\u0e32\u0e08\u0e30\u0e40\u0e23\u0e35\u0e22\u0e01\u0e27\u0e48\u0e32 playbook) \u0e40\u0e2d\u0e32\u0e44\u0e27\u0e49\u0e41\u0e25\u0e30\u0e2b\u0e32\u0e01\u0e40\u0e23\u0e32\u0e21\u0e35\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07 server \u0e17\u0e35\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e08\u0e30\u0e15\u0e49\u0e2d\u0e07 setup \u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e01\u0e31\u0e19\u0e2a\u0e31\u0e01 100 \u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07 \u0e40\u0e23\u0e32\u0e01\u0e47\u0e43\u0e0a\u0e49 ansible \u0e17\u0e33\u0e07\u0e32\u0e19\u0e41\u0e17\u0e19\u0e40\u0e23\u0e32\u0e44\u0e14\u0e49\u0e40\u0e25\u0e22 \u0e02\u0e49\u0e2d\u0e14\u0e35\u0e2d\u0e35\u0e01\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e04\u0e37\u0e2d\u0e21\u0e31\u0e19\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19 configuration management \u0e01\u0e25\u0e32\u0e07\u0e44\u0e14\u0e49\u0e14\u0e49\u0e27\u0e22\u0e27\u0e48\u0e32\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e40\u0e23\u0e32\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07\u0e19\u0e35\u0e49\u0e21\u0e31\u0e19\u0e17\u0e33\u0e2d\u0e30\u0e44\u0e23\u0e44\u0e1b\u0e1a\u0e49\u0e32\u0e07<\/p>\n<p>&nbsp;<\/p>\n<p>Ansible \u0e19\u0e31\u0e49\u0e19\u0e21\u0e35 module \u0e43\u0e2b\u0e49\u0e19\u0e33\u0e44\u0e1b\u0e43\u0e0a\u0e49\u0e44\u0e14\u0e49\u0e40\u0e22\u0e2d\u0e30\u0e41\u0e22\u0e30\u0e21\u0e32\u0e01\u0e21\u0e32\u0e22 \u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e02\u0e49\u0e32\u0e44\u0e1b\u0e28\u0e36\u0e01\u0e29\u0e32\u0e44\u0e14\u0e49\u0e08\u0e32\u0e01\u0e17\u0e35\u0e48\u0e40\u0e27\u0e47\u0e1a\u0e44\u0e0b\u0e15\u0e4c\u0e02\u0e2d\u0e07 ansible \u0e44\u0e14\u0e49\u0e40\u0e25\u0e22\u0e04\u0e23\u0e31\u0e1a \u0e41\u0e15\u0e48\u0e43\u0e19\u0e1a\u0e17\u0e04\u0e27\u0e32\u0e21\u0e19\u0e35\u0e49\u0e1c\u0e21\u0e08\u0e30\u0e41\u0e19\u0e30\u0e19\u0e33\u0e01\u0e32\u0e23\u0e19\u0e33 ansible \u0e43\u0e0a\u0e49 run docker container \u0e41\u0e1a\u0e1a\u0e04\u0e23\u0e48\u0e32\u0e27\u0e46 \u0e19\u0e30\u0e04\u0e23\u0e31\u0e1a<\/p>\n<p>&nbsp;<\/p>\n<p>\u0e2a\u0e21\u0e21\u0e15\u0e34\u0e27\u0e48\u0e32\u0e40\u0e23\u0e32\u0e21\u0e35\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e08\u0e30\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07\u0e41\u0e25\u0e30\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 docker \u0e2d\u0e22\u0e39\u0e48 5 \u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07 (centos 7) \u0e14\u0e31\u0e07\u0e19\u0e35\u0e49<\/p>\n<p>joy 192.168.100.1<br \/>\nfear 192.168.100.2<br \/>\nanger 192.168.100.3<br \/>\ndisgust 192.168.100.4<br \/>\nsadnes 192.168.100.5<\/p>\n<p>\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 Ansible \u0e17\u0e35\u0e48\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e40\u0e23\u0e32 (ubuntu16) \u0e40\u0e2d\u0e07<\/p>\n<p>sudo apt-get install ansible<\/p>\n<p>\u0e2b\u0e25\u0e31\u0e07\u0e08\u0e32\u0e01\u0e19\u0e31\u0e49\u0e19\u0e2a\u0e23\u0e49\u0e32\u0e07 folder \u0e43\u0e19\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e19\u0e35\u0e49<\/p>\n<p>.\/<br \/>\n|-roles\/<br \/>\n|&#8211;|-common<br \/>\n|&#8212;&#8212;|-tasks<br \/>\n|&#8212;&#8212;|-files<br \/>\n|&#8211;|-docker<br \/>\n|&#8212;&#8212;|-tasks<br \/>\n|&#8211;|-deploy<br \/>\n|&#8212;&#8212;|-tasks<\/p>\n<p>&nbsp;<\/p>\n<p>\u0e2a\u0e23\u0e49\u0e32\u0e07 hosts \u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e35\u0e08\u0e30\u0e43\u0e0a\u0e49 ssh \u0e44\u0e1b\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07<\/p>\n<pre>[all]\r\n\r\njoy ansible_host=192.168.100.1 ansible_ssh_user=root\r\n fear ansible_host=192.168.100.2 ansible_ssh_user=root\r\n anger ansible_host=192.168.100.3 ansible_ssh_user=root\r\n disgust ansible_host=192.168.100.4 ansible_ssh_user=root\r\n sadnes ansible_host=192.168.100.5 ansible_ssh_user=root<\/pre>\n<p>\u0e2a\u0e48\u0e27\u0e19\u0e27\u0e34\u0e18\u0e35\u0e01\u0e32\u0e23 connect \u0e1c\u0e21\u0e44\u0e21\u0e48\u0e02\u0e2d\u0e1e\u0e39\u0e14\u0e16\u0e36\u0e07\u0e19\u0e30 \u0e43\u0e0a\u0e49\u0e27\u0e34\u0e18\u0e35\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19\u0e01\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49 ssh-key \u0e2d\u0e48\u0e30\u0e41\u0e2b\u0e25\u0e48\u0e30 \u0e44\u0e1b\u0e2b\u0e32\u0e2d\u0e48\u0e32\u0e19\u0e40\u0e2d\u0e32\u0e40\u0e2d\u0e07\u0e41\u0e25\u0e49\u0e27\u0e01\u0e31\u0e19<\/p>\n<h2>\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 yum repo \u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e15\u0e34\u0e21\u0e43\u0e2b\u0e49\u0e01\u0e31\u0e1a centos7<\/h2>\n<p>\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e44\u0e1f\u0e25\u0e4c\u0e43\u0e19 roles\/common\/tasks\/main.yml<\/p>\n<pre style=\"background: #000; color: #f8f8f8;\"><span style=\"color: #aeaeae; font-style: italic;\">---<\/span>\r\n<span style=\"color: #e28964;\">-<\/span> <span style=\"color: #dad085;\">name<\/span>: <span style=\"color: #e28964;\">Copy<\/span> <span style=\"color: #e28964;\">the<\/span> EPEL repository definition\r\n  <span style=\"color: #e28964;\">copy<\/span>: src<span style=\"color: #e28964;\">=<\/span>epel.repo dest<span style=\"color: #e28964;\">=<\/span><span style=\"color: #e28964;\">\/<\/span>etc<span style=\"color: #e28964;\">\/<\/span>yum.repos.d<span style=\"color: #e28964;\">\/\r\n<\/span>\r\n<span style=\"color: #e28964;\">-<\/span> <span style=\"color: #dad085;\">name<\/span>: Create <span style=\"color: #e28964;\">the<\/span> GPG key <span style=\"color: #e28964;\">for<\/span> EPEL\r\n  <span style=\"color: #e28964;\">copy<\/span>: src<span style=\"color: #e28964;\">=<\/span>RPM<span style=\"color: #e28964;\">-<\/span>GPG<span style=\"color: #e28964;\">-<\/span>KEY<span style=\"color: #e28964;\">-<\/span>EPEL<span style=\"color: #3387cc;\">-7<\/span> dest<span style=\"color: #e28964;\">=<\/span><span style=\"color: #e28964;\">\/<\/span>etc<span style=\"color: #e28964;\">\/<\/span>pki<span style=\"color: #e28964;\">\/<\/span>rpm<span style=\"color: #e28964;\">-<\/span>gpg\r\n<\/pre>\n<p>\u0e41\u0e25\u0e30\u0e20\u0e32\u0e22\u0e43\u0e19 roles\/common\/files\/ \u0e1b\u0e23\u0e30\u0e01\u0e2d\u0e1a\u0e14\u0e49\u0e27\u0e22\u0e44\u0e1f\u0e25\u0e4c<\/p>\n<ul>\n<li>epel.repo ($ wget <a href=\"https:\/\/raw.githubusercontent.com\/ansible\/ansible-examples\/master\/wordpress-nginx_rhel7\/roles\/common\/files\/epel.repo)\">https:\/\/raw.githubusercontent.com\/ansible\/ansible-examples\/master\/wordpress-nginx_rhel7\/roles\/common\/files\/epel.repo)<\/a><\/li>\n<li>RPM-GPG-KEY-EPEL-7 ($ wget\u00a0<a href=\"https:\/\/raw.githubusercontent.com\/ansible\/ansible-examples\/master\/wordpress-nginx_rhel7\/roles\/common\/files\/RPM-GPG-KEY-EPEL-7)\">https:\/\/raw.githubusercontent.com\/ansible\/ansible-examples\/master\/wordpress-nginx_rhel7\/roles\/common\/files\/RPM-GPG-KEY-EPEL-7)<\/a><\/li>\n<\/ul>\n<h2>\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 docker<\/h2>\n<p>\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e44\u0e1f\u0e25\u0e4c\u0e43\u0e19 roles\/docker\/tasks\/main.yml<\/p>\n<p>&nbsp;<\/p>\n<pre style=\"background: #000; color: #f8f8f8;\"><span style=\"color: #aeaeae; font-style: italic;\">---<\/span>\r\n<span style=\"color: #e28964;\">-<\/span>   <span style=\"color: #dad085;\">name<\/span>: Install python setup tools\r\n    yum: <span style=\"color: #dad085;\">name<\/span><span style=\"color: #e28964;\">=<\/span>python<span style=\"color: #e28964;\">-<\/span>setuptools\r\n    tags: docker\r\n\r\n<span style=\"color: #e28964;\">-<\/span>   <span style=\"color: #dad085;\">name<\/span>: Install Pypi\r\n    easy_install: <span style=\"color: #dad085;\">name<\/span><span style=\"color: #e28964;\">=<\/span>pip\r\n    tags: docker\r\n\r\n<span style=\"color: #e28964;\">-<\/span>   <span style=\"color: #dad085;\">name<\/span>: Install docker<span style=\"color: #e28964;\">-<\/span>py\r\n    pip: <span style=\"color: #dad085;\">name<\/span><span style=\"color: #e28964;\">=<\/span>docker<span style=\"color: #e28964;\">-<\/span>py\r\n    tags: docker\r\n\r\n<span style=\"color: #e28964;\">-<\/span>   <span style=\"color: #dad085;\">name<\/span>: Install Docker\r\n    yum: <span style=\"color: #dad085;\">name<\/span><span style=\"color: #e28964;\">=<\/span>docker state<span style=\"color: #e28964;\">=<\/span>latest\r\n    tags: docker\r\n\r\n<span style=\"color: #e28964;\">-<\/span>   <span style=\"color: #dad085;\">name<\/span>: Make sure Docker <span style=\"color: #e28964;\">is<\/span> <span style=\"color: #dad085;\">running<\/span>\r\n    service: <span style=\"color: #dad085;\">name<\/span><span style=\"color: #e28964;\">=<\/span>docker state<span style=\"color: #e28964;\">=<\/span><span style=\"color: #dad085;\">running<\/span>\r\n    tags: docker\r\n\r\n<\/pre>\n<p>\u0e40\u0e2a\u0e23\u0e47\u0e08\u0e41\u0e25\u0e49\u0e27\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e35\u0e48<\/p>\n<p>.\/site.yml<\/p>\n<p>&nbsp;<\/p>\n<pre style=\"background: #000; color: #f8f8f8;\"><span style=\"color: #aeaeae; font-style: italic;\">---<\/span>\r\n<span style=\"color: #e28964;\">-<\/span> <span style=\"color: #dad085;\">name<\/span>: Install Docker\r\n  hosts: all\r\n  remote_user: root\r\n  roles:\r\n    - common\r\n    <span style=\"color: #e28964;\">-<\/span> docker\r\n\r\n<\/pre>\n<pre>\u0e40\u0e2a\u0e23\u0e47\u0e08\u0e41\u0e25\u0e49\u0e27\u0e43\u0e2b\u0e49\u0e2a\u0e31\u0e48\u0e07\r\n $ ansible-playbook -i hosts site.yml<\/pre>\n<p>\u0e2b\u0e25\u0e31\u0e07\u0e08\u0e32\u0e01\u0e19\u0e31\u0e49\u0e19 ansible \u0e08\u0e30\u0e17\u0e33\u0e01\u0e32\u0e23 ssh \u0e44\u0e1b\u0e22\u0e31\u0e07 server \u0e43\u0e19\u0e44\u0e1f\u0e25\u0e4c hosts \u0e17\u0e35\u0e48\u0e40\u0e23\u0e32\u0e44\u0e14\u0e49\u0e43\u0e2a\u0e48\u0e40\u0e2d\u0e32\u0e44\u0e27\u0e49\u0e41\u0e25\u0e30\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 software \u0e15\u0e32\u0e21 task \u0e17\u0e35\u0e48\u0e40\u0e23\u0e32\u0e44\u0e14\u0e49\u0e43\u0e2a\u0e48\u0e44\u0e27\u0e49\u0e43\u0e19\u0e44\u0e1f\u0e25\u0e4c roles\/docker\/tasks\/main.yml<\/p>\n<h2>\u0e17\u0e14\u0e2a\u0e2d\u0e1a docker run<\/h2>\n<p>\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e44\u0e1f\u0e25\u0e4c\u0e43\u0e19 roles\/deploy-docker\/tasks\/main.yml<\/p>\n<p>&nbsp;<\/p>\n<pre style=\"background: #000; color: #f8f8f8;\"><span style=\"color: #aeaeae; font-style: italic;\">---<\/span>\r\n<span style=\"color: #e28964;\">-<\/span> <span style=\"color: #dad085;\">name<\/span>: Deploy Docker image\r\n  docker:\r\n    <span style=\"color: #dad085;\">name<\/span>: alpine<span style=\"color: #e28964;\">-<\/span>nginx\r\n    image: smebberson<span style=\"color: #e28964;\">\/<\/span>alpine<span style=\"color: #e28964;\">-<\/span>nginx\r\n    state: started\r\n    ports:\r\n      <span style=\"color: #e28964;\">-<\/span> <span style=\"color: #65b042;\">\"80:80\"<\/span>\r\n      <span style=\"color: #e28964;\">-<\/span> <span style=\"color: #65b042;\">\"443:443\"<\/span>\r\n\r\n<\/pre>\n<p>\u0e2b\u0e25\u0e31\u0e07\u0e08\u0e32\u0e01\u0e19\u0e35\u0e49\u0e43\u0e2b\u0e49\u0e2a\u0e31\u0e48\u0e07<\/p>\n<pre>$ ansible-playbook -i hosts site.yml<\/pre>\n<p>\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e2a\u0e31\u0e48\u0e07\u0e43\u0e2b\u0e49 ansible start docker \u0e15\u0e32\u0e21 task \u0e04\u0e23\u0e31\u0e1a \u0e16\u0e49\u0e32\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\u0e25\u0e2d\u0e07\u0e43\u0e0a\u0e49\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e19\u0e35\u0e49\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e02\u0e2d\u0e07 docker<\/p>\n<pre>$ ansible -i hosts all -m command -a \"docker ps -a<\/pre>\n<p>docker \u0e01\u0e47\u0e08\u0e30\u0e16\u0e39\u0e01 start \u0e1a\u0e19\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e40\u0e23\u0e32\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e41\u0e25\u0e49\u0e27<\/p>\n<pre>joy | SUCCESS | rc=0 &gt;&gt;\r\nCONTAINER ID\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 IMAGE\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 COMMAND\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 CREATED\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 STATUS\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 PORTS\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 NAMES\r\nf4f08a5ea7c3\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 smebberson\/alpine-nginx\u00a0\u00a0 \"\/init\"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 About a minute ago\u00a0\u00a0 Up About a minute\u00a0\u00a0 0.0.0.0:80-&gt;80\/tcp, 0.0.0.0:443-&gt;443\/tcp\u00a0\u00a0 alpine-nginx\r\n\r\nfear | SUCCESS | rc=0 &gt;&gt;\r\nCONTAINER ID\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 IMAGE\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 COMMAND\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 CREATED\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 STATUS\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 PORTS\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 NAMES\r\nab3e51c0629b\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 smebberson\/alpine-nginx\u00a0\u00a0 \"\/init\"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 About a minute ago\u00a0\u00a0 Up About a minute\u00a0\u00a0 0.0.0.0:80-&gt;80\/tcp, 0.0.0.0:443-&gt;443\/tcp\u00a0\u00a0 alpine-nginx\r\n\r\nanger | SUCCESS | rc=0 &gt;&gt;\r\nCONTAINER ID\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 IMAGE\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 COMMAND\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 CREATED\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 STATUS\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 PORTS\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 NAMES\r\n79c0d72c591a\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 smebberson\/alpine-nginx\u00a0\u00a0 \"\/init\"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 About a minute ago\u00a0\u00a0 Up About a minute\u00a0\u00a0 0.0.0.0:80-&gt;80\/tcp, 0.0.0.0:443-&gt;443\/tcp\u00a0\u00a0 alpine-nginx\r\n\r\n\r\ndisgust | SUCCESS | rc=0 &gt;&gt;\r\nCONTAINER ID\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 IMAGE\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 COMMAND\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 CREATED\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 STATUS\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 PORTS\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 NAMES\r\n58d8f83b00b6 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 smebberson\/alpine-nginx\u00a0\u00a0 \"\/init\"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 About a minute ago\u00a0\u00a0 Up About a minute\u00a0\u00a0 0.0.0.0:80-&gt;80\/tcp, 0.0.0.0:443-&gt;443\/tcp\u00a0\u00a0 alpine-nginx\r\n\r\nsadness | SUCCESS | rc=0 &gt;&gt;\r\nCONTAINER ID\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 IMAGE\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 COMMAND\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 CREATED\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 STATUS\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 PORTS\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 NAMES\r\n0a13e0f1db70 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 smebberson\/alpine-nginx\u00a0\u00a0 \"\/init\"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 About a minute ago\u00a0\u00a0 Up About a minute\u00a0\u00a0 0.0.0.0:80-&gt;80\/tcp, 0.0.0.0:443-&gt;443\/tcp\u00a0\u00a0 alpine-nginx\r\n\r\n\u0e2b\u0e32\u0e01\u0e40\u0e23\u0e32\u0e40\u0e02\u0e49\u0e32\u0e44\u0e1b\u0e17\u0e35\u0e48 ip \u0e02\u0e2d\u0e07\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07 remote \u0e17\u0e35\u0e48\u0e40\u0e1e\u0e34\u0e48\u0e07\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07\u0e44\u0e1b\u0e01\u0e47\u0e08\u0e30\u0e1e\u0e1a\u0e27\u0e48\u0e32 docker \u0e44\u0e14\u0e49 start \u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\r\n<a href=\"https:\/\/engineerball.com\/wp-content\/uploads\/2016\/05\/alpine-nginx.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-2375 alignleft\" src=\"https:\/\/engineerball.com\/wp-content\/uploads\/2016\/05\/alpine-nginx.png\" alt=\"alpine-nginx\" width=\"614\" height=\"407\" srcset=\"https:\/\/engineerball.com\/blog\/wp-content\/uploads\/2016\/05\/alpine-nginx.png 614w, https:\/\/engineerball.com\/blog\/wp-content\/uploads\/2016\/05\/alpine-nginx-420x278.png 420w, https:\/\/engineerball.com\/blog\/wp-content\/uploads\/2016\/05\/alpine-nginx-528x350.png 528w\" sizes=\"(max-width: 614px) 100vw, 614px\" \/><\/a><\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h2>\u0e2b\u0e32\u0e01\u0e40\u0e08\u0e2d\u0e1b\u0e31\u0e0d\u0e2b\u0e32<\/h2>\n<p>\u0e1c\u0e21\u0e25\u0e2d\u0e07\u0e23\u0e31\u0e19\u0e15\u0e2d\u0e19\u0e41\u0e23\u0e01\u0e1e\u0e1a\u0e1b\u0e31\u0e0d\u0e2b\u0e32\u0e14\u0e31\u0e07\u0e19\u0e35\u0e49<\/p>\n<p>fatal: [joy]: FAILED! =&gt; {&#8220;changed&#8221;: false, &#8220;failed&#8221;: true, &#8220;msg&#8221;: &#8220;Docker API Error: client is newer than server (client API version: 1.22, server API version: 1.21)&#8221;}<\/p>\n<p>\u0e43\u0e2b\u0e49\u0e17\u0e33\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e17\u0e35\u0e48\u0e44\u0e1f\u0e25\u0e4c<\/p>\n<p>roles\/docker\/tasks\/main.yml<\/p>\n<pre style=\"background: #000; color: #f8f8f8;\"><span style=\"color: #aeaeae; font-style: italic;\">---<\/span>\r\n<span style=\"color: #e28964;\">-<\/span>   <span style=\"color: #dad085;\">name<\/span>: Install python setup tools\r\n    yum: <span style=\"color: #dad085;\">name<\/span><span style=\"color: #e28964;\">=<\/span>python<span style=\"color: #e28964;\">-<\/span>setuptools\r\n    tags: docker\r\n\r\n<span style=\"color: #e28964;\">-<\/span>   <span style=\"color: #dad085;\">name<\/span>: Install Pypi\r\n    easy_install: <span style=\"color: #dad085;\">name<\/span><span style=\"color: #e28964;\">=<\/span>pip\r\n    tags: docker\r\n\r\n<span style=\"color: #e28964;\">-<\/span>   <span style=\"color: #dad085;\">name<\/span>: Install docker<span style=\"color: #e28964;\">-<\/span>py\r\n    pip: <span style=\"color: #dad085;\">name<\/span><span style=\"color: #e28964;\">=<\/span>docker<span style=\"color: #e28964;\">-<\/span>py <span style=\"color: #3387cc;\">version<\/span><span style=\"color: #e28964;\">=<\/span><span style=\"color: #3387cc;\">1.2<\/span>.<span style=\"color: #3387cc;\">3<\/span>\r\n    tags: docker\r\n\r\n<span style=\"color: #e28964;\">-<\/span>   <span style=\"color: #dad085;\">name<\/span>: Install Docker\r\n    yum: <span style=\"color: #dad085;\">name<\/span><span style=\"color: #e28964;\">=<\/span>docker state<span style=\"color: #e28964;\">=<\/span>latest\r\n    tags: docker\r\n\r\n<span style=\"color: #e28964;\">-<\/span>   <span style=\"color: #dad085;\">name<\/span>: Make sure Docker <span style=\"color: #e28964;\">is<\/span> <span style=\"color: #dad085;\">running<\/span>\r\n    service: <span style=\"color: #dad085;\">name<\/span><span style=\"color: #e28964;\">=<\/span>docker state<span style=\"color: #e28964;\">=<\/span><span style=\"color: #dad085;\">running<\/span>\r\n    tags: docker\r\n<\/pre>\n<p>\u0e41\u0e25\u0e30\u0e23\u0e31\u0e19\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07<\/p>\n<pre> ansible-playbook -i hosts site.yml<\/pre>\n<p>\u0e01\u0e47\u0e08\u0e30\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e44\u0e14\u0e49\u0e1b\u0e01\u0e15\u0e34\u0e41\u0e25\u0e49\u0e27\u0e04\u0e23\u0e31\u0e1a<\/p>\n<p>ref: <a href=\"http:\/\/docs.ansible.com\/ansible\/docker_module.html\">http:\/\/docs.ansible.com\/ansible\/docker_module.html<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ansible \u0e04\u0e37\u0e2d\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d orchestration \u0e15\u0e31\u0e27\u0e19\u0e36\u0e48\u0e07\u0e17\u0e35\u0e48\u0e40\u0e23\u0e32\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e02\u0e35\u0e22\u0e19 step \u0e15\u0e48\u0e32\u0e07\u0e46 \u0e41\u0e25\u0e49\u0e27\u0e01\u0e47\u0e2a\u0e31\u0e48\u0e07\u0e43\u0e2b\u0e49 ansible \u0e17\u0e33\u0e07\u0e32\u0e19\u0e15\u0e32\u0e21\u0e17\u0e35\u0e48\u0e40\u0e23\u0e32\u0e40\u0e02\u0e35\u0e22\u0e19\u0e44\u0e27\u0e49 \u0e02\u0e49\u0e2d\u0e14\u0e35\u0e04\u0e37\u0e2d\u0e40\u0e23\u0e32\u0e40\u0e02\u0e35\u0e22\u0e19 script (ansible \u0e40\u0e04\u0e49\u0e32\u0e08\u0e30\u0e40\u0e23\u0e35\u0e22\u0e01\u0e27\u0e48\u0e32 playbook) \u0e40\u0e2d\u0e32\u0e44\u0e27\u0e49\u0e41\u0e25\u0e30\u0e2b\u0e32\u0e01\u0e40\u0e23\u0e32\u0e21\u0e35\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07&#8230;<\/p>\n<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"https:\/\/engineerball.com\/blog\/2016\/05\/13\/ansible-with-docker.html\">Read the post<span class=\"screen-reader-text\">\u0e43\u0e0a\u0e49 Ansible \u0e2a\u0e31\u0e48\u0e07 Docker<\/span><\/a><\/div>\n","protected":false},"author":1,"featured_media":2377,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[11],"tags":[383,384,338,362],"jetpack_publicize_connections":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u0e43\u0e0a\u0e49 Ansible \u0e2a\u0e31\u0e48\u0e07 Docker - EngineerBALL<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/engineerball.com\/blog\/2016\/05\/13\/ansible-with-docker.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u0e43\u0e0a\u0e49 Ansible \u0e2a\u0e31\u0e48\u0e07 Docker - EngineerBALL\" \/>\n<meta property=\"og:description\" content=\"Ansible \u0e04\u0e37\u0e2d\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d orchestration \u0e15\u0e31\u0e27\u0e19\u0e36\u0e48\u0e07\u0e17\u0e35\u0e48\u0e40\u0e23\u0e32\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e02\u0e35\u0e22\u0e19 step \u0e15\u0e48\u0e32\u0e07\u0e46 \u0e41\u0e25\u0e49\u0e27\u0e01\u0e47\u0e2a\u0e31\u0e48\u0e07\u0e43\u0e2b\u0e49 ansible \u0e17\u0e33\u0e07\u0e32\u0e19\u0e15\u0e32\u0e21\u0e17\u0e35\u0e48\u0e40\u0e23\u0e32\u0e40\u0e02\u0e35\u0e22\u0e19\u0e44\u0e27\u0e49 \u0e02\u0e49\u0e2d\u0e14\u0e35\u0e04\u0e37\u0e2d\u0e40\u0e23\u0e32\u0e40\u0e02\u0e35\u0e22\u0e19 script (ansible \u0e40\u0e04\u0e49\u0e32\u0e08\u0e30\u0e40\u0e23\u0e35\u0e22\u0e01\u0e27\u0e48\u0e32 playbook) \u0e40\u0e2d\u0e32\u0e44\u0e27\u0e49\u0e41\u0e25\u0e30\u0e2b\u0e32\u0e01\u0e40\u0e23\u0e32\u0e21\u0e35\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07&#8230;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/engineerball.com\/blog\/2016\/05\/13\/ansible-with-docker.html\" \/>\n<meta property=\"og:site_name\" content=\"EngineerBALL\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/engineerball\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/troueblemaker.khunpech?ref=tn_tnmn\" \/>\n<meta property=\"article:published_time\" content=\"2016-05-13T07:07:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/engineerball.com\/blog\/wp-content\/uploads\/2016\/05\/BgPMuk9CAAAjQjE.png\" \/>\n\t<meta property=\"og:image:width\" content=\"598\" \/>\n\t<meta property=\"og:image:height\" content=\"378\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"ball\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@engineerball\" \/>\n<meta name=\"twitter:site\" content=\"@engineerball\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"ball\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/engineerball.com\/blog\/2016\/05\/13\/ansible-with-docker.html\",\"url\":\"https:\/\/engineerball.com\/blog\/2016\/05\/13\/ansible-with-docker.html\",\"name\":\"\u0e43\u0e0a\u0e49 Ansible \u0e2a\u0e31\u0e48\u0e07 Docker - EngineerBALL\",\"isPartOf\":{\"@id\":\"https:\/\/engineerball.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/engineerball.com\/blog\/2016\/05\/13\/ansible-with-docker.html#primaryimage\"},\"image\":{\"@id\":\"https:\/\/engineerball.com\/blog\/2016\/05\/13\/ansible-with-docker.html#primaryimage\"},\"thumbnailUrl\":\"https:\/\/engineerball.com\/blog\/wp-content\/uploads\/2016\/05\/BgPMuk9CAAAjQjE.png\",\"datePublished\":\"2016-05-13T07:07:31+00:00\",\"dateModified\":\"2016-05-13T07:07:31+00:00\",\"author\":{\"@id\":\"https:\/\/engineerball.com\/blog\/#\/schema\/person\/415320d0da2d392375528001aa6ea53e\"},\"breadcrumb\":{\"@id\":\"https:\/\/engineerball.com\/blog\/2016\/05\/13\/ansible-with-docker.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/engineerball.com\/blog\/2016\/05\/13\/ansible-with-docker.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/engineerball.com\/blog\/2016\/05\/13\/ansible-with-docker.html#primaryimage\",\"url\":\"https:\/\/engineerball.com\/blog\/wp-content\/uploads\/2016\/05\/BgPMuk9CAAAjQjE.png\",\"contentUrl\":\"https:\/\/engineerball.com\/blog\/wp-content\/uploads\/2016\/05\/BgPMuk9CAAAjQjE.png\",\"width\":598,\"height\":378},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/engineerball.com\/blog\/2016\/05\/13\/ansible-with-docker.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/engineerball.com\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u0e43\u0e0a\u0e49 Ansible \u0e2a\u0e31\u0e48\u0e07 Docker\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/engineerball.com\/blog\/#website\",\"url\":\"https:\/\/engineerball.com\/blog\/\",\"name\":\"EngineerBALL\",\"description\":\"Damn Those Sweet Memories\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/engineerball.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/engineerball.com\/blog\/#\/schema\/person\/415320d0da2d392375528001aa6ea53e\",\"name\":\"ball\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/engineerball.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d8d00c01f55942d7c8f2dbc70a9cefe0?s=96&d=monsterid&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d8d00c01f55942d7c8f2dbc70a9cefe0?s=96&d=monsterid&r=g\",\"caption\":\"ball\"},\"description\":\"Teerapat Khunpech Live, Tech, Beers, Bike, Cafe Racer, Docker, Devops, Eco-System\",\"sameAs\":[\"https:\/\/engineerball.com\",\"https:\/\/www.facebook.com\/troueblemaker.khunpech?ref=tn_tnmn\",\"https:\/\/twitter.com\/engineerball\"],\"url\":\"https:\/\/engineerball.com\/blog\/author\/ball\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u0e43\u0e0a\u0e49 Ansible \u0e2a\u0e31\u0e48\u0e07 Docker - EngineerBALL","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:\/\/engineerball.com\/blog\/2016\/05\/13\/ansible-with-docker.html","og_locale":"en_US","og_type":"article","og_title":"\u0e43\u0e0a\u0e49 Ansible \u0e2a\u0e31\u0e48\u0e07 Docker - EngineerBALL","og_description":"Ansible \u0e04\u0e37\u0e2d\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d orchestration \u0e15\u0e31\u0e27\u0e19\u0e36\u0e48\u0e07\u0e17\u0e35\u0e48\u0e40\u0e23\u0e32\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e02\u0e35\u0e22\u0e19 step \u0e15\u0e48\u0e32\u0e07\u0e46 \u0e41\u0e25\u0e49\u0e27\u0e01\u0e47\u0e2a\u0e31\u0e48\u0e07\u0e43\u0e2b\u0e49 ansible \u0e17\u0e33\u0e07\u0e32\u0e19\u0e15\u0e32\u0e21\u0e17\u0e35\u0e48\u0e40\u0e23\u0e32\u0e40\u0e02\u0e35\u0e22\u0e19\u0e44\u0e27\u0e49 \u0e02\u0e49\u0e2d\u0e14\u0e35\u0e04\u0e37\u0e2d\u0e40\u0e23\u0e32\u0e40\u0e02\u0e35\u0e22\u0e19 script (ansible \u0e40\u0e04\u0e49\u0e32\u0e08\u0e30\u0e40\u0e23\u0e35\u0e22\u0e01\u0e27\u0e48\u0e32 playbook) \u0e40\u0e2d\u0e32\u0e44\u0e27\u0e49\u0e41\u0e25\u0e30\u0e2b\u0e32\u0e01\u0e40\u0e23\u0e32\u0e21\u0e35\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07&#8230;","og_url":"https:\/\/engineerball.com\/blog\/2016\/05\/13\/ansible-with-docker.html","og_site_name":"EngineerBALL","article_publisher":"https:\/\/www.facebook.com\/engineerball","article_author":"https:\/\/www.facebook.com\/troueblemaker.khunpech?ref=tn_tnmn","article_published_time":"2016-05-13T07:07:31+00:00","og_image":[{"width":598,"height":378,"url":"https:\/\/engineerball.com\/blog\/wp-content\/uploads\/2016\/05\/BgPMuk9CAAAjQjE.png","type":"image\/png"}],"author":"ball","twitter_card":"summary_large_image","twitter_creator":"@engineerball","twitter_site":"@engineerball","twitter_misc":{"Written by":"ball","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/engineerball.com\/blog\/2016\/05\/13\/ansible-with-docker.html","url":"https:\/\/engineerball.com\/blog\/2016\/05\/13\/ansible-with-docker.html","name":"\u0e43\u0e0a\u0e49 Ansible \u0e2a\u0e31\u0e48\u0e07 Docker - EngineerBALL","isPartOf":{"@id":"https:\/\/engineerball.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/engineerball.com\/blog\/2016\/05\/13\/ansible-with-docker.html#primaryimage"},"image":{"@id":"https:\/\/engineerball.com\/blog\/2016\/05\/13\/ansible-with-docker.html#primaryimage"},"thumbnailUrl":"https:\/\/engineerball.com\/blog\/wp-content\/uploads\/2016\/05\/BgPMuk9CAAAjQjE.png","datePublished":"2016-05-13T07:07:31+00:00","dateModified":"2016-05-13T07:07:31+00:00","author":{"@id":"https:\/\/engineerball.com\/blog\/#\/schema\/person\/415320d0da2d392375528001aa6ea53e"},"breadcrumb":{"@id":"https:\/\/engineerball.com\/blog\/2016\/05\/13\/ansible-with-docker.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/engineerball.com\/blog\/2016\/05\/13\/ansible-with-docker.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/engineerball.com\/blog\/2016\/05\/13\/ansible-with-docker.html#primaryimage","url":"https:\/\/engineerball.com\/blog\/wp-content\/uploads\/2016\/05\/BgPMuk9CAAAjQjE.png","contentUrl":"https:\/\/engineerball.com\/blog\/wp-content\/uploads\/2016\/05\/BgPMuk9CAAAjQjE.png","width":598,"height":378},{"@type":"BreadcrumbList","@id":"https:\/\/engineerball.com\/blog\/2016\/05\/13\/ansible-with-docker.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/engineerball.com\/blog"},{"@type":"ListItem","position":2,"name":"\u0e43\u0e0a\u0e49 Ansible \u0e2a\u0e31\u0e48\u0e07 Docker"}]},{"@type":"WebSite","@id":"https:\/\/engineerball.com\/blog\/#website","url":"https:\/\/engineerball.com\/blog\/","name":"EngineerBALL","description":"Damn Those Sweet Memories","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/engineerball.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/engineerball.com\/blog\/#\/schema\/person\/415320d0da2d392375528001aa6ea53e","name":"ball","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/engineerball.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d8d00c01f55942d7c8f2dbc70a9cefe0?s=96&d=monsterid&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d8d00c01f55942d7c8f2dbc70a9cefe0?s=96&d=monsterid&r=g","caption":"ball"},"description":"Teerapat Khunpech Live, Tech, Beers, Bike, Cafe Racer, Docker, Devops, Eco-System","sameAs":["https:\/\/engineerball.com","https:\/\/www.facebook.com\/troueblemaker.khunpech?ref=tn_tnmn","https:\/\/twitter.com\/engineerball"],"url":"https:\/\/engineerball.com\/blog\/author\/ball"}]}},"jetpack_featured_media_url":"https:\/\/engineerball.com\/blog\/wp-content\/uploads\/2016\/05\/BgPMuk9CAAAjQjE.png","jetpack_shortlink":"https:\/\/wp.me\/p3Nmbl-Ce","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/engineerball.com\/blog\/wp-json\/wp\/v2\/posts\/2370"}],"collection":[{"href":"https:\/\/engineerball.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/engineerball.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/engineerball.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/engineerball.com\/blog\/wp-json\/wp\/v2\/comments?post=2370"}],"version-history":[{"count":1,"href":"https:\/\/engineerball.com\/blog\/wp-json\/wp\/v2\/posts\/2370\/revisions"}],"predecessor-version":[{"id":2555,"href":"https:\/\/engineerball.com\/blog\/wp-json\/wp\/v2\/posts\/2370\/revisions\/2555"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/engineerball.com\/blog\/wp-json\/wp\/v2\/media\/2377"}],"wp:attachment":[{"href":"https:\/\/engineerball.com\/blog\/wp-json\/wp\/v2\/media?parent=2370"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/engineerball.com\/blog\/wp-json\/wp\/v2\/categories?post=2370"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/engineerball.com\/blog\/wp-json\/wp\/v2\/tags?post=2370"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}