çµè«ã¨ãã¦ã¯、Serverspecã¯å å使ããã¨å¤æãã¦Ansible Playbookã§å®è¡ããå 容ã®ãã¹ããServerspecã§è¨è¿°ãã¦、æ§ç¯å®äºå¾〜ä½ã夿´ãå ããã¨ãã«æ¯å`rake`ãå®è¡ããã¨ããå½¢ãåççã§ããã¨ã®è§£ãå¾ã¾ãã。
ã¨ãªãã¨æ¬¡ã¯、ãã£ã¬ã¯ããªåãããã¹ãåãå¾ãServerspecã«Ansibleã®ã¤ã³ãã³ããªãã¡ã¤ã«ãèªè¾¼ãã§、対象ã¨ãããã¹ãå®ç¾©ãå ±éåãããã¨æãã¾ãã。æçµçãªç®çã¯、Ansibleã®ã¤ã³ãã³ããªãã¡ã¤ã«ã®ã¿ã§ãã¹ãå®ç¾©ããã¦Serverspecããããèªã¿、Ansibleã®Best Practicesã«å¾ã£ããã£ã¬ã¯ããªæ§é ã®ä¸ã«Serverspecã®ãã¹ãã³ã¼ãç¨ãã¡ã¤ã«ãå ¥ããäºã§、ãããéæããçºã«Rakefileãæ¹é ãã¾ãã。
make-server
èªåã§ä½¿ãAnsibleã®ãã¼ã«ãPlaybookã®åä½ãã¹ãç¨ã«ãã¤ã§ãVagrantç°å¢ãæºååºæ¥ããã¬ã¼ã ã¯ã¼ã¯çãªä½ããmake-serverã¨ããååã§GitHubã«ç½®ãã¦ã¾ãã¦、ä»åã¯ããã大æ¹é ãã¾ãã。
æ¹é é ç®
- ansible/rolesã£ã¦ãã£ã¬ã¯ããªåãå¤ãã→server/roles
- roles/以ä¸ãæ§ç¯ææ®µå¥ã«ååé¡ãã→roles/{rpm,pkg,deb,src,env}ã¨ã
- rakeå®è¡æã«ã¤ã³ãã³ããªãã¡ã¤ã«ãèªè¾¼ã→Rakefileæ¹é ã¨lib/ansible_helper.rb使
- roles/ãã¼ã«å/spec/*.rbã«å ¥ãããã¹ãã³ã¼ããrakeã§å®è¡→lib/ansible_helper.rb使
æ¹é å¾
å ¨ä½ã®ãã£ã¬ã¯ããªæ§é
Rakefile
ãã¶ãã§ãã、åãç®çãéæããã½ããã¦ã§ã¢ã¯æ¢ãã°ä½å¦ãã«ããã¨æãã¾ã。ã、ã·ã·ãã¤(p5-Sisimai)ã®Rubyåãããã«ããã£ã¦Rubyã«æ
£ãã¦ããããã¨ããæå³ããã、çµå±ã¯èªåã§Rubyãå¦ã³ã¤ã¤、æ¹é ããäºã«ãã¾ãã。æ¹é ããå
容ã¯、
- .default-inventoryfileã®ä¸èº«ã¾ãã¯ENV['INVENTORY']ããã¤ã³ãã³ããªãã¡ã¤ã«ã決å®
- roles/ãã¼ã«å/spec/*.rb以ä¸ã®ãã¡ã¤ã«ãæ¢ãã¦ã¿ã¼ã²ãããä½ã
- lib/spec_helper.rbã«æ¸¡ãç°å¢å¤æ°ãä½ã
- ã¿ã¼ã²ããåã¯spec:ã¤ã³ãã³ããªã«æ¸ãããã¹ãå:ãã¼ã«åã£ã¦æ§é ã«ãã
ã£ã¦ã¨ããã§ã。
lib/ansible_heler.rb
Rakefileããèªè¾¼ã¾ãããã¡ã¤ã«ã¨ãã¦ansible_helper.rbã£ã¦ã®ãä½ãã¾ãã。ç®çã¯
- Ansibleã®ã¤ã³ãã³ããªãã¡ã¤ã«ãèªè¾¼ã¿spec_helper.rbã«æ¸¡ããã¹ã対象ãã¹ãåãåå¾
- spec/*.rbã§roles/ãã¼ã«å/vars/main.ymlãèªè¾¼ãã§å¤æ°ãåç §ãã
- spec/*.rbã§group_vars/ã®è©²å½ãããã¡ã¤ã«ãèªè¾¼ãã§åç §ãã
ãããã§ã。ã¨ã¯ãã、mx[0:4].nyaan.jpã¿ãããªå½¢å¼ã®ãã¹ãå®ç¾©ã¯æªã èªããªãã®ã§、ãã£ãã¨ç´ãããã¨ããã§ã¯ããã¾ã。ãã®åé¡è§£æ±ºãå¾åãã«ããã®ã¯、æ®æ®µAnsibleã使ãç®çãWeb,Mail,DBããããã1å°ä½ãã£ã¦ã±ã¼ã¹ãå¤ãã¦、Webã®ã¯ã©ã¹ã¿ã5å°ä½ããããªã±ã¼ã¹ãæ®ã©ç¡ãã®ã§、1å°ãã¨ã«ãã¹ãåãå ãããã£ã¬ã¯ããªãä½ã£ã¦Playbookãã¤ã³ãã³ããªãã¡ã¤ã«ããã®ãã¹ãå°ç¨ã«æ¸ãäºãå¤ãããã§ã。
rake -T
æ¹é ããRakefileã¨ä½ã£ãlib/ansible_helper.rbã«ãã£ã¦、`rake -T`ãå®è¡ããã¨æ¬¡ã®ãããªã¿ã¼ã²ãããæ§æãããããã«ãªãã¾ãã。
% rake -T ⏎ rake spec:mx:all # Run all the serverspec tests to mx rake spec:mx:ansible-env # Run tests for Ansible environment rake spec:mx:bootstrap # Run serverspec tests to mx(bootstrap) rake spec:mx:src/dovecot # Run serverspec tests to mx(src/dovecot) rake spec:mx:src/opensmtpd # Run serverspec tests to mx(src/opensmtpd) rake spec:mx:src/perl # Run serverspec tests to mx(src/perl)
`rake`ãå®è¡ããã¨ä¸è¨ã®ã¿ã¼ã²ãããå
¨ã¦å®è¡ããã¾ãã、OpenSMTPDã®ãã¹ãã ããããªã`rake spec:mx:src/opensmtpd`ãå®è¡ããã¨ããä½¿ãæ¹ã«ãªãã¾ã。
Makefile
ãã£ãããªã®ã§Makefileã¨ã®ä»ãåããé·ã、Makefileã®ã»ãã好ãã§ã。èªåã使ãç®çã§、ãªãã¹ãAnsibleã¨Serverspecã使ãçºã®ç°å¢ã楽ã«ä½ããããã«、決ã¾ããã£ã使¥ããªãã¹ãçãã³ãã³ãã§å®è¡åºæ¥ãããã«ããã¤ãã¿ã¼ã²ãããå®ç¾©ãã¦ãã¾ã。
- make login → Vagrantä»®æ³ãã·ã³ã«SSHãã°ã¤ã³ãã
- make up, make down → Vagrantä»®æ³ãã·ã³ãèµ·å・忢ãã
- make server → Ansibleã¨Serverspecå®è¡ã«å¿ è¦ãªãã¡ã¤ã«ãcloneããmake-serverããã³ãã¼ãã
- make ãã¼ã«å-role → ãã¼ã«ã®ãã£ã¬ã¯ããªæ§é (tasks,vars,templates,filesã¨ã)ãä½ã
- make *-box → Vagrantä»®æ³ãã·ã³ãä½ã£ã¦Vagrantfileãå°ç¨ã¤ã³ãã³ããªãã¡ã¤ã«ãä½ã
- make test → rake spec:*ãå®è¡ãã
- make build → ansible-playbook -i server/ã¤ã³ãã³ã㪠server/Playbookãã¡ã¤ã«ã®é·ãã³ãã³ããå®è¡ãã
ä½ãã`make`ã£ã¦ã³ãã³ãã¯æã¡ãããã®ã§æ°ã«å
¥ã£ã¦ã¾ã。
ä»å¾ã®make-server
make-serverã«ç½®ãã¦ãå
¨ã¦ã®ãã¼ã«ã«Serverspecã®ãã¹ãã³ã¼ããå
¥ãã¦ããããã§ã¯ãªãã®ã§、æ¸ãä¸ããæ¬¡ç¬¬è¿½å ããäºå®ã§ã。
Playbookãä»ã®ã¨ãã、ã½ã¼ã¹ãã«ããããã®ãä¸å¿ã§、æ¯åã³ã³ãã¤ã«ãªãã·ã§ã³ãã¡ã¢æ¸ããã調ã¹ãã®ãé¢åãªã®ã§、Playbookã«ãã¦ããã£ã¦ç¨åº¦ã®å
å®åº¦ã§ã。
Serverspecã®ãã¹ãããã¼ã«ãå
å®ãã¦ããã、Infratasterã®ãã¹ãããããããã¨æã£ã¦ãã¾ã、ã¨ããããã¯å¯¾è±¡ãµã¼ããæ§ç¯ããã®ã«æä½éå¿
è¦ãªãã¡ã¤ã«ã¨Playbookã¨ãã¹ãã³ã¼ããä¸å
管çã§ããç¶æ
ã«ã¯åºæ¥ãã®ã§ä¸æ¦æºè¶³ããã¨ãã§ã。
0 ä»¶ã®ã³ã¡ã³ã:
ã³ã¡ã³ããæç¨¿