ããã«ã¡ã¯HabrïŒ éå»1.5幎éãä¿¡é Œã§ããã¯ã©ãŠããã¹ãã£ã³ã°ãå¿ èŠãšãããããžã§ã¯ãã«åãçµãã§ããŸããã ãããŸã§ãç§ã¯10幎以äžWebããã°ã©ãã³ã°ã«æºãã£ãŠããŸããããã¹ãã£ã³ã°ãæ§ç¯ããããšã決ãããšããç§ã¯ãã®åéã§æ¯èŒçè¡šé¢çãªç¥èããããçŸåšã¯ã·ã¹ãã 管çè ã§ã¯ãããŸããã Ansibleã®ã¹ã¯ãªããã»ãããå®è¡ããã ãã§ã5å以å ã«æ®éã®ããã°ã©ããŒãè¡ãããšãã§ããŸããããã¯ç§ãããªãã®ããã«ç¹å¥ã«æºåããGitHubã«æçš¿ããŸãã ã
ç§ã®ç®æšã¯ãç¬èªã®ã¯ã©ãŠããã¹ãã£ã³ã°ãå¿ èŠãªå Žåã«æ§ç¯ãããã®ããããããã«ãããŒã«ã®ãªã¹ããšå ±éã®ç解ãæäŸããããšã§ãã 䜿çšããããŒã«ãéžæãããšããç§ã¯ã·ã³ãã«ããé«å質ã®ããã¥ã¡ã³ããå®å®æ§ã«çŠç¹ãåãããŸããã æ¬çªç°å¢ã§ããããã¹ãŠã䜿çšããåã«ãå¿ ãã·ã¹ãã 管çè ã«çžè«ããå¿ èŠããããŸãïŒ ãããŒã¿ãã¹ããŒã¿ã¹ã®äžéšã®ã³ã³ããŒãã³ãã䜿çšããŠããŸãïŒ2015幎6æïŒ ïŒã
å 容
- ããŒã0ïŒ ä»®æ³å
- ããŒã1ïŒAnsibleãDockerãDocker Swarm
- ããŒã2ïŒ ãµãŒãã¹ã®çºèŠ
- ããŒã3ïŒ é äºãç»é²è ãé äºãã³ãã¬ãŒã
- ...
ãã¹ãã£ã³ã°ãææããçç±
äž»ãªçç±-ç§ã¯å¿ èŠãªçµéšãåŸããã£ãã ç§ã¯ãŸããŸãããã°ã©ãã³ã°ããé¢ãã管çäžã®åé¡ãæ±ããŠããŸãã åªããèµ·æ¥å®¶ã¯ãå¯èœãªéããã¹ãŠã®ããžã·ã§ã³ã§èªåèªèº«ã§ä»äºãé²ãããã¹ãŠãã©ã®ããã«æ©èœããããããã管çããæ¹æ³ãã©ã®ãããªäººãšäœãèŠæ±ããããä»äºãšèªåèªèº«ãè©äŸ¡ããæ¹æ³ãç解ããå¿ èŠããããŸãã
2çªç®ã®çç±ã¯ãç§ã®ãããžã§ã¯ãã®è©³çŽ°ã§ãããå人ããŒã¿ã®ãã©ã€ãã·ãŒã«é¢é£ããŠããŸãã 誰ããèªåã®ããŒã¿ãåçŽã«ä¿¡é Œããçç±ã¯ãããŸããã ç§ã¯ãã®åé¡ã«ã€ããŠéåžžã«å¿é ããŠãããããŸã泚æãæãããŠããªãããšãå¿é ããŠããŸãã
ãã·ã¢ã®çŸå®ã«ãããã¹ã¿ãŒãã¢ããã®ç®æšãšãã³ãããŒã¯ã®æåŸã®çç±ã ããã§ã®äž»ãªç®æšã¯ããéã皌ãããã©ã¹ã«ãªãããšã§ãã å©çã¯ãããŸãã-ã¹ã¿ãŒãã¢ããã¯ãããŸãããæ倱ãåºã趣å³ããããŸãã ãããã£ãŠã3çªç®ã®çç±ã¯ã³ã¹ãã§ãã å®æçã«åŠçãããã©ãã£ãã¯ã¯çŽ9 TBãããŒã¿ã¯çŽ5 TBã§ããããã¯ãã¹ãŠæé¡$ 100ããããŸãïŒ AWSã§ã©ãããããããããèšç®ã§ããŸãïŒ ã æ¥æã¯åãè²»çšããããããšãç¥ã£ãŠãããèªåã®ãéã§ãããžã§ã¯ããæ§ç¯ããŸãã
æºåãã
æåã«è¡ãããšã¯ã1ã€ã®ããŒã¿ã»ã³ã¿ãŒã«3å°ã®ãµãŒããŒãé 眮ããããšã§ã ïŒãµãŒããŒéã®pingãæå°éã«ãªãããã«ããµãŒããŒã¯ã§ããã ãè¿ãã«é 眮ããå¿ èŠããããŸã ïŒã ããããä»®æ³å°çšãµãŒããŒïŒ ãã¹ãæ ïŒã§ããããæ¬ç©ã§ãããã©ã®ãããã€ããŒããã¬ã³ã¿ã«ãããã¯é¢ä¿ãããŸããã DigitalOceanã«æ³šæããDebian 8.1 x64ã®ã€ã³ã¹ããŒã«ãéžæããSSHããŒã®è¿œå ãæ瀺ããŸããã
ã€ã³ã¹ããŒã«ãå®äºãã3å°ã®ãã¢ãµãŒããŒãèªç±ã«äœ¿çšã§ããŸãã
ã¢ã³ã·ãã«
æ¢ã«ç解ããããã«ã Ansibleã䜿çšããŠãµãŒããŒãæ§æããŸãã ãããäœã§ãããã©ã®ããã«äœ¿çšãããããããªãå Žåã¯ãHabréã§ãããã®è³ªåã«å¯ŸããçãããããŸãã
誰ãå ¬åŒããã¥ã¡ã³ãããã£ã³ã»ã«ããŠããŸããïŒ ããã¥ã¡ã³ããè±èªã§èªãããšã«åé¡ããªãå Žåã¯ããã®ç¹å®ã®æ å ±æºããå§ãããŸã ïŒã
Ansibleã¯å¯äžã®æ§æ管çã·ã¹ãã ã§ã¯ãããŸããïŒ Puppet ã Chef ã Saltãªã©ããããŸã ïŒã
äžã§æžããããã«ãããŒã«ãéžæããéã®åªå äºé ã®1ã€ã¯åçŽãã§ãã ã¯ã©ã€ã¢ã³ãã管ç察象ãã·ã³ã«ã€ã³ã¹ããŒã«ããå¿ èŠã¯ãããŸããïŒ ãã¹ãŠãSSHãä»ããŠåäœããŸãïŒãã¹ã¯ãªããèšèªã¯éåžžã«ã·ã³ãã«ã§ããããžã§ã¯ãã«ã¯ææ°ã®è©³çŽ°ãªããã¥ã¡ã³ãããããã¢ãžã¥ãŒã«ã³ãŒãã¯Pythonã§èšè¿°ãããŠããŸãïŒ Pythonã¯ã¹ã¿ãŒãã¢ããã®äž»ãªèšèªã§ãããããç§ãã¡ã«ãšã£ãŠå©ç¹ã§ã ïŒã
ã·ã³ãã«ãã«ã€ããŠã®èã
äžè¬çã«ãç§ã«ãšã£ãŠãã·ã³ãã«ãã¯äž»é¡ã«å¯Ÿããæ·±ãç解ã®è¡šãã§ãã ããäººïŒ äž»é¡ã«ç²ŸéããŠãã ïŒãä»ã®äººïŒ äž»é¡ã«ç²ŸéããŠããªã ïŒã«åœŒãã©ã®ããã«åãã説æã§ããªãå Žåã圌èªèº«ã¯ãã®äž»é¡ãå®å
šã«ç解ããŠããŸããã
ããã¯ãã¹ãã£ãŒããŠã©ãºãã¢ãã¯ã®èæžãã¹ãã£ãŒããžã§ããºã¢ã³ãããŒãã§ããç¥ãããŠããŸãã圌ã¯ãç¶èŠªããŸã 4æ³ã«ãªã£ãŠããªããšãã«ã¹ãã£ãŒãã«é»æ°å·¥åŠã®åçãäŒãå§ããŸãïŒãã®æ¬ã¯ãAppleã®æŽå²ã«èå³ããªããŠãããã¹ãŠã®ãšã³ãžãã¢ã«ãšã£ãŠèå³æ·±ããã®ã§ã ïŒã
ããã¯ãã¹ãã£ãŒããŠã©ãºãã¢ãã¯ã®èæžãã¹ãã£ãŒããžã§ããºã¢ã³ãããŒãã§ããç¥ãããŠããŸãã圌ã¯ãç¶èŠªããŸã 4æ³ã«ãªã£ãŠããªããšãã«ã¹ãã£ãŒãã«é»æ°å·¥åŠã®åçãäŒãå§ããŸãïŒãã®æ¬ã¯ãAppleã®æŽå²ã«èå³ããªããŠãããã¹ãŠã®ãšã³ãžãã¢ã«ãšã£ãŠèå³æ·±ããã®ã§ã ïŒã
ãã®æ®µéã§ãAnsibleãã¯ã©ã€ã¢ã³ããã·ã³ã«ã€ã³ã¹ããŒã«ããå¿ èŠããããŸãïŒ æé ïŒã ç§ã«ãšã£ãŠãOS X 10.9ã§ã¯ããã®ããã«2ã€ã®ã³ãã³ãã®ã¿ãå®è¡ããå¿ èŠããããŸããã
» sudo easy_install pip # PIP » sudo pip install ansible
ãã¹ãŠãæ£åžžã§ããããšã確èªããŸãã
» ansible --version ansible 1.9 configured module search path = None
Docker
ããã¯ãééããªããããæ°å¹Žã§åºäŒã£ãæé«ã®ããŒã«ã®1ã€ã§ãã Dockerã¯ã¯ã©ãŠããã¹ãã£ã³ã°ã®äžå¿ãšãªããæ¬åœã«çŽ æŽãããæ©äŒãæäŸããŸãã
ãç®±ããåºããŠããã«ãã¯ã©ãŠãã§å³åº§ã«å®è¡ã§ããæ¢è£œã®èšå€§ãªæ°ã®ç»åã«ã¢ã¯ã»ã¹ã§ããŸãã ç°ãªãããŒãžã§ã³ã®å¿ èŠãªãµãŒãã¹ãåæã«åå¥ã«å®è¡ããããäºææ§ããã¹ãããããWebã¢ããªã±ãŒã·ã§ã³ã®äŸåé¢ä¿ãæºããããããæ©äŒããããŸãã
Webã¢ããªã±ãŒã·ã§ã³ã®æåã®ããŒãžã§ã³ã§20åã®ã³ã³ãããŒãèµ·åãã2çªç®ã®ããŒãžã§ã³ã§2åã®ã³ã³ãããŒãèµ·åããŠãããã®éã§è² è·ãåæ£ãã蚪åè ã®10ïŒ ã®ã¿ãæ°ããããŒãžã§ã³ã§è¡šç€ºããäœæ¥ãšãŠãŒã¶ãŒã¬ãã¥ãŒã®å®å®æ§ãè©äŸ¡ããŸãã
ã¯ã©ã€ã¢ã³ããã·ã³ã«Dockerãã€ã³ã¹ããŒã«ããå¿ èŠããããŸããå°æ¥ã®Dockersã¯ã©ã¹ã¿ãŒã管çããããã«å¿ èŠã«ãªããŸãã ãããè¡ãæãç°¡åãªæ¹æ³ã¯ãKitematic GUIã¯ã©ã€ã¢ã³ã ïŒ Mac OS X 10.9+ããã³Windows 7+ 64ãããã§äœ¿çšå¯èœ ïŒãããŠã³ããŒãããã¡ã€ã³ã¡ãã¥ãŒã«ç§»åãã[Install Docker Commands]ãéžæããŠDockerã³ã³ãœãŒã«ã³ãã³ããã€ã³ã¹ããŒã«ããããšã§ãã
å ¬åŒã®ããã¥ã¡ã³ããã代æ¿ã®ã€ã³ã¹ããŒã«ãªãã·ã§ã³ãèŠã€ããããšãã§ããŸãïŒ é©åã«äœæãããã¿ã€ã ãªãŒã«æŽæ°ãããŠããŸã ïŒã 次ã®ããã«ããã¹ãŠãé çªã©ããã§ããããšã確èªããŸãã
» docker version Client version: 1.6.2 Client API version: 1.18 Go version (client): go1.4.2 Git commit (client): 7c8fca2 OS/Arch (client): darwin/amd64
Docker swarm
æåŸã«ãç§ãã¡ã¯æãèå³æ·±ãããšã«å°éãããã¹ãã£ã³ã°ã®ãæãããå®çŸããŸããã å¥åŠãªããšã§ãããHabräžã®Docker Swarmã«é¢ããæ å ±ã¯èŠã€ãããŸããã§ããã
Docker Swarmã¯ãè€æ°ã®Dockerãã¹ãã1ã€ã®ä»®æ³ãã¹ãã«çµåãããšã¬ã¬ã³ãã«ããŸãã Docker Swarmã¯ã Docker APIãšäºææ§ã®ããREST APIã€ã³ã¿ãŒãã§ã€ã¹ãæäŸããŸã ã ãããã£ãŠãDocker APIã§æ©èœãããã¹ãŠã®ããŒã«ïŒDocker ã¯ã©ã€ã¢ã³ããDokkuãComposeãKraneãFlynnãDeisãDockerUIãShipyardãDroneãJenkinsãªã© ïŒã¯ãDocker Swarmã§ã¯ãªãããã®èåŸã«ããã®ã¯ã1å°ã®ãã·ã³ã ãã§ãªããDockersã®ã¯ã©ã¹ã¿ãŒã§ãããšçã£ãŠããŸãã
ã¯ã©ãŠããæ§ç¯ããŠãDocker Swarmãå®éã«ã§ããããšãèŠãŠã¿ãŸãããã
éãã
ãã®æç¹ã§ãã¯ã©ã€ã¢ã³ãã³ã³ãã¥ãŒã¿ãŒã«AnsibleãšDockerãã€ã³ã¹ããŒã«ããå¿ èŠããããŸãã éµèªèšŒãšDebian 8.1 x64ãæèŒãã3å°ã®ãµãŒããŒãæèŒãããŠããå¿ èŠããããŸã ïŒ ä»ã®é åžããã±ãŒãžã䜿çšããŠãã¹ã¯ãªããã«å°ããªå€æŽãå ããããšãã§ããŸã ïŒã Ansibleçšã®ã¹ã¯ãªããã»ãããçšæããŸãããããã¯ãã¹ãŠã®äœæ¥ãå®è¡ãããããããã»ã©æéã¯å¿ èŠãããŸããã
äžé£ã®ã¹ã¯ãªãããããŠã³ããŒããããããªããžããªãè€è£œããŸãã
» git clone https://github.com/vkozlovski/ansible-cloud-hosting » git checkout v1.x » cd ansible-cloud-hosting
ã¹ããŒãžãã¡ã€ã«ãéãããã®äžã®IPã¢ãã¬ã¹ããµãŒããŒã®IPã«çœ®ãæããŸãã
[cloud] 188.166.16.70 debian_release=testing hostname=debian1 188.166.99.31 debian_release=testing hostname=debian2 128.199.59.102 debian_release=testing hostname=debian3
Docker SwarmãDockerããŒãã«æ¥ç¶ã§ããããã«ããã«ã¯ãå€éšããã¢ã¯ã»ã¹ã§ããå¿ èŠããããŸãïŒ ããã©ã«ãã§ã¯ãHTTPã®ããŒã2375ããã³HTTPSã®ããŒã2376㧠ïŒã ãŸããã¯ã©ã¹ã¿ãŒã管çã§ããããã«ãDocker Swarm Managerãå€éšã§äœ¿çšå¯èœã«ããå¿ èŠããããŸãã HTTPã¯ãããã®ç®çã«ã¯é©ããŠããŸããïŒ ã€ã³ã¿ãŒããããŠãŒã¶ãŒã§ã¯ãªããèªåçšã«ã¯ã©ãŠããæ§ç¯ããŠããŸã ïŒãHTTPSãŸãã¯TLSãæ®ã£ãŠããŸãïŒ è©³çŽ°ã«ã€ããŠã¯ã å ¬åŒããã¥ã¡ã³ããåç §ããŠãã ãã ïŒã
åäœã®ååã¯æ¬¡ã®ãšããã§ããç¬èªã®èšŒææ©é¢ïŒ 以äžãCA ïŒãäœæããDockerãµãŒããŒãšã¯ã©ã€ã¢ã³ãã®èšŒææžã«çœ²åããŸãã ãã®åŸãããã«ãŒãããŒã¢ã³ãã¯ããããŒã¢ã³ã蚌ææžãšåãCAã«ãã£ãŠçœ²åããã蚌ææžãæã€ã¯ã©ã€ã¢ã³ãããã®æ¥ç¶ãåãå ¥ããŸãã Dockerã¯ã©ã€ã¢ã³ãã¯åããã§ãã¯ãå®è¡ããåãCAã«ãã£ãŠçœ²åããã蚌ææžãæã€DockerãµãŒããŒã«ã®ã¿æ¥ç¶ããŸãã Docker Swarm Managerã¯åãã¹ããŒã ã䜿çšããŸãã ããã«ãããããã¯ã©ãŠãã®èªèšŒãšã»ãã¥ãªãã£ã確ä¿ãããŸãã
å¿ èŠãªããšã¯ãCAã®ããŒãçæããããšã ãã§ãïŒ æ®ãã¯ãã¹ãŠèªåçã«è¡ãããŸã ïŒã ãããžã§ã¯ãã®ã«ãŒããã£ã¬ã¯ããªãã次ã®ã³ãã³ããå®è¡ããã ãã§ïŒ æå®ãããã¹ã¯ãŒããèŠããŠããå¿ èŠããããŸã ïŒã質åã«å¯Ÿããåçãèšå ¥ããŸãïŒ ç¹å®ã®èŠä»¶ã¯ãããŸãããä»»æã®ãã¡ã€ã³ãæå®ã§ããŸã ïŒã
» openssl genrsa -aes256 -out certs/ca/ca-key.pem 4096 » openssl req -new -x509 -days 365 -key certs/ca/ca-key.pem -sha256 -out certs/ca/ca.pem
ãã¡ã€ã«å ã®ããã€ãã®å€æ°ã®å€ãå ¥åããããã«æ®ããŸãã
group_vars / all.yml
certs: ca: password: "YOUR PASSWORD HERE" docker_swarm: # docker run --rm swarm create token: "YOUR DOCKER SWARM TOKEN HERE" manager: "YOU DOCKER SWARM MANAGER IP HERE" ssh: users: # user for ansible - user: "support" shell: "/bin/zsh" # for oh-my-zsh groups: "sudo" # mkpasswd --method=SHA-512 password: "YOUR PASSWORD HERE" # cat ~/.ssh/id_rsa.pub key: "YOUR PUBLIC KEY HERE"
å€æ°certs.ca.passwordã«ã¯ã蚌ææ©é¢ã®ç§å¯ããŒãçæãããšãã«æå®ãããã¹ã¯ãŒããå«ãŸããŠããå¿ èŠããããŸãã
docker_swarm.tokenå€æ°ã«ã¯ã次ã®ã³ãã³ãã§çæã§ããå°æ¥ã®ã¯ã©ã¹ã¿ãŒã®èå¥åãå«ãŸããŠããå¿ èŠããããŸãã
» docker run --rm swarm create 6856663cdefdec325839a4b7e1de38e8
docker_swarm.managerå€æ°ã«ã¯ãDocker Swarm Managerãèµ·åãããã¹ãã®IPã¢ãã¬ã¹ãå«ãŸããŠããå¿ èŠããããŸãïŒ ãµãŒããŒã®ããããã®IPã¢ãã¬ã¹ãæå®ããŸã ïŒã
Ansibleã¹ã¯ãªããã¯ã ãµããŒããŠãŒã¶ãŒãäœæãããã®ãŠãŒã¶ãŒãsudoã°ã«ãŒãã«è¿œå ããSSHçµç±ã§ãã°ã€ã³ããæš©éãã«ãŒãã«æåŠããå¿ èŠãããããšã瀺ããŠããŸãã ssh.users []ãPasswordå€æ°ã®å€ã¯ãäžèšã§æå®ãããŠãŒã¶ãŒã®ãã¹ã¯ãŒãããã·ã¥ã«ããå¿ èŠããããŸãã ãããååŸããã«ã¯ãä»»æã®Linuxãã·ã³ã§æ¬¡ã®ã³ãã³ããå®è¡ããå¿ èŠããããŸãïŒ SSHçµç±ã§ãµãŒããŒã®1ã€ã«ç§»åããŠå®è¡ã§ããŸã ïŒã
» mkpasswd --method=SHA-512 Password: $6$n0lQGWy2s5437ns1$nczULrrTw5r.TmhEI/xBz5xYEHWyMbtbQhAJoWshv0rFjSoRxLYZh0zDoMwVM.ZFnChx7ym.4.r182EOIn9Ec/
ssh.users []ãKeyã®å€ã¯å ¬éããŒã§ããå¿ èŠããããããã©ã«ãã§ã¯ã/ .ssh / id_rsa.pubã§ãã
ã/ .ssh / id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDDakR6/NJuIxJGpWZiV5QODuRacuh4VoIdzeOUlH+MC1xxFf/U74gfumoQ1k62d4S0qPqnlpJVqRNg7mQo0CCguujVRuOP+FbRMjdQbbAEfDAjxkSuKXRWnChg6Ds4MX0RO9WUB9pQLrCmbPpI8A0l0zaNi6mp6TaXWCoMPrgk1OfuTYDBTgQya/MtKjjPnWFEdgwTvB3hVusCU83854Gju9OX4I5ucejy/f8/IWGUIFt8miLisrYnDcdFvY/ThzX7E2h4lzsc8JK6ltywyoHVScl3Vdgf1/WbScEnQYWJZk/h2zWDqdFlte/elov7l3yfJDN0axF+dC6BqJGfZMFQsN6xPWHoG8OCPaH2HmTY3XNpQNRLJR5GFWwVriIBDe+GyVjtjzb1/BLdu0WJatv6/PYMsEfArYBgnQ/bHYgfFLF0GPq6nBGJbngytv7C5crBljZAvnC86HQN5sGPbZWfkKdvoG5MbbJYwqFvaD2BEjlXMurbCX4ERrRUHC9875XufaCvdpCiSWaU4S5PM8nr2QCF3co0EtL0bkiciyv95eU0HoQ3cYhPNGwUMxntPp/3z0KRqeSBHPnvV5pmXOwP/xUHxEIvDbqCXtTc3y96iDKZ1T8+jPH1aif6ooVUwmogTHDd1DcW+APtMkqRHdZ7r33wKAYJfNopd+0P8rYF2w==
å®æããæ§æãã¡ã€ã«ã®äŸã以äžã«è¡šç€ºã§ããŸãã
group_vars / all.yml
certs: ca: password: "12345" docker_swarm: # docker run --rm swarm create token: "6856663cdefdec325839a4b7e1de38e8" manager: "188.166.16.70" ssh: users: # user for ansible - user: "support" shell: "/bin/zsh" # for oh-my-zsh groups: "sudo" # mkpasswd --method=SHA-512 password: "$6$n0lQGWy2s5437ns1$nczULrrTw5r.TmhEI/xBz5xYEHWyMbtbQhAJoWshv0rFjSoRxLYZh0zDoMwVM.ZFnChx7ym.4.r182EOIn9Ec/" # cat ~/.ssh/id_rsa.pub key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDDakR6/NJuIxJGpWZiV5QODuRacuh4VoIdzeOUlH+MC1xxFf/U74gfumoQ1k62d4S0qPqnlpJVqRNg7mQo0CCguujVRuOP+FbRMjdQbbAEfDAjxkSuKXRWnChg6Ds4MX0RO9WUB9pQLrCmbPpI8A0l0zaNi6mp6TaXWCoMPrgk1OfuTYDBTgQya/MtKjjPnWFEdgwTvB3hVusCU83854Gju9OX4I5ucejy/f8/IWGUIFt8miLisrYnDcdFvY/ThzX7E2h4lzsc8JK6ltywyoHVScl3Vdgf1/WbScEnQYWJZk/h2zWDqdFlte/elov7l3yfJDN0axF+dC6BqJGfZMFQsN6xPWHoG8OCPaH2HmTY3XNpQNRLJR5GFWwVriIBDe+GyVjtjzb1/BLdu0WJatv6/PYMsEfArYBgnQ/bHYgfFLF0GPq6nBGJbngytv7C5crBljZAvnC86HQN5sGPbZWfkKdvoG5MbbJYwqFvaD2BEjlXMurbCX4ERrRUHC9875XufaCvdpCiSWaU4S5PM8nr2QCF3co0EtL0bkiciyv95eU0HoQ3cYhPNGwUMxntPp/3z0KRqeSBHPnvV5pmXOwP/xUHxEIvDbqCXtTc3y96iDKZ1T8+jPH1aif6ooVUwmogTHDd1DcW+APtMkqRHdZ7r33wKAYJfNopd+0P8rYF2w=="
ããã§ãåŸ æã®ã¯ã©ãŠãã®æ§ç¯ãéå§ããæºåãã§ããŸããã
» ansible-playbook -i stage site.yml -u root
ã«ãŒãèªèšŒæ©èœããªãã«ãã ãµããŒããŠãŒã¶ãŒãè¿œå ãããã ïŒ ããã¯Ansibleã¹ã¯ãªããã§èª¬æãããŠããŸãïŒã以éã®ãã¹ãŠã®èµ·åã¯-s ïŒ sudo ïŒããã³-Kãã©ã°ïŒ sudoã®ãã¹ã¯ãŒããèŠæ±ãã ïŒã§å®è¡ããå¿ èŠããããŸã
» ansible-playbook -i stage site.yml -u support -s -K
æ€èšŒãšäœ¿çš
æ°ããäœæããã¯ã©ãŠãããã¹ãããæºåãã§ããŸããã
» docker -H tcp://188.166.16.70:8000 --tlsverify=true --tlscacert=certs/ca/ca.pem --tlscert=certs/docker/cert.pem --tlskey=certs/docker/key.pem info Containers: 4 Images: 3 Storage Driver: Role: primary Strategy: spread Filters: affinity, health, constraint, port, dependency Nodes: 3 debian1: 188.166.16.70:2376 â Containers: 2 â Reserved CPUs: 0 / 1 â Reserved Memory: 0 B / 519.2 MiB â Labels: executiondriver=native-0.2, kernelversion=3.16.0-4-amd64, operatingsystem=Debian GNU/Linux stretch/sid, storagedriver=aufs debian2: 188.166.99.31:2376 â Containers: 1 â Reserved CPUs: 0 / 1 â Reserved Memory: 0 B / 519.2 MiB â Labels: executiondriver=native-0.2, kernelversion=3.16.0-4-amd64, operatingsystem=Debian GNU/Linux stretch/sid, storagedriver=aufs debian3: 128.199.59.102:2376 â Containers: 1 â Reserved CPUs: 0 / 1 â Reserved Memory: 0 B / 519.2 MiB â Labels: executiondriver=native-0.2, kernelversion=3.16.0-4-amd64, operatingsystem=Debian GNU/Linux stretch/sid, storagedriver=aufs Execution Driver: Kernel Version: Operating System: CPUs: 3 Total Memory: 1.521 GiB Name: ID: Http Proxy: Https Proxy: No Proxy:
ãã£ãïŒ ç§ã¯ãã®å€§ããªèšäºãã»ãŒçµäºããã¯ã©ãŠãã®æ§ç¯ãæ£åžžã«å®äºããŸããã
å¿ èŠãªå Žåã¯ãDockerãã¹ãã®ããããã«åå¥ã«æ¥ç¶ã§ããŸãã
äŸ
» docker -H tcp://128.199.59.102:2376 --tlsverify=true --tlscacert=certs/ca/ca.pem --tlscert=certs/docker/cert.pem --tlskey=certs/docker/key.pem info Containers: 2 Images: 7 Storage Driver: aufs Root Dir: /var/lib/docker/aufs Backing Filesystem: extfs Dirs: 11 Dirperm1 Supported: true Execution Driver: native-0.2 Kernel Version: 3.16.0-4-amd64 Operating System: Debian GNU/Linux stretch/sid CPUs: 1 Total Memory: 494.5 MiB Name: debian1 ID: 5XPE:2VWX:QCSA:J3PJ:WMN7:EDXX:3TSS:7K7K:XU4R:Z3AX:TRVX:VTUQ WARNING: No memory limit support WARNING: No swap limit support
ããããç§ãã¡ã¯ãããŸã§ãã£ãšè¡ããŸããã§ãããïŒ ã¯ã©ãŠãã§Nginxã®ããã€ãã®ã€ã³ã¹ã¿ã³ã¹ãå®è¡ããŠã¿ãŸãããã
» docker -H tcp://188.166.16.70:8000 --tlsverify=true --tlscacert=certs/ca/ca.pem --tlscert=certs/docker/cert.pem --tlskey=certs/docker/key.pem run -d -p 80:80 --name nginx1 nginx bb49018b697fca975d10a5ec31ad2fed65ed12b3ad8fbd61e64474187d8bc6ed » docker -H tcp://188.166.16.70:8000 --tlsverify=true --tlscacert=certs/ca/ca.pem --tlscert=certs/docker/cert.pem --tlskey=certs/docker/key.pem run -d -p 80:80 --name nginx2 nginx 2bd86ff97c35d431e9db7f0571d65e17893aefd1d18b1b52194c100a22a49937
ç§ãã¡ã¯ãã§ãã¯ããŸãïŒ
Nginxã®ã€ã³ã¹ã¿ã³ã¹ãããã«2ã€å®è¡ããŠã¿ãŸãããã
» docker -H tcp://188.166.16.70:8000 --tlsverify=true --tlscacert=certs/ca/ca.pem --tlscert=certs/docker/cert.pem --tlskey=certs/docker/key.pem run -d -p 80:80 --name nginx3 nginx 622b4e199c700cae663bf2e2f326918f94a0cd016c27dc9ff39f4ec4abf7bdb1 » docker -H tcp://188.166.16.70:8000 --tlsverify=true --tlscacert=certs/ca/ca.pem --tlscert=certs/docker/cert.pem --tlskey=certs/docker/key.pem run -d -p 80:80 --name nginx4 nginx FATA[0001] Error response from daemon: unable to find a node with port 80 available
3çªç®ã®ã€ã³ã¹ã¿ã³ã¹ã¯éå§ãããŸãããã4çªç®ã®ã€ã³ã¹ã¿ã³ã¹ã¯éå§ãããŸããã§ãããFATA[0001]ããŒã¢ã³ããã®ãšã©ãŒå¿çïŒããŒã80ã䜿çšå¯èœãªããŒããèŠã€ãããŸãã ã Docker Swarm Schedulerã¯ã空ã80çªç®ã®ããŒããæã€ãã¹ãããªãããšã確èªããŸãã
ã¯ã©ã¹ã¿ã§çŸåšå®è¡ãããŠããã³ã³ããã確èªããNginxã®åã³ããŒãç°ãªããã·ã³ã§å®è¡ãããŠããããšã確èªã§ããŸãã
» docker -H tcp://188.166.16.70:8000 --tlsverify=true --tlscacert=certs/ca/ca.pem --tlscert=certs/docker/cert.pem --tlskey=certs/docker/key.pem ps 1 ⵠCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 622b4e199c70 nginx:latest "nginx -g 'daemon of 5 minutes ago Up 5 minutes 128.199.59.102:80->80/tcp, 443/tcp debian3/nginx3 2bd86ff97c35 nginx:latest "nginx -g 'daemon of 16 minutes ago Up 16 minutes 188.166.16.70:80->80/tcp, 443/tcp debian1/nginx2 bb49018b697f nginx:latest "nginx -g 'daemon of 17 minutes ago Up 17 minutes 188.166.99.31:80->80/tcp, 443/tcp debian2/nginx1 148eef0bbe02 library/swarm:latest "/swarm manage --tls 2 hours ago Up 2 hours 188.166.16.70:8000->2375/tcp debian1/docker-swarm-manager 3545322d27b7 library/swarm:latest "/swarm join --addr= 2 hours ago Up 2 hours 2375/tcp debian2/docker-swarm faaa78cbedba library/swarm:latest "/swarm join --addr= 2 hours ago Up 2 hours 2375/tcp debian3/docker-swarm 0fee12f6a473 library/swarm:latest "/swarm join --addr= 2 hours ago Up 2 hours 2375/tcp debian1/docker-swarm
Docker Swarmã®å¯èœæ§ã¯ããã§çµããã§ã¯ãªããå§ãŸãã ãã§ãïŒ ããã¯ãããšããã§èªãããšãã§ããŸã ïŒã
èšäºã®åé ã§æžããããã«ãç§ã®ç®æšã¯ãããŒã«ã®ãªã¹ããšå ±éç解ãæäŸããŠãäœãåºã«æ§ç¯ããããç解ãããããéæãããããšãé¡ã£ãŠããŸãã
次ã®ããŒãã§ã¯ãService Discoveryãšã¯äœããã¯ã©ãŠãã§è² è·ãåæ£ããæ¹æ³ãããã³ãã®ããã®ããŒã«ã«ã€ããŠèª¬æããŸãã
以äžã§ãã ãæž èŽããããšãããããŸããã ããªãã®é²ãšå¹žéã«å®å®ïŒ
Twitterã§ç§ããã©ããŒããŠãã ãããç§ã¯ã¹ã¿ãŒãã¢ããã§ã®ä»äºãç§ã®ééããšæ£ãã決æãPythonããããŠWebéçºã«é¢é£ãããã¹ãŠã«ã€ããŠè©±ããŠããŸãã
PS äŒç€Ÿã§éçºè ãæ¢ããŠããŸã ã詳现ã¯ç§ã®ãããã£ãŒã«ã«ãããŸã ã