{"id":238,"date":"2023-08-30T17:01:50","date_gmt":"2023-08-30T09:01:50","guid":{"rendered":"http:\/\/xianyijitan.top\/?p=238"},"modified":"2023-08-30T17:01:50","modified_gmt":"2023-08-30T09:01:50","slug":"ansible-%e4%b8%ad-register-%e6%b3%a8%e5%86%8c%e5%8f%98%e9%87%8f","status":"publish","type":"post","link":"https:\/\/xianyijitan.top\/?p=238","title":{"rendered":"Ansible \u4e2d register \u6ce8\u518c\u53d8\u91cf"},"content":{"rendered":"<p><strong>Ansible\u7684register\u6a21\u5757\u7528\u4e8e\u6355\u83b7\u548c\u4fdd\u5b58\u4efb\u52a1\u6267\u884c\u7ed3\u679c\u7684\uff0cregister\u662f\u4e00\u4e2a\u5173\u952e\u5b57\uff0c\u53ef\u4ee5\u5c06\u4efb\u52a1\u6267\u884c\u7684\u7ed3\u679c\u8d4b\u503c\u7ed9\u6307\u5b9a\u7684\u53d8\u91cf\u540d\u79f0\uff0c\u8fd9\u4e2a\u53d8\u91cf\u53ef\u4ee5\u5728\u540e\u7eed\u4efb\u52a1\u4e2d\u4f7f\u7528\u3002<\/strong><\/p>\n<p><strong>register\u6a21\u5757\u53ef\u4ee5\u6355\u83b7\u5404\u79cd\u7c7b\u578b\u7684\u8f93\u51fa\uff0c\u5305\u62ecstdout\u3001stderr\u3001rc\u3001changed\u7b49\u3002\u4e5f\u53ef\u4ee5\u4e0e\u5176\u4ed6\u6a21\u5757\u4e00\u8d77\u4f7f\u7528\uff0c\u4f8b\u5982\u201cwhen\u201d\u6761\u4ef6\u3001\u201cloop\u201d\u5faa\u73af\u7b49\u3002<\/strong><\/p>\n<p><strong>\u5728web1\u7ec4\u7684\u4e3b\u673a\u4e0a\u6267\u884c\u4efb\u52a1\uff0c\u521b\u5efa\/tmp\/dir1\uff0c\u5e76\u6253\u5370\u521b\u5efa\u7ed3\u679c\uff0c\u4ee3\u7801\u793a\u610f\u5982\u4e0b\uff1a<\/strong><\/p>\n<pre><code class=\"language-shell\">[root@pubserver ansible]# vim regi1.yml\n\n---\n- name: create file \/tmp\/dir1\n  hosts: web1\n  tasks:\n    - name: create file\n      file:\n        path: \/tmp\/dir1\n        state: touch\n      register: result\n\n    - name: display output\n      debug:\n        msg: &quot;{{result}}&quot;\n\n[root@pubserver ansible]# ansible-playbook regi1.yml \n\n        .............\n\nTASK [display output] *****************************************************************************************************************************\nok: [web1] =&gt; {\n    &quot;msg&quot;: {\n        &quot;changed&quot;: true,\n        &quot;dest&quot;: &quot;\/tmp\/dir1&quot;,\n        &quot;diff&quot;: {\n            &quot;after&quot;: {\n                &quot;atime&quot;: 1693385587.9442923,\n                &quot;mtime&quot;: 1693385587.9442923,\n                &quot;path&quot;: &quot;\/tmp\/dir1&quot;,\n                &quot;state&quot;: &quot;touch&quot;\n            },\n            &quot;before&quot;: {\n                &quot;atime&quot;: 1693385587.9377587,\n                &quot;mtime&quot;: 1693385587.9377587,\n                &quot;path&quot;: &quot;\/tmp\/dir1&quot;,\n                &quot;state&quot;: &quot;absent&quot;\n            }\n        },\n        &quot;failed&quot;: false,\n        &quot;gid&quot;: 0,\n        &quot;group&quot;: &quot;root&quot;,\n        &quot;mode&quot;: &quot;0644&quot;,\n        &quot;owner&quot;: &quot;root&quot;,\n        &quot;secontext&quot;: &quot;unconfined_u:object_r:user_tmp_t:s0&quot;,\n        &quot;size&quot;: 0,\n        &quot;state&quot;: &quot;file&quot;,\n        &quot;uid&quot;: 0\n    }\n}\n\nPLAY RECAP ****************************************************************************************************************************************\nweb1                       : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0<\/code><\/pre>\n<p><strong>\u5728webservers\u7ec4\u7684\u4e3b\u673a\u4e0a\u6267\u884c\u4efb\u52a1\uff0c\u521b\u5efa\u6587\u4ef6\/tmp\/ademo\/abc\uff0c\u5982\u679c\u521b\u5efa\u4e0d\u6210\u529f\uff0c\u5219\u901a\u8fc7debug\u8f93\u51facreate failed\uff0c\u4ee3\u7801\u793a\u610f\u5982\u4e0b\uff1a<\/strong><\/p>\n<pre><code class=\"language-shell\">[root@pubserver ansible]# vim regi2.yml\n---\n- name: create file \/tmp\/ademo\/abc\n  hosts: webservers\n  ignore_errors: yes\n  tasks:\n    - name: create file\n      file:\n        path: \/tmp\/ademo\/abc\n        state: touch\n      register: result\n\n    - name: debug output if create failed\n      debug:\n        msg: &quot;create failed&quot;\n      when: not result.changed\n\n# \u6d4b\u8bd5\n[root@pubserver ansible]# ansible-playbook regi2.yml \n\n        ..........\n\nTASK [create file] ********************************************************************************************************************************\nfatal: [web2]: FAILED! =&gt; {&quot;changed&quot;: false, &quot;msg&quot;: &quot;Error, could not touch target: [Errno 2] \u6ca1\u6709\u90a3\u4e2a\u6587\u4ef6\u6216\u76ee\u5f55: b&#039;\/tmp\/ademo\/abc&#039;&quot;, &quot;path&quot;: &quot;\/tmp\/ademo\/abc&quot;}\n...ignoring\nfatal: [web1]: FAILED! =&gt; {&quot;changed&quot;: false, &quot;msg&quot;: &quot;Error, could not touch target: [Errno 2] \u6ca1\u6709\u90a3\u4e2a\u6587\u4ef6\u6216\u76ee\u5f55: b&#039;\/tmp\/ademo\/abc&#039;&quot;, &quot;path&quot;: &quot;\/tmp\/ademo\/abc&quot;}\n...ignoring\n\nTASK [debug output if create failed] **************************************************************************************************************\nok: [web1] =&gt; {\n    &quot;msg&quot;: &quot;create failed&quot;\n}\nok: [web2] =&gt; {\n    &quot;msg&quot;: &quot;create failed&quot;\n}\n\nPLAY RECAP ****************************************************************************************************************************************\nweb1                       : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=1   \nweb2                       : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=1<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Ansible\u7684register\u6a21\u5757\u7528\u4e8e\u6355\u83b7\u548c\u4fdd\u5b58\u4efb\u52a1\u6267\u884c\u7ed3\u679c\u7684\uff0cregister\u662f\u4e00\u4e2a\u5173\u952e\u5b57\uff0c\u53ef\u4ee5\u5c06\u4efb\u52a1\u6267\u884c\u7684\u7ed3\u679c\u8d4b\u503c\u7ed9\u6307\u5b9a\u7684\u53d8\u91cf\u540d\u79f0\uff0c\u8fd9\u4e2a\u53d8\u91cf\u53ef\u4ee5\u5728\u540e\u7eed\u4efb\u52a1\u4e2d\u4f7f\u7528\u3002 register\u6a21\u5757\u53ef\u4ee5\u6355\u83b7\u5404\u79cd\u7c7b\u578b\u7684\u8f93\u51fa\uff0c\u5305\u62ecstdout\u3001stderr\u3001rc\u3001changed\u7b49\u3002\u4e5f\u53ef\u4ee5\u4e0e\u5176\u4ed6\u6a21\u5757\u4e00\u8d77\u4f7f\u7528\uff0c\u4f8b\u5982\u201cwhen\u201d\u6761\u4ef6\u3001\u201cloop\u201d\u5faa\u73af\u7b49\u3002 \u5728web1\u7ec4\u7684\u4e3b\u673a\u4e0a\u6267\u884c\u4efb\u52a1\uff0c\u521b\u5efa\/tmp\/dir1\uff0c\u5e76\u6253\u5370\u521b\u5efa\u7ed3\u679c\uff0c\u4ee3\u7801\u793a\u610f\u5982\u4e0b\uff1a [root@pubserver ansible]# vim regi1.yml &#8212; &#8211; name: create file \/tmp\/dir1 hosts: web1 tasks: &#8211; name: create file file: path: \/tmp\/dir1 state: touch register: result &#8211; name: display output debug: msg: &quot;{{result}}&quot; [root@pubserver ansible]# ansible-playbook regi1.yml &#8230;&#8230;&#8230;&#8230;. TASK [display output] ***************************************************************************************************************************** ok: [web1] =&gt; { &quot;msg&quot;: { &quot;changed&quot;: true, &quot;dest&quot;: &quot;\/tmp\/dir1&quot;, &quot;diff&quot;: { &quot;after&quot;: { &quot;atime&quot;: 1693385587.9442923, &quot;mtime&quot;: 1693385587.9442923, &quot;path&quot;: &quot;\/tmp\/dir1&quot;, &quot;state&quot;: &quot;touch&quot; }, &quot;before&quot;: { &quot;atime&quot;: 1693385587.9377587, &quot;mtime&quot;: 1693385587.9377587, &quot;path&quot;: &quot;\/tmp\/dir1&quot;, &quot;state&quot;: &quot;absent&quot; } }, &quot;failed&quot;: false, &quot;gid&quot;: 0, &quot;group&quot;: &quot;root&quot;, &quot;mode&quot;: &quot;0644&quot;, &quot;owner&quot;: &quot;root&quot;, &quot;secontext&quot;: &quot;unconfined_u:object_r:user_tmp_t:s0&quot;, &quot;size&quot;: 0, &quot;state&quot;: &quot;file&quot;, &quot;uid&quot;: 0 } } PLAY RECAP **************************************************************************************************************************************** web1 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 \u5728webservers\u7ec4\u7684\u4e3b\u673a\u4e0a\u6267\u884c\u4efb\u52a1\uff0c\u521b\u5efa\u6587\u4ef6\/tmp\/ademo\/abc\uff0c\u5982\u679c\u521b\u5efa\u4e0d\u6210\u529f\uff0c\u5219\u901a\u8fc7debug\u8f93\u51facreate failed\uff0c\u4ee3\u7801\u793a\u610f\u5982\u4e0b\uff1a [root@pubserver ansible]# vim regi2.yml &#8212; &#8211; name: create file \/tmp\/ademo\/abc hosts: webservers ignore_errors: yes tasks: &#8211; name: create file file: path: \/tmp\/ademo\/abc state: touch register: result &#8211; name: debug output if create failed debug: m&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[6],"tags":[],"class_list":["post-238","post","type-post","status-publish","format-standard","hentry","category-lixx"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/xianyijitan.top\/index.php?rest_route=\/wp\/v2\/posts\/238","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/xianyijitan.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/xianyijitan.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/xianyijitan.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/xianyijitan.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=238"}],"version-history":[{"count":1,"href":"https:\/\/xianyijitan.top\/index.php?rest_route=\/wp\/v2\/posts\/238\/revisions"}],"predecessor-version":[{"id":239,"href":"https:\/\/xianyijitan.top\/index.php?rest_route=\/wp\/v2\/posts\/238\/revisions\/239"}],"wp:attachment":[{"href":"https:\/\/xianyijitan.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=238"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/xianyijitan.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=238"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/xianyijitan.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=238"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}