ã¬ãããããã®AnsibleãµããŒãããŒã ã®ã²ãã倧äœããšå
«æšæŸ€ã§ããã¯ãªã¹ãã¹ç®åã§ãæ°æž©ãå¯ããªã£ãŠããŸãããçæ§ããããéããã§ããããã ä»åã¯ãã Ansible Tips ããšããŠãAnsibleã§ç¥ã£ãŠãããšåœ¹ç«ã€ã¡ãã£ãšããå°ãã¿ãç¥èãã玹ä»ããŸãã ãã®èšäºã¯ã Ansible Advent Calendar 2024 ãã®23æ¥ç®ã®èšäºã«ãªããŸãã rawã¢ãžã¥ãŒã«ãšã¯ïŒ Ansibleã«ã¯å€çš®å€æ§ãªã¢ãžã¥ãŒã«ããããŸãããäžéšä»ã®ã¢ãžã¥ãŒã«ãšæåã倧ããç°ãªãã¢ãžã¥ãŒã«ãååšããŸãããã®ãã¡ã®äžã€ãããrawãã¢ãžã¥ãŒã«ã§ãã ansible.builtin.raw module – Executes a low-down and dirty command — Ansible Community Documentation rawãšã¯ãçã®ãæªå å·¥ã®ããšããæå³ã®è±èªã§ãããã®ã¢ãžã¥ãŒã«ã¯ãã®åã®éããå®è¡å
ã®ããŒãã§æå®ãããã³ãã³ããå®è¡ããããšããæå°éã®æ©èœã®ã¿ãæããŠãããåæ§ã®ç®çã§äœ¿çšããããshellãããcommandãã¢ãžã¥ãŒã«ãšã¯ã倧ããæåãç°ãªããŸãã çŸèã¯äžèŠã«ããããšããããšã§ããŸãã¯å®éã«rawã¢ãžã¥ãŒã«ãå®è¡ããŠã¿ãŸãããã --- - hosts : all tasks : - name : Execute whoami command raw : whoami äžèšã®Playbookã¯ãrawã¢ãžã¥ãŒã«ã§ãwhoamiãã³ãã³ããå®è¡ãããšããè³ã£ãŠã·ã³ãã«ãªãã®ã§ããå®éã«å®è¡ãããšã以äžã®ããã«ã³ãã³ããå®è¡ãããŸã(å®è¡çµæãããããããããããã-vvvãæå®ããŠããŸã) TASK [ Execute whoami command ] ********************************************************************************************************************************************************************************************************************************************************************************************************* task path : / home / hiyoko / Documents / raw . yml :4 < aap25 - ctr1 > ESTABLISH SSH CONNECTION FOR USER : hiyoko < aap25 - ctr1 > SSH : EXEC ssh - C - o ControlMaster = auto - o ControlPersist =60s - o KbdInteractiveAuthentication = no - o PreferredAuthentications = gssapi - with - mic , gssapi - keyex , hostbased , publickey - o PasswordAuthentication = no - o 'User="hiyoko"' - o ConnectTimeout =10 - o 'ControlPath="/home/hiyoko/.ansible/cp/031c196615"' - tt aap25 - ctr1 whoami < aap25 - ctr1 > ( 0 , b'hiyoko\r\n' , b'Shared connection to aap25-ctr1 closed.\r\n' ) changed : [ aap25 - ctr1 ] => { " changed ": true , " rc ": 0 , " stderr ": " Shared connection to aap25-ctr1 closed. \r\n ", " stderr_lines ": [ " Shared connection to aap25-ctr1 closed. " ] , " stdout ": " hiyoko \r\n ", " stdout_lines ": [ " hiyoko " ] } rawã¢ãžã¥ãŒã«ã®æå€§ã®ç¹åŸŽã¯ããã¿ãŒã²ããããŒãäžã®Pythonå®è¡ç°å¢ãä»ãããçŽæ¥ã³ãã³ããå®è¡ãããããšã«ãããŸããã€ãŸããã³ãã¯ã·ã§ã³ãã©ã°ã€ã³(sshãªã©)ã®æ¥ç¶ã確ç«ããããŠããã°æ©èœããã¢ãžã¥ãŒã«ãšãªããŸãããã®ç¹ã§ãä»ã®Pythonãå©çšããã¢ãžã¥ãŒã«ãšã¯å€§ããæ§æ Œãç°ãªããŸããäžèšã®ã¿ã¹ã¯ã®å®è¡çµæãèŠããšãSSHã³ãã¯ã·ã§ã³ã確ç«ãããçŽåŸã«ã³ãã³ããå®è¡ãããå®è¡çµæãè¿åŽãããŠããããšãããããŸããå®éã«ãåããwhoamiã³ãã³ããå®è¡ããã ãã®shellã¢ãžã¥ãŒã«ãšã-vvvã®åºåãæ¯èŒããŠã¿ãŸããããshellã¢ãžã¥ãŒã«ã§ã¯ãSSHã®ã³ãã¯ã·ã§ã³ã確ç«ãããåŸã AnsiballZ_command.py ã転éããŠããããšãããããŸãã TASK [ Execute whoami command ] ********************************************************************************************************************************************************************************************************************************************************************************************************* task path : / home / hiyoko / Documents / raw . yml :4 < aap25 - ctr1 > ESTABLISH SSH CONNECTION FOR USER : hiyoko < aap25 - ctr1 > SSH : EXEC ssh - C - o ControlMaster = auto - o ControlPersist =60s - o KbdInteractiveAuthentication = no - o PreferredAuthentications = gssapi - with - mic , gssapi - keyex , hostbased , publickey - o PasswordAuthentication = no - o 'User="hiyoko"' - o ConnectTimeout =10 - o 'ControlPath="/home/hiyoko/.ansible/cp/031c196615"' aap25 - ctr1 '/bin/sh -c ' " '"'echo ~ hiyoko && sleep 0 '"' " '' < aap25 - ctr1 > ( 0 , b'/home/hiyoko\n' , b'' ) < aap25 - ctr1 > ESTABLISH SSH CONNECTION FOR USER : hiyoko < aap25 - ctr1 > SSH : EXEC ssh - C - o ControlMaster = auto - o ControlPersist =60s - o KbdInteractiveAuthentication = no - o PreferredAuthentications = gssapi - with - mic , gssapi - keyex , hostbased , publickey - o PasswordAuthentication = no - o 'User="hiyoko"' - o ConnectTimeout =10 - o 'ControlPath="/home/hiyoko/.ansible/cp/031c196615"' aap25 - ctr1 '/bin/sh -c ' " '"' ( umask 77 && mkdir - p "` echo / home / hiyoko /. ansible / tmp `"&& mkdir "` echo / home / hiyoko /. ansible / tmp / ansible - tmp -1734916880.8232417-13918-57931879742332 `" && echo ansible - tmp -1734916880.8232417-13918-57931879742332="` echo / home / hiyoko /. ansible / tmp / ansible - tmp -1734916880.8232417-13918-57931879742332 `" ) && sleep 0 '"' " '' < aap25 - ctr1 > ( 0 , b'ansible-tmp-1734916880.8232417-13918-57931879742332=/home/hiyoko/.ansible/tmp/ansible-tmp-1734916880.8232417-13918-57931879742332\n' , b'' ) Using module file / usr / lib / python3 .13/ site - packages / ansible / modules / command . py < aap25 - ctr1 > PUT / home / hiyoko /. ansible / tmp / ansible - local -13901wvkcruny/ tmp2872f93f TO / home / hiyoko /. ansible / tmp / ansible - tmp -1734916880.8232417-13918-57931879742332/AnsiballZ_command. py < aap25 - ctr1 > SSH : EXEC sftp - b - - C - o ControlMaster = auto - o ControlPersist =60s - o KbdInteractiveAuthentication = no - o PreferredAuthentications = gssapi - with - mic , gssapi - keyex , hostbased , publickey - o PasswordAuthentication = no - o 'User="hiyoko"' - o ConnectTimeout =10 - o 'ControlPath="/home/hiyoko/.ansible/cp/031c196615"' '[aap25-ctr1]' < aap25 - ctr1 > ( 0 , b'sftp> put /home/hiyoko/.ansible/tmp/ansible-local-13901wvkcruny/tmp2872f93f /home/hiyoko/.ansible/tmp/ansible-tmp-1734916880.8232417-13918-57931879742332/AnsiballZ_command.py\n' , b'' ) < aap25 - ctr1 > ESTABLISH SSH CONNECTION FOR USER : hiyoko < aap25 - ctr1 > SSH : EXEC ssh - C - o ControlMaster = auto - o ControlPersist =60s - o KbdInteractiveAuthentication = no - o PreferredAuthentications = gssapi - with - mic , gssapi - keyex , hostbased , publickey - o PasswordAuthentication = no - o 'User="hiyoko"' - o ConnectTimeout =10 - o 'ControlPath="/home/hiyoko/.ansible/cp/031c196615"' aap25 - ctr1 '/bin/sh -c ' " '"'chmod u + x / home / hiyoko /. ansible / tmp / ansible - tmp -1734916880.8232417-13918-57931879742332/ / home / hiyoko /. ansible / tmp / ansible - tmp -1734916880.8232417-13918-57931879742332/AnsiballZ_command. py && sleep 0 '"' " '' < aap25 - ctr1 > ( 0 , b'' , b'' ) < aap25 - ctr1 > ESTABLISH SSH CONNECTION FOR USER : hiyoko < aap25 - ctr1 > SSH : EXEC ssh - C - o ControlMaster = auto - o ControlPersist =60s - o KbdInteractiveAuthentication = no - o PreferredAuthentications = gssapi - with - mic , gssapi - keyex , hostbased , publickey - o PasswordAuthentication = no - o 'User="hiyoko"' - o ConnectTimeout =10 - o 'ControlPath="/home/hiyoko/.ansible/cp/031c196615"' - tt aap25 - ctr1 '/bin/sh -c ' " '"' / usr / bin / python3 / home / hiyoko /. ansible / tmp / ansible - tmp -1734916880.8232417-13918-57931879742332/AnsiballZ_command. py && sleep 0 '"' " '' < aap25 - ctr1 > ( 0 , b'\r\n{"changed": true, "stdout": "hiyoko", "stderr": "", "rc": 0, "cmd": "whoami", "start": "2024-12-22 20:21:20.973026", "end": "2024-12-22 20:21:20.974877", "delta": "0:00:00.001851", "msg": "", "invocation": {"module_args": {"_raw_params": "whoami", "_uses_shell": true, "expand_argument_vars": true, "stdin_add_newline": true, "strip_empty_ends": true, "argv": null, "chdir": null, "executable": null, "creates": null, "removes": null, "stdin": null}}}\r\n' , b'Shared connection to aap25-ctr1 closed.\r\n' ) < aap25 - ctr1 > ESTABLISH SSH CONNECTION FOR USER : hiyoko < aap25 - ctr1 > SSH : EXEC ssh - C - o ControlMaster = auto - o ControlPersist =60s - o KbdInteractiveAuthentication = no - o PreferredAuthentications = gssapi - with - mic , gssapi - keyex , hostbased , publickey - o PasswordAuthentication = no - o 'User="hiyoko"' - o ConnectTimeout =10 - o 'ControlPath="/home/hiyoko/.ansible/cp/031c196615"' aap25 - ctr1 '/bin/sh -c ' " '"'rm - f - r / home / hiyoko /. ansible / tmp / ansible - tmp -1734916880.8232417-13918-57931879742332/ > / dev / null 2>&1 && sleep 0 '"' " '' < aap25 - ctr1 > ( 0 , b'' , b'' ) changed : [ aap25 - ctr1 ] => { " changed ": true , " cmd ": " whoami ", " delta ": " 0:00:00.001851 ", " end ": " 2024-12-22 20:21:20.974877 ", " invocation ": { " module_args ": { " _raw_params ": " whoami ", " _uses_shell ": true , " argv ": null , " chdir ": null , " creates ": null , " executable ": null , " expand_argument_vars ": true , " removes ": null , " stdin ": null , " stdin_add_newline ": true , " strip_empty_ends ": true } } , " msg ": "", " rc ": 0 , " start ": " 2024-12-22 20:21:20.973026 ", " stderr ": "", " stderr_lines ": [] , " stdout ": " hiyoko ", " stdout_lines ": [ " hiyoko " ] } ã©ããªæã«äœ¿ãã°ããã®ïŒ rawã¢ãžã¥ãŒã«ããshellãcommandã¢ãžã¥ãŒã«ãšç°ãªãããšã¯ããããŸãããã§ã¯ãå®éã«rawã¢ãžã¥ãŒã«ãã©ã®ãããªæã«ã€ããã°ããã®ã§ããããïŒ ã»ã·ã³ãã«ãªã³ãã³ããå®è¡ãã ã玹ä»ããããã«ããããŒãžãããŒãäžã§ããã³ãã³ããç¹å®ã®ã·ã§ã«ã¹ã¯ãªãããå®è¡ããããšããå Žåã«ãrawã¢ãžã¥ãŒã«ã§ããã°Pythonã¹ã¯ãªãããä»ããçŽæ¥SSHæ¥ç¶ãããããªæèŠã§ã³ãã³ããå®è¡ã§ããŸããäžèšã®äŸã¯RHELã«å¯ŸããŠå®è¡ããŠããŸãããå®ã¯rawã¢ãžã¥ãŒã«ã¯Windowsç°å¢ããããã¯ãŒã¯ããã€ã¹ã«å¯ŸããŠãåäœããŸãã®ã§ãç°å¢ãéžã°ãã«ã³ãã³ããå®è¡ãããããšãã§ããŸãã ããã«ãrawã¢ãžã¥ãŒã«ã«ããã³ãã³ãå®è¡ã¯ããªãŒããŒããããéåžžã«å°ããã§ããplofile_tasksã®callbackãã©ã°ã€ã³ã§èšæž¬ããçµæãæ¯èŒããŠã¿ãŸãããã shellã¢ãžã¥ãŒã«ãå©çšããå Žå: TASKS RECAP ******************************************************************** æææ¥ 23 12æ 2024 10:35:31 +0900 (0:00:00.220) 0:00:00.224 *************** =============================================================================== Execute whoami command -------------------------------------------------- 0.22s rawã¢ãžã¥ãŒã«ãå©çšããå Žå: TASKS RECAP ******************************************************************** æææ¥ 23 12æ 2024 10:36:15 +0900 (0:00:00.020) 0:00:00.024 *************** =============================================================================== Execute whoami command -------------------------------------------------- 0.02s rawã¢ãžã¥ãŒã«ãå©çšããã ãã§ãã·ã³ãã«ãªã³ãã³ã1ã€ã®å®è¡ã0.2ç§ã®å·®ããããŸããåœç¶ãããå€ãã®ã³ãã³ããå®è¡ããããã¹ã¯ãªãããå®è¡ãããããªã·ãã¥ãšãŒã·ã§ã³ã§ã¯ããã®å·®ã¯å€§ãããªãã§ãããããã®ããã«ãããŒãã«å¯ŸããŠã·ã³ãã«ãªã³ãã³ããå®è¡ããããã¹ã¯ãªãããèµ·åãããããªçšéã§ã¯ãrawã¯éåžžã«åªããéžæè¢ã«ãªããŸãã ã»æ¥ç¶å
ã«Pythonãååšããªãå Žåã®åé¿ç éåžžãRHELããŒããªã©ã§ããã°Pythonã¯ããã©ã«ãã§å©çšå¯èœã§ããããããã¯ãŒã¯æ©åšãªã©æ¥ç¶å
ã«ãã£ãŠã¯Pythonãå©çšã§ããªãå ŽåããããŸãããããã£ãããã€ã¹ã®èªååã«ãããŠå¯Ÿå¿ããã¢ãžã¥ãŒã«ããªãå Žãrawã¢ãžã¥ãŒã«ã§ããã°çŽæ¥ã³ãã³ããå®è¡ã§ãããããå€å°ããŒãã£ãŒãªPlaybookã«ã¯ãªããŸãããèªååãå®è£
ããããšãã§ããŸãã ã»ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã®åãåã ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã®éã¯ããªãã¹ãåé¡ã®åå ãšãªãã¬ã€ã€ãŒãå°ãªãããããã®ã§ããrawã¢ãžã¥ãŒã«ã§ããã°ãéã«Pythonã¹ã¯ãªããã®å®è¡ãšããäœèšãªããã»ã¹ãæãããšãªãã³ãã³ããã¹ã¯ãªãããå®è¡ã§ãããããäŸãã°shellã¢ãžã¥ãŒã«ã§å®è¡ããã¹ã¯ãªãããæ£åžžã«åäœããªãå Žåã«ãã©ãã«åå ãããã®ãåãåããæãªã©ã«éåžžã«åœ¹ç«ã¡ãŸãã rawã¢ãžã¥ãŒã«ã®ãã¡ãªããã¯ïŒ ã§ã¯ããã¹ãŠã®ã³ãã³ããå®è¡ããã¢ãžã¥ãŒã«ã¯rawã¢ãžã¥ãŒã«ã²ãšã€ã§ããããã«æããŸãããå®éã«ã¯shellã¢ãžã¥ãŒã«ãªã©ãå©çšããããšãå€ãã®ã¯ãªãã§ããããïŒ çç±ã®ã²ãšã€ã«ããå©çšã§ããæ©èœãæå°éã§ããããšããããšãæããããŸãã rawã¢ãžã¥ãŒã«ã®ããã¥ã¡ã³ã ãèŠãŠããã ããã°ãããéããæå®ã§ãããªãã·ã§ã³ã¯ã»ãŒååšããŸããããŸããæåã®rawã¢ãžã¥ãŒã«ãšshellã¢ãžã¥ãŒã«ã®å®è¡çµæãæ¯èŒããŠããã ããšãå®è¡åŸã«å©çšã§ããæ»ãå€ã倧ããç°ãªãããšãããããŸãããã®ãããã³ãã³ãã®å®è¡çµæãå
ã«æ¡ä»¶åå²ããããããããªã±ãŒã¹ã§ã¯äžäŸ¿ãªã±ãŒã¹ããããŸãã ãŸããã·ã§ã«ã®æ©èœã«æ¥µåºŠã«äŸåãããããªãã®ïŒé·å€§ãªãã€ãããªãã€ã¬ã¯ããªã©ïŒãæ©èœããªãã±ãŒã¹ããããããå¿
ãããrawã¢ãžã¥ãŒã«ã ãã䜿ãã°ãããšãããã®ã§ã¯ãªãã驿驿ã§ãã®æã®èŠä»¶ã«ãã£ãã¢ãžã¥ãŒã«ãéžæããŠããã ããã°å¹žãã§ãã