CFEngine
以åã® 2ã€ã®èšäºã§ããŠãŒã¶ãŒ
alex_wwwã«ãã£ãŠéå§ãããCFEngineã®è©±ãç¶ããŸãã ãã®èšäºã§ã¯ãCFEngineã®äœ¿çšæ³ãšãå®éã®ç°å¢ã§ã®æ§æã®åŸ®åŠãªéãã«çŠç¹ãåœãŠãŸãã ããã¹ãã®éãæžããããã«ãCFEngineã®äžçã®åºæ¬æŠå¿µãç¥ã£ãŠãããšæããŸããããããã©ããã§ããã䜿ãããšããããšãããã§ãããã å
¥éæžãšããŠãDiego Zamboniã®èæž
Learning CFEngine 3ããå§ãããŸãã
ãã®èšäºã§ã¯ã
Gitã䜿çšããŠ
Debian GNU / LinuxããŒãããã»ããã¢ããããäŸã瀺ã
ãŸã ã ãæ°ã«å
¥ãã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ãšVCSã®äŸã§èšäºãè£è¶³ããå Žåã¯ãå人çãªã¡ãã»ãŒãžãéä¿¡ããããã³ã¡ã³ãã§èªåãè¡šçŸããŠãã ããã å¯èœã§ããã°ãèè
ã瀺ãã¡ã€ã³ããã¹ãã«è¿œå ããŸãã
èšçœ®
CFEngine3ãã€ã³ã¹ããŒã«ããæãç°¡åãªæ¹æ³ã¯ãå
¬åŒãªããžããªãããããè¡ãããšã§ãã ãããè¡ãã«ã¯ããŸãããã±ãŒãžã®çœ²åã«äœ¿çšããããŒãè¿œå ããå¿
èŠããããŸãã
cd /tmp wget http://cfengine.com/pub/gpg.key cat gpg.key
...次ã«ããªããžããªãè¿œå ããŠCFEãé
眮ããŸãã
echo "deb http://cfengine.com/pub/apt community main" > /etc/apt/sources.list.d/cfengine-community.list chmod 644 /etc/apt/sources.list.d/cfengine-community.list
åæå
CFEãåæåããã«ã¯ãcf-agentã®æåã®èµ·åãïŒããšãã°ãæåã§ïŒå®è¡ããå¿
èŠããããŸãã æ°ãããµãŒããŒãé »ç¹ã«ã³ããã·ã§ã³ããå¿
èŠãããå ŽåãCFEãšããŒãã¹ãã©ããã®ã€ã³ã¹ããŒã«ã¯ã
preseedãŸãã¯ã·ã¹ãã ã®æåã®èµ·åæã«1åå®è¡ãããã¹ã¯ãªããããè¡ãã®ãæé©ã§ãã ãã®ãããªã¹ã¯ãªããã®è¯ãäŸã¯ãOpenSSHã®ãµãŒããŒããŒãäœæããã¹ã¯ãªããã§ãã
/var/cfengine/bin/cf-agent -IC --bootstrap <policy_hub_address>
<policy_hub_address>
代ããã«ãããªã·ãŒããã®å¯Ÿå¿ããIPã¢ãã¬ã¹ãŸãã¯ãã¡ã€ã³åã眮ãæããå¿
èŠããããŸããããªã·ãŒããèªäœãåæåããå Žåãã¯ã©ã€ã¢ã³ãã«ãµãŒãã¹ãæäŸããIPãæå®ããå¿
èŠããããŸãã ãã¡ã€ã³åã®å Žåãå°æ¥äœ¿çšãããIPã¢ãã¬ã¹ã«è§£æ±ºããããããDNSãµãŒããŒã䜿çšã§ããªãå¯èœæ§ããããšããåé¡ãé害ã«ãªãããšã¯ãããŸããã
-I
ã¯çãå®è¡ã¬ããŒãã®äœæãæå¹ã«ãã
-C
ã¯ã³ã³ãœãŒã«ã§ã®åºåã®è²ä»ããæå¹ã«ããŸãã äž¡æ¹ãšããªãã·ã§ã³ã§ãããç§ã¯èªåã®éœåã®ããã«ã€ã³ã¿ã©ã¯ãã£ããªã»ãã·ã§ã³ã§ãããã䜿çšããŸãã å¥ã®äŸ¿å©ãªèµ·åãªãã·ã§ã³ã¯
-v
ãåé·ã¢ãŒãã§ãã
-I
ãããåªå
ããã
-I
ã®é²æã«é¢ããéåžžã«è©³çŽ°ãªæ
å ±ãæäŸããŸãã ãããã°ã«æé©ã§ãã
åæèšå®
ããªã·ãŒããã®åæååŸãæåã®ã¯ã©ã€ã¢ã³ãã«æ¥ç¶ããåã§ãã£ãŠããããã€ãã®å°ããªèšå®ãè¡ãå¿
èŠããããŸãã å®éã®ãšããã
def.cf
ãã¡ã€ã«ã®ããã©ã«ãã®ãã©ã¡ãŒã¿ãŒïŒä»¥éããã¹ãŠã®çžå¯Ÿãã¹ã«ã€ããŠãç¹ã«æå®ã®ãªãéããã«ãŒãã¯
/var/cfengine/masterfiles
def.cf
ã§ãããš
def.cf
ãŸãïŒã¯ãã
def.cf
ãã®å®éšãæ©èœã®å®èšŒã«é©ããŠããŸãããããã®ãã©ã¡ãŒã¿ã販売ããããšã¯é©åã§ã¯ãããŸããã 以äžã«ããããã¹ãéçºããŠããããã«å±éããããã»ã¹ã®æ§æã«ã€ããŠèª¬æããŸãããä»ã®ãšããã¯ã
/var/cfengine/masterfiles
ããŒã«ã«ã³ããŒãäœæãããããæäœããããšããå§ãããŸãã
ãŸããå®å
šä¿®é£Ÿãã¡ã€ã³åã瀺ããŸãã ã·ã¹ãã ã®çŸåšã®ãã©ã¡ãŒã¿ãŒãèªåçã«æ±ºå®ããããã®åªããã·ã¹ãã ãäœæããããã®éçºããŒã ã®åªåã«ãããããããäžå®å
šã§ãããããå¯èœãªéãèªååã«äŸåãããæåã§ããŒã¿ãæå®ããªãããšãæåã§ãã
bundle common def
ããå§ããŠã
domain
ã
mailto
ã
mailfrom
ããã³
smtpserver
ãæå®ããŸãããïŒ
'domain' string => 'example.org'; 'mailto' string => 'sysadmin-queue@${def.domain}'; # CFE 'mailfrom' string => 'root@cfe-policy-server.${def.domain}'; 'smtpserver' string => 'internal-mail-collector.${def.domain}';
å®å
šæ§
CFEã¯æ¥ç¶ã»ãã¥ãªãã£ãšã¯ã©ã€ã¢ã³ãèªèšŒãæäŸã§ããŸãããã¿ã¹ã¯ãå®äºããã®ã«ååãªç®ãããããããã®ããã®ç¹å¥ã«éçºãããæ段ã¯ãããŸããã ã¯ã©ã€ã¢ã³ããšã®éä¿¡ã§ã¯ãOpenSSHãšåæ§ã«ãä¿¡é Œã§ããããŒãæã€ã·ã¹ãã ãšãä¿¡é Œã§ããIPãããã¯ãŒã¯ãšãã¡ã€ã³ã®ãªã¹ãã䜿çšãããŸãã ããã©ã«ãã§ã¯ãæ¥ç¶ã¯ããªã·ãŒãããã¡ã€ã³å
ã®ãã¹ãŠã®ãã¹ãããã³ãã©ã€ããªIPã®/ 16ã«å¯ŸããŠèš±å¯ãããŸãã æ£åžžã«ç¢ºç«ãããæ¥ç¶ãéããŠåä¿¡ãããã¹ãŠã®ããŒã¯ãä¿¡é Œã§ãããšèŠãªãããŸãã ä¿¡é Œã§ãããããã¯ãŒã¯ç°å¢ã§ã®ãã®ãããªã¢ãããŒãã¯ããŒãããã®å±éãéåžžã«å®¹æã«ããç 究éçºæ®µéã§ã¯éåžžã«äŸ¿å©ã§ãããå®éã«ã¯éåžžã«å®å
šã§ã¯ãããŸããã IPã¢ãã¬ã¹ã®
cf-serverd
ãšå¶åŸ¡ããããã·ã³ã®å°ççååžãèãããšã次ã®ã¢ãããŒãã䜿çšããããšã奜ã¿ãŸãïŒCFEngineïŒããæ£ç¢ºã«ã¯
cf-serverd
ïŒã¯ãä»»æã®IPã¢ãã¬ã¹ããã®æ¥ç¶ãåãå
¥ããäºåã«èªèãããŠããïŒã€ãŸãã
/var/cfengine/ppkeys
ïŒïŒ
'acl' slist => { '0.0.0.0/0', }; comment => 'Connections are allowed from any IP', handle => 'common_def_vars_acl'; 'trustkeysfrom' slist => { # NEVER ADD ANYTHING HERE. DON'T TRUST STRANGERS! }, comment => 'Only keys in /var/cfengine/ppkeys are trusted', handle => 'common_def_vars_truskeysfrom';
IPã¢ãã¬ã¹ã§ã¢ã¯ã»ã¹ãå¶éããå¿
èŠãããå Žåãåé¡ã解決ããããã®ããé©åãªããŒã«ãšããŠãã¡ã€ã¢ãŠã©ãŒã«ã䜿çšããããšã奜ã¿ãŸãã
ã¯ã©ã€ã¢ã³ãããŒãä¿¡é Œã§ããããŒã«è¿œå ããã«ã¯ããã¡ã€ã«
/var/cfengine/ppkeys/localhost.pub
ã®éåžžã®RSAããŒïŒã®å
容ãããªã·ãŒããã«ã³ããŒãã
cf-key -t /path/to/client_key.pub
ãå®è¡ããå¿
èŠããããŸãã
cf-key
ããã°ã©ã ã¯ãæ£ããååãšæš©éã§
/var/cfengine/ppkeys
ããŸãã
æšæºã©ã€ãã©ãª
æ§æå¶åŸ¡ã®èªååã«ããã倧èŠæš¡ãªå€æŽãç°¡åã«ãªããåãããã«ç°¡åã«å€§èŠæš¡ãªãšã©ãŒãçºçããŸãã ãããã£ãŠãåççãªæ°ã®ãã·ãŒããã«ãããšã倧ããªèµ€ããã¿ã³ããå¿
èŠã§ãã ãããã®ãã¹ãã©ãããã®1ã€ã¯ãã³ãŒããšãšãã«æšæºã©ã€ãã©ãªãVCSã«è¿œå ããããšã§ãã æ°ããããŒãžã§ã³ã§ããã±ãŒãžãã€ã³ã¹ããŒã«ããå Žåã
/var/cfengine/masterfiles
ããã³
/var/cfengine/inputs
æŽæ°ãããŸãããããã¯ãæ§æã®äžè²«æ§ãä¿èšŒã§ããªãããã§ãã ãããã£ãŠãæŽæ°ã®éèŠãªæ®µéã®1ã€ã¯ãæšæºã©ã€ãã©ãªã®å€æŽãã³ããŒã«ããŒãžããããšã§ããããã§ãVCSãæäŸã§ãããã¹ãŠã®ãã«ããšã
diff
ããã³
patch
ãŠãŒãã£ãªãã£ã䜿çšããæ©èœã圹ç«ã¡ãŸãã
package_latests
äžéšã®ããã±ãŒãžã®æŽæ°ãä¿èšŒããããã«ãã䜿çšããã¡ã«ããºã ã®1ã€ã¯ãæšæºã©ã€ãã©ãªã®
package_latest
ãã³ãã«ã§ãã æ®å¿µãªãããDebianã®ãã³ãã«ãæ©èœããªã
ãã°ããããŸãã ä¿®æ£ã¯éåžžã«ç°¡åã§ãã
lib/3.6/packages.cf
ãã¡ã€ã«ã§ããã³ãã«ã³ãŒã
packages_latest
ãèŠã€ããŠã次ã®ããã«ããå¿
èŠããããŸãïŒãã°ã¬ããŒãã®
ãããã䜿çšã§ããŸãïŒã
debian:: "$(package)" package_policy => "addupdate", package_version => "999999999:9999999999", package_method => apt_get_permissive;
ãã°6870
prodã§èŠã€ãããã1ã€ã®è¿·æãªãã°ã¯
bug 6870ã§ãã åé¡ã®æ¬è³ªã¯ãCFEngineãã€ã³ã¿ãŒãã§ã€ã¹äžã®IPã¢ãã¬ã¹ã®PTRã¬ã³ãŒãã«åºã¥ããŠããã€ãã®ã¯ã©ã¹ãèšå®ããããšã§ãã ãæ³åã®ãšããããã®ãããªã·ã¹ãã ã®åäœã¯éåžžã«å®å
šã§ã¯ãªããå€éšã®ç¥èãåãå
¥ããããªããšããCFEngineã®ä»®èª¬ãšççŸããŸãã ãããã圌ã®æ¬ã®äžã§ãDiego Zamboniã¯ã
host1_example_org
ã®åœ¢åŒã®ã¯ã©ã¹ã«ãã£ãŠå®è¡ãã¹ãã決å®ããããšãæããŠ
host1_example_org
ããã®ãã°ãä¿®æ£ãããšãçŸåšåäœããŠããå€ãã®ã·ã¹ãã ãç Žå£ããããšãã§ããŸãã ãããã£ãŠãéçºè
ãããä¿¡é Œæ§ã®é«ãæ¹æ³ãæäŸãããŸã§ãç§ãã¡ã¯ãããèªåã§äœæããŸãã
lib/3.6/bug_6870.cf
ã®æšæºã©ã€ãã©ãªã®ããŒãžã§ã³ã«è¿œå ã§ããã³ãŒãã¯æ¬¡ã®
lib/3.6/bug_6870.cf
ã
bundle common bug_6870_workaround { classes: 'bug6870_workaround_${sys.host}' expression => 'any'; }
次ã«ããã¡ã€ã«åã
${stdlib_common.inputs}
ã«è¿œå ããŠãããã«æ¢ã«ãªã¹ããããŠãããã¡ã€ã«ãšé¡æšããä»ã®IPã®PTRã¬ã³ãŒããšã®äºæããªã亀差ãæããã«
bug6870_workaround_host1_example_org
ã¯ã©ã¹ã䜿çšãã
bug6870_workaround_host1_example_org
ããããŸãã
ã©ã€ããµã€ã¯ã«
ãã¹ãŠãåµé æ§ãçºæ®ããæºåãã§ããã®ã§ãçŽæãäœæããããã»ã¹ãæŽçããããšã«ã€ããŠå°ãã話ãããŸãã
ããŒã«
ãŸããçŽæã¯äœãã§æžãå¿
èŠããããŸãã ããã«ã¯ãã»ãšãã©ã®å Žåããæ°ã«å
¥ãã®
ããã¹ããšãã£ã¿ãŒãé©ããŠããŸãã ç§ã¯Vimã奜ã¿ãNiel Watsonã
äœæãããã©ã°ã€ã³ã䜿çšããŸããååã®Valera Astraverkhau
ã¯ã Sublime Text 2ããã³3ã§CFEngineããµããŒã
ããéåžžã«åªãããã©ã°ã€ã³ã
äœæããŸãã ãEmacsãŠãŒã¶ãŒã¯ãTed Zlatanov EmacsãCFEngine IDEãšããŠäœ¿çšããŸãã
åªããããŒãžã§ã³ç®¡çã·ã¹ãã ãå¿
èŠã§ãã Gitã¯èª°ãã倧äžå€«ã§ãããçŸä»£ã®VCSã¯ãã£ãšåäœããã§ãããã ããã§ã®èŠä»¶ã¯ãåŸæ¥ã®ãœãããŠã§ã¢ã®éçºãšåãã§ããããã䜿ãæ
£ãããã®ã䜿çšããŠãã ããã
ãã¡ã€ã«æ§æãšãšã³ããªãã€ã³ã
ç§ãææ¡ããæ¹æ³ã ããçã®æ¹æ³ã§ã¯ãªãããšãããã«èšããŸãã Perlããã°ã©ããŒã«ãªãã¿ã®ãã
TIMTOWTDIã®ååãããã«é©çšãããŸãã ããã§è«äºã«é¢é£ããå Žæã¯ä»ã«ãããŸããã ãããžã§ã¯ãã«ãŒãã«é¢é£ãããã£ã¬ã¯ããªæ§é ã®äŸã次ã«ç€ºããŸãã
/bin /masterfiles /masterfiles/cfe_internal /masterfiles/cfe_internal/ha /masterfiles/controls /masterfiles/controls/3.4 /masterfiles/inventory /masterfiles/example_org /masterfiles/lib /masterfiles/lib/3.5 /masterfiles/lib/3.6 /masterfiles/services /masterfiles/services/autorun /masterfiles/sketches /masterfiles/sketches/meta /masterfiles/templates /masterfiles/update /static /static/bird-lg /static/firewall-configs /static/ssh-keys /templates
/masterfiles/example_org
ãã£ã¬ã¯ããªã«ã¯ãäœæäžã®ã³ãŒããå«ãŸããŠããŸãã
/masterfiles
ã®æ®ãã®ãµããã£ã¬ã¯ããªã¯ãã©ãããŠãå¿
èŠãªå Žåãé€ããå€æŽããªãããã«ããããšããæšæº
/masterfiles
äžéšã§ãã ãã¹ãŠã®éæšæºãã³ãã¬ãŒãã¯
/templates
ããã³
/static
ã§äœæãããŸããååã瀺ãããã«ããéçãæ
å ±ã¯ä¿åãããŸã-å
¬éSSHããŒããã¡ã€ã¢ãŠã©ãŒã«èšå®ããŠãŒã¶ãŒèšå®ãæ§æãã¡ã€ã«ãªã©ããã¹ãéã§å€æŽãããŸããã
/bin
ã¯ãã倧ããªèµ€ããã¿ã³ããå«ãããã€ãã®ãµãŒãã¹ã¹ã¯ãªãããå«ãŸããŠããŸããããã¯ãCFEngineãã¯ã©ã€ã¢ã³ãã«ãã¡ã€ã«ãé
åžã§ããå Žæã«å¿
èŠãªãã¹ãŠã®ãã¡ã€ã«ã転éããã¹ã¯ãªããã§ãã
ãšã³ããªãã€ã³ãã¯
/masterfiles/example_org/main.cf
ã«ãããŸããããã«ã¯ã䜿çšããããã¡ã€ã«ãšãµãŒããŒåé¡ãäžèŠ§è¡šç€ºãã
bundle common example_org
ãšãã¯ã©ã¹ã«å¿ããŠãæ¹æ³ã説æããå¿
èŠãªãã³ãã«ã«å¶åŸ¡ã転éããã
bundle agent example_org_main
ãå«ãŸããŸããã®ã¯ã©ã¹ã®ãµãŒããŒãæ§æããå¿
èŠããããŸãã
promises.cf
ãã¡ã€ã«ã§ãšã³ããªãã€ã³ããæå®ããã«ã¯ã次ã®å€æŽãè¡ãå¿
èŠããããŸãã
body common control { bundlesequence => { # [...] @{example_org.bundles}, }; inputs => { # [...] 'example_org/main.cf', @{example_org.inputs}, }; }
example_org/main.cf
ã¯æ¬¡ã®ããã«ãªããŸãã
bundle common example_org { vars: 'inputs' slist => { 'example_org/add_default_users.cf', 'example_org/basic_packages.cf', 'example_org/configure_dns.cf', 'example_org/configure_firewall.cf', 'example_org/configure_ftp.cf', 'example_org/configure_ssh.cf', 'example_org/cve_2015_0235.cf', 'example_org/lib.cf', }; 'bundles' slist => { 'example_org', 'example_org_main', }; classes: 'ftp_server' or => {classmatch('BUG6870_ftp.*')}; 'dns_server' expression => classmatch('BUG6870_dns.*'); reports: verbose_mode:: '${this.bundle}: defining inputs="${inputs}"'; '${this.bundle}: defining bundles="${bundles}"'; ftp_server:: 'This host assumes FTP server role'; dns_server:: 'This host assumes DNS server role'; } bundle agent example_org_main { methods: any:: 'example_org_update_motd' usebundle => 'update_motd'; 'example_org_basic_packages' usebundle => 'basic_packages'; 'example_org_add_default_users' usebundle => 'add_default_users'; 'example_org_configure_firewall' usebundle => 'configure_firewall'; 'example_org_configure_ssh' usebundle => 'configure_ssh'; 'example_org_cve_2015_0235' usebundle => 'cve_2015_0235'; any.Min30_35:: 'heartbeat' usebundle => 'heartbeat';
ãã®äŸã¯ãå®éã«ã¯ãã¡ããããã¹ãŠãå°ãè€éã§å€§ãããªã£ãŠããããšã瀺ãããã«ãããã€ãã®å®éã®ãããžã§ã¯ãã§æ§æãããŠããŸãã ãã®ã¢ãããŒãã®ç®çã¯ãæšæºã©ã€ãã©ãªã®å€æŽã®æ°ãæå°éã«æããããšã§ããããã«ãããåŸã§å€æŽãç¶æãããããªããŸãã
ãããã°ãšãã¹ã
ãšã©ãŒã®äŸ¡æ Œã¯é«ããããã倧ããªèµ€ããã¿ã³ããã¯ãªãã¯ããåã«ãçŽæããã¹ãããå¿
èŠããããŸãã ãã¹ãã®ããã«ãç§ã«ã¯å°ããªãã¹ãã®å ŽããããŸããä»äºçšã³ã³ãã¥ãŒã¿ãŒã§å®è¡ããããã€ãã®
ä»®æ³ãã·ã³ã§ãã ãããã«ã€ããŠã
çŽæã®å±¥è¡ã®æ£ããã確èªããå®éšãè¡ããŸãã
promiseã®éçºã§ã¯ãprintfãä»ããŠãããã°ã¹ã¯ãŒã«ã®ã¹ã¿ã€ã«ãé å®ããŸããã€ãŸããã¬ããŒãã¿ã€ãã®promiseãéåžžã«åºã䜿çšããŠããŸãã ãã1ã€ã®äžå¯æ¬ ãªããŒã«ã¯ãå®å
šãª
cf-promises
ãŠãŒãã£ãªãã£ã§ãã æ£åŒãªæ§ææ€èšŒã«å ããŠãå®è¡æã«äœ¿çšå¯èœãªãã¹ãŠã®ã¯ã©ã¹ïŒ
--show-classes
ãã©ã¡ãŒã¿ãŒïŒããã³ãã®å
容ãå«ãå€æ°ïŒ
--show-vars
ïŒã
--show-vars
ã ãããŠãã¡ããã
cf-agent
ãåé·ã¢ãŒãïŒ
--verbose
ãã©ã¡ãŒã¿ãŒïŒã§å®è¡ããŸãã
æŽæ°æ
å ±
ãã¹ãŠã®å¶åŸ¡ãã·ã³ã§CFEngineããŒãžã§ã³ãæŽæ°ããã«ã¯ãããã±ãŒãžãããŒãžã£ãŒã䜿çšããæ¹æ³ãšãCFEngineèªäœã®ã¡ã«ããºã ã䜿çšããæ¹æ³ã®2ã€ããããŸãã ããã±ãŒãžãããŒãžã£ãŒã®æ¹ã奜ãã§ããããã±ãŒãžãããŒãžã£ãŒã¯ãæŽæ°ã®æéäžã®ã¿æ¥ç¶ãããšããç¹å¥ãªçŽæãããããã®æ¬è³ªã¯
package_latest
åŒã³åºãã«
package_latest
ãŸãã ç§ã®æèŠã§ã¯ããã®ã¢ãããŒãã¯CFEã®æŠå¿µã«æé©ã§ãã
倧ããªèµ€ããã¿ã³
補åãžã®å±éã¯ãäžæ¥ã«äœåºŠãçºçããå Žåã§ããåžžã«ãšããµã€ãã£ã³ã°ãªç¬éã§ããããã®ããã®äœããã®ååŒãæã£ãŠãã人ã
ãéé£ããŸããã 倧èŠæš¡ãªæ§æå€æŽã®å Žåãããã«ãããäœãåé¡ãçºçããå Žåã®ä»åŸæ°æ¥éã®äººçã®æå³ãå€æã§ããŸãã ãããã£ãŠãèªååãGitã®ããã¯ããããŸããã ãã¹ãŠãæ£ããè¡ããããã¹ãããã販売ã®æºåãã§ããŠãããšããä¿¡é Œã®ä¿èšŒãšããŠãæåã¢ãŒãã®ã¿ã æš©å©
0600
ã®
deploy.sh
ã¹ã¯ãªããã¯ãã¿ã³ãšããŠæ©èœãããããå¶ç¶éå§ããããšã¯ã§ããŸããã ã³ã³ãœãŒã«ã§
bash bin/deploy.sh
ãç§ã®ååŒã§ãããèµ·åããã£ã³ã»ã«ããæåŸã®æ©äŒã§ãã ã¹ã¯ãªããèªäœã¯éåžžã«ç°¡åã§ã
cf-agent -KIC -f update.cf
ãšã
cf-agent -KIC -f update.cf
/var/cfengine/{masterfiles,static,templates}
ã
/var/cfengine/{masterfiles,static,templates}
ãš
cf-agent -KIC -f update.cf
ããã³
cf-agent -KIC -f promises.cf
2ã€ã®ã³ãã³ããå®è¡ããŸã
cf-agent -KIC -f promises.cf
ã ãããã£ãŠãå°ãªããšãããªã·ãŒããã¯çŽæãæããããã¹ãŠã®ã¯ã©ã€ã¢ã³ãã«ãããé
åžã§ãããšç¢ºä¿¡ã§ããŸãã
ãããã«
ããã¯ãã¹ãŠã®åŸ®åŠããšç¥æµããã¯çšé ãã§ãããããã¯èªå®
ã§CFEngineã®å®è£
ãéå§ããã®ã«ååã§ãã èšäºä»¥å€ã«ããã
ãã¶ã€ã³ã»ã³ã¿ãŒ ããã¬ããŒããå
éšèšèšãããŸããŸãªäœ¿çšã·ããªãªãªã©ãèå³æ·±ããããã¯ããããŸããã CFEngineãhabrasocietyã«èå³ãæã£ãŠãããªããç§ã¯ããã«ã€ããŠåãã§è©±ããŸãããä»ã®ãšãããããªããä»ç·æ¥ã®è³ªåãæã£ãŠãããªããã³ã¡ã³ãã§ããããå°ããããšãheããªãã§ãã ããã ç§ã®ååãš
lastops cagliostro ãç§ã¯ãããã«çããããšããŸãã