{"id":1182,"date":"2023-07-14T23:50:17","date_gmt":"2023-07-14T15:50:17","guid":{"rendered":"https:\/\/www.qiangzhenshuai.com\/?p=1182"},"modified":"2023-08-08T14:56:18","modified_gmt":"2023-08-08T06:56:18","slug":"ansible%e5%8f%98%e9%87%8f","status":"publish","type":"post","link":"https:\/\/www.qiangzhenshuai.com\/?p=1182","title":{"rendered":"Ansible\u53d8\u91cf"},"content":{"rendered":"<div id=\"user-znELRLGnTi5gQH7r2sXhG\" class=\"chat-item chat-item__request\">\n<h1 class=\"chat-content\">1.Ansible\u53d8\u91cf\u6982\u8ff0\u8be6\u60c5<\/h1>\n<\/div>\n<div id=\"assistant-IV7MgAc68Ob7T6zyna6Oe\" class=\"chat-item chat-item__response\">\n<div class=\"chat-content\">\n<div class=\"markdown-body\">\n<p>\u5728Ansible\u4e2d\uff0c\u53d8\u91cf\u662f\u7528\u4e8e\u5b58\u50a8\u548c\u5f15\u7528\u503c\u7684\u6807\u8bc6\u7b26\u3002\u5b83\u4eec\u53ef\u4ee5\u5728Playbooks\u3001\u4efb\u52a1\u548c\u6a21\u677f\u4e2d\u4f7f\u7528\uff0c\u4f7f\u60a8\u80fd\u591f\u52a8\u6001\u5730\u8bbe\u7f6e\u548c\u4f7f\u7528\u503c\u3002\u53d8\u91cf\u5728Ansible\u4e2d\u975e\u5e38\u91cd\u8981\uff0c\u56e0\u4e3a\u5b83\u4eec\u5141\u8bb8\u60a8\u7f16\u5199\u7075\u6d3b\u548c\u53ef\u91cd\u7528\u7684\u914d\u7f6e\u3002<\/p>\n<p>\u4ee5\u4e0b\u662f\u4e00\u4e9b\u4e0eAnsible\u53d8\u91cf\u76f8\u5173\u7684\u91cd\u8981\u6982\u5ff5\u548c\u7528\u6cd5\uff1a<\/p>\n<p>\u53d8\u91cf\u5b9a\u4e49\uff1a\u60a8\u53ef\u4ee5\u5728Playbooks\u3001\u89d2\u8272\u548c\u4efb\u52a1\u4e2d\u5b9a\u4e49\u53d8\u91cf\u3002\u53d8\u91cf\u53ef\u4ee5\u662f\u7b80\u5355\u7684\u6807\u91cf\u503c\uff08\u5982\u5b57\u7b26\u4e32\u6216\u6570\u5b57\uff09\uff0c\u4e5f\u53ef\u4ee5\u662f\u590d\u6742\u7684\u6570\u636e\u7ed3\u6784\uff08\u5982\u5217\u8868\u3001\u5b57\u5178\u6216\u5bf9\u8c61\uff09\u3002<\/p>\n<p>\u9884\u5b9a\u4e49\u53d8\u91cf\uff1aAnsible\u63d0\u4f9b\u4e86\u4e00\u4e9b\u9884\u5b9a\u4e49\u7684\u53d8\u91cf\uff0c\u53ef\u4ee5\u5728Playbooks\u548c\u6a21\u677f\u4e2d\u76f4\u63a5\u4f7f\u7528\u3002\u8fd9\u4e9b\u53d8\u91cf\u5305\u62ecansible_hostname\uff08\u4e3b\u673a\u540d\uff09\u3001ansible_os_family\uff08\u64cd\u4f5c\u7cfb\u7edf\u5bb6\u65cf\uff09\u548cansible_distribution\uff08\u64cd\u4f5c\u7cfb\u7edf\u53d1\u884c\u7248\uff09\u7b49\u3002<\/p>\n<p>\u53d8\u91cf\u7684\u4f5c\u7528\u57df\uff1a\u53d8\u91cf\u53ef\u4ee5\u5728\u4e0d\u540c\u7684\u4f5c\u7528\u57df\u4e2d\u5b9a\u4e49\u548c\u4f7f\u7528\u3002\u6700\u5e38\u89c1\u7684\u4f5c\u7528\u57df\u662f\u5168\u5c40\u4f5c\u7528\u57df\u548c\u4efb\u52a1\u4f5c\u7528\u57df\u3002\u5168\u5c40\u4f5c\u7528\u57df\u4e2d\u5b9a\u4e49\u7684\u53d8\u91cf\u5728\u6574\u4e2aPlaybook\u4e2d\u90fd\u53ef\u7528\uff0c\u800c\u4efb\u52a1\u4f5c\u7528\u57df\u4e2d\u5b9a\u4e49\u7684\u53d8\u91cf\u4ec5\u5728\u8be5\u4efb\u52a1\u4e2d\u53ef\u7528\u3002<\/p>\n<p>\u53d8\u91cf\u5f15\u7528\uff1a\u5728Playbooks\u548c\u6a21\u677f\u4e2d\uff0c\u60a8\u53ef\u4ee5\u4f7f\u7528{{ variable_name }}\u7684\u8bed\u6cd5\u5f15\u7528\u53d8\u91cf\u3002Ansible\u5c06\u5728\u8fd0\u884c\u65f6\u66ff\u6362\u53d8\u91cf\u5f15\u7528\u4e3a\u5176\u5b9e\u9645\u503c\u3002<\/p>\n<p>\u53d8\u91cf\u7684\u4f18\u5148\u7ea7\uff1a\u5f53\u5728\u591a\u4e2a\u5730\u65b9\u5b9a\u4e49\u76f8\u540c\u540d\u79f0\u7684\u53d8\u91cf\u65f6\uff0cAnsible\u4f7f\u7528\u4e00\u5957\u4f18\u5148\u7ea7\u89c4\u5219\u6765\u786e\u5b9a\u8981\u4f7f\u7528\u7684\u53d8\u91cf\u503c\u3002\u4f8b\u5982\uff0c\u4efb\u52a1\u7ea7\u522b\u7684\u53d8\u91cf\u4f18\u5148\u4e8e\u89d2\u8272\u7ea7\u522b\u7684\u53d8\u91cf\u3002<\/p>\n<p>\u53d8\u91cf\u6587\u4ef6\uff1a\u60a8\u53ef\u4ee5\u5c06\u53d8\u91cf\u5b9a\u4e49\u4fdd\u5b58\u5728\u5355\u72ec\u7684\u53d8\u91cf\u6587\u4ef6\u4e2d\uff0c\u5e76\u5728Playbooks\u4e2d\u4f7f\u7528vars_files\u5173\u952e\u5b57\u5f15\u5165\u8fd9\u4e9b\u53d8\u91cf\u6587\u4ef6\u3002\u8fd9\u4f7f\u5f97\u60a8\u53ef\u4ee5\u5c06\u53d8\u91cf\u903b\u8f91\u5206\u79bb\u51fa\u6765\uff0c\u4f7fPlaybooks\u66f4\u6613\u4e8e\u7ef4\u62a4\u548c\u7ba1\u7406\u3002<\/p>\n<p>\u52a8\u6001\u53d8\u91cf\uff1aAnsible\u5141\u8bb8\u60a8\u4f7f\u7528Jinja2\u6a21\u677f\u8bed\u8a00\u5728\u8fd0\u884c\u65f6\u52a8\u6001\u8ba1\u7b97\u53d8\u91cf\u7684\u503c\u3002\u8fd9\u4f7f\u5f97\u60a8\u53ef\u4ee5\u6839\u636e\u4e3b\u673a\u5c5e\u6027\u3001\u5176\u4ed6\u53d8\u91cf\u7684\u503c\u6216\u5176\u4ed6\u6761\u4ef6\u6765\u8bbe\u7f6e\u53d8\u91cf\u7684\u503c\u3002<\/p>\n<p>\u901a\u8fc7\u4f7f\u7528\u53d8\u91cf\uff0c\u60a8\u53ef\u4ee5\u6839\u636e\u9700\u8981\u81ea\u5b9a\u4e49\u548c\u914d\u7f6eAnsible Playbooks\u548c\u89d2\u8272\uff0c\u4f7f\u5176\u66f4\u52a0\u7075\u6d3b\u548c\u53ef\u91cd\u7528\u3002\u53d8\u91cf\u4f7f\u60a8\u80fd\u591f\u7f16\u5199\u901a\u7528\u7684\u914d\u7f6e\uff0c\u5e76\u6839\u636e\u4e0d\u540c\u7684\u73af\u5883\u548c\u9700\u6c42\u8fdb\u884c\u81ea\u5b9a\u4e49\u3002<\/p>\n<h1>2.Ansible\u53d8\u91cf\u4f18\u5148\u7ea7<\/h1>\n<p>\u5728Ansible\u4e2d\uff0c\u5f53\u591a\u4e2a\u4f4d\u7f6e\u90fd\u5b9a\u4e49\u4e86\u76f8\u540c\u540d\u79f0\u7684\u53d8\u91cf\u65f6\uff0c\u4f1a\u4f7f\u7528\u4e00\u5957\u4f18\u5148\u7ea7\u89c4\u5219\u6765\u786e\u5b9a\u8981\u4f7f\u7528\u7684\u53d8\u91cf\u503c\u3002\u4ee5\u4e0b\u662fAnsible\u53d8\u91cf\u7684\u4f18\u5148\u7ea7\u987a\u5e8f\uff1a<\/p>\n<p>\u547d\u4ee4\u884c\u53d8\u91cf\uff1a\u901a\u8fc7\u5728\u8fd0\u884cansible-playbook\u547d\u4ee4\u65f6\u4f7f\u7528-e\u6216&#8211;extra-vars\u9009\u9879\u6307\u5b9a\u7684\u53d8\u91cf\u5177\u6709\u6700\u9ad8\u4f18\u5148\u7ea7\u3002\u4f8b\u5982\uff1aansible-playbook playbook.yml -e &#8220;my_var=value&#8221;<\/p>\n<p>\u4e3b\u673a\u53d8\u91cf\uff1a\u60a8\u53ef\u4ee5\u5728Ansible\u7684\u4e3b\u673a\u6e05\u5355\u6587\u4ef6\u4e2d\u4e3a\u7279\u5b9a\u4e3b\u673a\u5b9a\u4e49\u53d8\u91cf\u3002\u8fd9\u4e9b\u53d8\u91cf\u4ec5\u9002\u7528\u4e8e\u7279\u5b9a\u4e3b\u673a\u3002<\/p>\n<p>\u7ec4\u53d8\u91cf\uff1a\u60a8\u53ef\u4ee5\u5728\u4e3b\u673a\u6e05\u5355\u6587\u4ef6\u4e2d\u4e3a\u7ec4\u5b9a\u4e49\u53d8\u91cf\u3002\u8fd9\u4e9b\u53d8\u91cf\u9002\u7528\u4e8e\u8be5\u7ec4\u4e2d\u7684\u6240\u6709\u4e3b\u673a\u3002<\/p>\n<p>\u4e3b\u673a\u548c\u7ec4\u53d8\u91cf\u6587\u4ef6\uff1a\u60a8\u53ef\u4ee5\u5728\u4e3b\u673a\u6e05\u5355\u6587\u4ef6\u4e2d\u5f15\u5165\u53d8\u91cf\u6587\u4ef6\uff0c\u5e76\u4e3a\u4e3b\u673a\u548c\u7ec4\u5b9a\u4e49\u53d8\u91cf\u3002\u8fd9\u4e9b\u53d8\u91cf\u5728\u7ec4\u548c\u4e3b\u673a\u7ea7\u522b\u4e0a\u5177\u6709\u8f83\u9ad8\u7684\u4f18\u5148\u7ea7\u3002<\/p>\n<p>\u89d2\u8272\u53d8\u91cf\uff1a\u89d2\u8272\u4e2d\u5b9a\u4e49\u7684\u53d8\u91cf\u5177\u6709\u8f83\u4f4e\u7684\u4f18\u5148\u7ea7\u3002\u60a8\u53ef\u4ee5\u5728\u89d2\u8272\u7684defaults\u76ee\u5f55\u4e2d\u5b9a\u4e49\u53d8\u91cf\uff0c\u8fd9\u4e9b\u53d8\u91cf\u5c06\u5728\u89d2\u8272\u4e2d\u4f7f\u7528\uff0c\u4f46\u53ef\u4ee5\u88ab\u5176\u4ed6\u66f4\u9ad8\u4f18\u5148\u7ea7\u7684\u53d8\u91cf\u8986\u76d6\u3002<\/p>\n<p>Playbook\u53d8\u91cf\uff1a\u60a8\u53ef\u4ee5\u5728Playbook\u4e2d\u5b9a\u4e49\u53d8\u91cf\uff0c\u5e76\u5c06\u5176\u5e94\u7528\u4e8e\u7279\u5b9a\u7684\u4efb\u52a1\u6216\u5267\u672c\u3002\u8fd9\u4e9b\u53d8\u91cf\u5177\u6709\u8f83\u4f4e\u7684\u4f18\u5148\u7ea7\uff0c\u5e76\u53ef\u4ee5\u88ab\u5176\u4ed6\u66f4\u9ad8\u4f18\u5148\u7ea7\u7684\u53d8\u91cf\u8986\u76d6\u3002<\/p>\n<p>\u7cfb\u7edf\u73af\u5883\u53d8\u91cf\uff1aAnsible\u8fd8\u53ef\u4ee5\u4f7f\u7528\u7cfb\u7edf\u73af\u5883\u53d8\u91cf\u4f5c\u4e3a\u53d8\u91cf\u3002\u8fd9\u4e9b\u53d8\u91cf\u5728Ansible\u4e2d\u5177\u6709\u8f83\u4f4e\u7684\u4f18\u5148\u7ea7\u3002<\/p>\n<p>\u5f53\u5b58\u5728\u591a\u4e2a\u53d8\u91cf\u5b9a\u4e49\u65f6\uff0cAnsible\u5c06\u6309\u7167\u4e0a\u8ff0\u4f18\u5148\u7ea7\u987a\u5e8f\u786e\u5b9a\u8981\u4f7f\u7528\u7684\u53d8\u91cf\u503c\u3002\u8fd9\u4f7f\u5f97\u60a8\u53ef\u4ee5\u6839\u636e\u9700\u8981\u5728\u4e0d\u540c\u7684\u5c42\u6b21\u4e0a\u5b9a\u4e49\u548c\u8986\u76d6\u53d8\u91cf\uff0c\u4ee5\u5b9e\u73b0\u66f4\u7075\u6d3b\u548c\u53ef\u5b9a\u5236\u7684\u914d\u7f6e\u3002<\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><a href=\"https:\/\/docs.ansible.com\/ansible\/latest\/playbook_guide\/playbooks_variables.html\">\u53d8\u91cf\u4f7f\u7528<\/a><\/h2>\n<h1>3.\u5b9a\u4e49\u53d8\u91cf<\/h1>\n<p>\u5728Ansible\u4e2d\uff0c\u60a8\u53ef\u4ee5\u4f7f\u7528<code>vars<\/code>\u5173\u952e\u5b57\u6765\u5b9a\u4e49\u53d8\u91cf\u3002\u53d8\u91cf\u53ef\u4ee5\u5728playbook\u4e2d\u4f7f\u7528\uff0c\u4ee5\u4fbf\u5728\u4e0d\u540c\u7684\u4efb\u52a1\u548c\u4e3b\u673a\u4e4b\u95f4\u5171\u4eab\u503c\u3002<\/p>\n<p>\u6709\u51e0\u79cd\u65b9\u6cd5\u53ef\u4ee5\u5b9a\u4e49\u53d8\u91cf\uff1a<\/p>\n<p>\u5728playbook\u4e2d\u5b9a\u4e49\u53d8\u91cf\uff1a<\/p>\n<pre><code class=\"hljs language-yaml\"><span class=\"hljs-bullet\">-<\/span> <span class=\"hljs-attr\">name:<\/span> <span class=\"hljs-string\">\u5b9a\u4e49\u53d8\u91cf<\/span>\r\n  <span class=\"hljs-attr\">hosts:<\/span> <span class=\"hljs-string\">localhost<\/span>\r\n  <span class=\"hljs-attr\">vars:<\/span>\r\n    <span class=\"hljs-attr\">my_variable:<\/span> <span class=\"hljs-string\">value<\/span>\r\n\r\n  <span class=\"hljs-attr\">tasks:<\/span>\r\n    <span class=\"hljs-bullet\">-<\/span> <span class=\"hljs-attr\">name:<\/span> <span class=\"hljs-string\">\u4f7f\u7528\u53d8\u91cf<\/span>\r\n      <span class=\"hljs-attr\">debug:<\/span>\r\n        <span class=\"hljs-attr\">var:<\/span> <span class=\"hljs-string\">my_variable<\/span>\r\n<\/code><\/pre>\n<p>\u5728\u5355\u4e2a\u4efb\u52a1\u4e2d\u5b9a\u4e49\u53d8\u91cf\uff1a<\/p>\n<pre><code class=\"hljs language-yaml\"><span class=\"hljs-bullet\">-<\/span> <span class=\"hljs-attr\">name:<\/span> <span class=\"hljs-string\">\u4f7f\u7528\u53d8\u91cf<\/span>\r\n  <span class=\"hljs-attr\">hosts:<\/span> <span class=\"hljs-string\">localhost<\/span>\r\n  <span class=\"hljs-attr\">tasks:<\/span>\r\n    <span class=\"hljs-bullet\">-<\/span> <span class=\"hljs-attr\">name:<\/span> <span class=\"hljs-string\">\u5b9a\u4e49\u53d8\u91cf<\/span>\r\n      <span class=\"hljs-attr\">set_fact:<\/span>\r\n        <span class=\"hljs-attr\">my_variable:<\/span> <span class=\"hljs-string\">value<\/span>\r\n\r\n    <span class=\"hljs-bullet\">-<\/span> <span class=\"hljs-attr\">name:<\/span> <span class=\"hljs-string\">\u4f7f\u7528\u53d8\u91cf<\/span>\r\n      <span class=\"hljs-attr\">debug:<\/span>\r\n        <span class=\"hljs-attr\">var:<\/span> <span class=\"hljs-string\">my_variable<\/span>\r\n<\/code><\/pre>\n<p>\u5728\u4e3b\u673a\u7ec4\u6216\u4e3b\u673a\u7684inventory\u6587\u4ef6\u4e2d\u5b9a\u4e49\u53d8\u91cf\uff1a<\/p>\n<pre><code class=\"hljs language-ini\"><span class=\"hljs-section\">[my_group]<\/span>\r\nmy_host <span class=\"hljs-attr\">ansible_host<\/span>=<span class=\"hljs-number\">192.168<\/span>.<span class=\"hljs-number\">1.100<\/span> my_variable=value\r\n<\/code><\/pre>\n<p>\u4f7f\u7528\u5916\u90e8\u53d8\u91cf\u6587\u4ef6\u5b9a\u4e49\u53d8\u91cf\uff1a \u5728playbook\u4e2d\u4f7f\u7528<code>vars_files<\/code>\u6307\u5b9a\u4e00\u4e2a\u6216\u591a\u4e2a\u5916\u90e8\u53d8\u91cf\u6587\u4ef6\uff0c\u5176\u4e2d\u5305\u542b\u53d8\u91cf\u5b9a\u4e49\u3002<\/p>\n<pre><code class=\"hljs language-yaml\"><span class=\"hljs-bullet\">-<\/span> <span class=\"hljs-attr\">name:<\/span> <span class=\"hljs-string\">\u4f7f\u7528\u5916\u90e8\u53d8\u91cf\u6587\u4ef6<\/span>\r\n  <span class=\"hljs-attr\">hosts:<\/span> <span class=\"hljs-string\">localhost<\/span>\r\n  <span class=\"hljs-attr\">vars_files:<\/span>\r\n    <span class=\"hljs-bullet\">-<\/span> <span class=\"hljs-string\">vars.yml<\/span>\r\n\r\n  <span class=\"hljs-attr\">tasks:<\/span>\r\n    <span class=\"hljs-bullet\">-<\/span> <span class=\"hljs-attr\">name:<\/span> <span class=\"hljs-string\">\u4f7f\u7528\u53d8\u91cf<\/span>\r\n      <span class=\"hljs-attr\">debug:<\/span>\r\n        <span class=\"hljs-attr\">var:<\/span> <span class=\"hljs-string\">my_variable<\/span>\r\n<\/code><\/pre>\n<p>\u8fd9\u4e9b\u53ea\u662f\u5b9a\u4e49\u53d8\u91cf\u7684\u4e00\u4e9b\u57fa\u672c\u65b9\u6cd5\u3002\u60a8\u8fd8\u53ef\u4ee5\u4f7f\u7528\u52a8\u6001\u53d8\u91cf\u3001\u89d2\u8272\u53d8\u91cf\u7b49\u66f4\u9ad8\u7ea7\u7684\u529f\u80fd\u6765\u7ba1\u7406\u548c\u4f7f\u7528\u53d8\u91cf<\/p>\n<h1>4.\u53d8\u91cf\u4f7f\u7528<\/h1>\n<h3>playbook\u53d8\u91cf\u53ef\u4ee5\u901a\u8fc7\u591a\u79cd\u65b9\u5f0f\u8fdb\u884c\u5b9a\u4e49\uff0c\u6700\u7b80\u5355\u7684\u65b9\u5f0f\u5c31\u662f\u5728playbook\u7684\u5f00\u5934\u901a\u8fc7vars\u8fdb\u884c\u5b9a\u4e49<\/h3>\n<h4>\u5267\u672c<\/h4>\n<pre>[root@ansible \/server\/playbook]$ cat 05var.yml \r\n---\r\n- hosts: al\r\n  vars:\r\n    - web_vars: nc \r\n    - web_paly: nmap\r\n  tasks:\r\n    - name: install nmap\r\n      yum:\r\n        name: \r\n        - \"{{ web_vars }}\"\r\n        - \"{{ web_paly }}\"\r\n        state: present<\/pre>\n<p>[root@ansible \/server\/playbook]$ ansible-playbook -C 05var.yml<\/p>\n<h3>\u4e5f\u53ef\u4ee5\u5728playbook\u4e2d\u4f7f\u7528vars_files\u6307\u5b9a\u6587\u4ef6\u4f5c\u4e3a\u53d8\u91cf\u6587\u4ef6\uff0c\u597d\u5904\u5c31\u662f\u5176\u4ed6\u7684playbook\u4e5f\u53ef\u4ee5\u8c03\u7528<\/h3>\n<h4>\u5267\u672c<\/h4>\n<pre>[root@ansible \/server\/playbook]$ cat 06var.yml \r\n---\r\n- hosts: al\r\n  vars_files: \/server\/playbook\/vars.yml\r\n  tasks:\r\n  - name: install nmap\r\n    yum:\r\n      name: \r\n      - \"{{ web_vars }}\"\r\n      - \"{{ web_paly }}\"\r\n      state: present<\/pre>\n<h4>vars.yml\u6587\u4ef6<\/h4>\n<p>[root@ansible \/server\/playbook]$ cat vars.yml<br \/>\nweb_vars: nc<br \/>\nweb_paly: nmap<\/p>\n<h3>\u5728inventory\u4e2d\u5b9a\u4e49\u53d8\u91cf\uff0c\u4e3b\u673a\u53d8\u91cf\u4f18\u5148\u7ea7\u9ad8\u4e8e\u4e3b\u673a\u7ec4\u53d8\u91cf<\/h3>\n<h4>\u5267\u672c<\/h4>\n<pre>[root@ansible \/server\/playbook]$ cat 06var.yml \r\n---\r\n- hosts: al\r\n  tasks:\r\n  - name: install nmap\r\n    yum:\r\n      name: \r\n      - \"{{ web_vars }}\"\r\n      - \"{{ web_paly }}\"\r\n      state: present<\/pre>\n<h4>\u914d\u7f6e\u6587\u4ef6<\/h4>\n<p>[root@ansible \/server\/playbook]$ tail -3 \/etc\/ansible\/hosts<br \/>\n[al:vars]<br \/>\nweb_vars=nc<br \/>\nweb_paly=nmap<\/p>\n<h3>ansible\u7684\u9879\u76ee\u76ee\u5f55\u4e2d\u521b\u5efa\u989d\u5916\u7684\u4e24\u4e2a\u53d8\u91cf\u76ee\u5f55\uff0c\u5206\u522b\u662fhost_vars\u548cgroup_vars\uff0c\u9700\u8981\u4e3b\u673ahost_vars\u4f18\u5148\u7ea7\u9ad8\u4e8egroup_vars<\/h3>\n<h4>\u521b\u5efa\u76ee\u5f55<\/h4>\n<p>[root@ansible \/server\/playbook]$ mkdir -p group_vars\/al<\/p>\n<p>[root@ansible \/server\/playbook]$ cat group_vars\/al\/vars.yml<br \/>\nweb_vars: nc<br \/>\nweb_paly: nmap<\/p>\n<h4>\u5267\u672c<\/h4>\n<pre>[root@ansible \/server\/playbook]$ cat 06var.yml \r\n---\r\n- hosts: al\r\n  tasks:\r\n  - name: install nmap\r\n    yum:\r\n      name: \r\n      - \"{{ web_vars }}\"\r\n      - \"{{ web_paly }}\"\r\n      state: present<\/pre>\n<p>[root@ansible \/server\/playbook]$ ansible-playbook 06var.yml<\/p>\n<h1>5.\u53d8\u91cf\u6ce8\u518c<\/h1>\n<p>\u5728Ansible\u4e2d\uff0c\u60a8\u53ef\u4ee5\u4f7f\u7528\u53d8\u91cf\u6ce8\u518c\u6765\u6355\u83b7\u4efb\u52a1\u6267\u884c\u7684\u7ed3\u679c\uff0c\u5e76\u5c06\u5176\u5b58\u50a8\u5230\u4e00\u4e2a\u53d8\u91cf\u4e2d\u4ee5\u4f9b\u540e\u7eed\u4f7f\u7528\u3002\u53d8\u91cf\u6ce8\u518c\u4f7f\u7528`register`\u5173\u952e\u5b57\u6765\u6307\u5b9a\u8981\u5b58\u50a8\u7ed3\u679c\u7684\u53d8\u91cf\u540d\u3002<\/p>\n<p>\u4ee5\u4e0b\u662f\u4e00\u4e2a\u4f7f\u7528\u53d8\u91cf\u6ce8\u518c\u7684\u793a\u4f8b\uff1a<\/p>\n<pre><span class=\"hljs-bullet\">-<\/span> <span class=\"hljs-attr\">name:<\/span> <span class=\"hljs-string\">\u793a\u4f8b\u4efb\u52a1<\/span> \r\n  hosts: <span class=\"hljs-string\">my_group<\/span><\/pre>\n<pre><span class=\"hljs-attr\">  tasks:<\/span> \r\n<span class=\"hljs-bullet\">    -<\/span> <span class=\"hljs-attr\">name:<\/span> <span class=\"hljs-string\">\u8fd0\u884c\u547d\u4ee4\u5e76\u6ce8\u518c\u7ed3\u679c<\/span> \r\n<span class=\"hljs-attr\">      command:<\/span> <span class=\"hljs-string\">echo<\/span> <span class=\"hljs-string\">\"Hello, World!\"<\/span> \r\n<span class=\"hljs-attr\">      register:<\/span> <span class=\"hljs-string\">result<\/span><\/pre>\n<pre><span class=\"hljs-bullet\">    -<\/span> <span class=\"hljs-attr\">name:<\/span> <span class=\"hljs-string\">\u6253\u5370\u7ed3\u679c<\/span> \r\n<span class=\"hljs-attr\">      debug:<\/span> \r\n<span class=\"hljs-attr\">        var:<\/span> <span class=\"hljs-string\">result.stdout<\/span><\/pre>\n<p>\u5728\u4e0a\u9762\u7684\u793a\u4f8b\u4e2d\uff0c\u6211\u4eec\u4f7f\u7528`command`\u6a21\u5757\u8fd0\u884c\u4e00\u4e2a\u547d\u4ee4\uff0c\u5e76\u5c06\u5176\u7ed3\u679c\u6ce8\u518c\u5230\u540d\u4e3a`result`\u7684\u53d8\u91cf\u4e2d\u3002<\/p>\n<p>\u5728\u540e\u7eed\u7684\u4efb\u52a1\u4e2d\uff0c\u6211\u4eec\u4f7f\u7528`debug`\u6a21\u5757\u6253\u5370\u53d8\u91cf`result.stdout`\u7684\u503c\u3002`result.stdout`\u8868\u793a\u547d\u4ee4\u7684\u6807\u51c6\u8f93\u51fa\u3002<\/p>\n<p>\u901a\u8fc7\u53d8\u91cf\u6ce8\u518c\uff0c\u60a8\u53ef\u4ee5\u6355\u83b7\u4efb\u52a1\u7684\u6267\u884c\u7ed3\u679c\uff0c\u5e76\u5728\u540e\u7eed\u7684\u4efb\u52a1\u4e2d\u4f7f\u7528\u3002\u8fd9\u5bf9\u4e8e\u9700\u8981\u6839\u636e\u4efb\u52a1\u7ed3\u679c\u8fdb\u884c\u6761\u4ef6\u5224\u65ad\u6216\u6267\u884c\u5176\u4ed6\u64cd\u4f5c\u7684\u60c5\u51b5\u975e\u5e38\u6709\u7528\u3002<\/p>\n<p>\u9664\u4e86`command`\u6a21\u5757\uff0c\u60a8\u8fd8\u53ef\u4ee5\u5728\u5176\u4ed6\u6a21\u5757\u4e2d\u4f7f\u7528\u53d8\u91cf\u6ce8\u518c\u3002\u4f8b\u5982\uff0c\u5728`shell`\u6a21\u5757\u4e2d\u8fd0\u884cShell\u547d\u4ee4\uff0c\u6216\u5728`fetch`\u6a21\u5757\u4e2d\u83b7\u53d6\u8fdc\u7a0b\u6587\u4ef6\u7684\u5185\u5bb9\u7b49\u3002<\/p>\n<p>\u8bf7\u6ce8\u610f\uff0c\u53d8\u91cf\u6ce8\u518c\u7684\u7ed3\u679c\u662f\u4e00\u4e2a\u5b57\u5178\uff0c\u5176\u4e2d\u5305\u542b\u4e86\u4efb\u52a1\u6267\u884c\u7684\u5404\u79cd\u4fe1\u606f\uff0c\u5982\u6807\u51c6\u8f93\u51fa\u3001\u6807\u51c6\u9519\u8bef\u3001\u8fd4\u56de\u7801\u7b49\u3002\u60a8\u53ef\u4ee5\u6839\u636e\u9700\u8981\u8bbf\u95ee\u8fd9\u4e9b\u4fe1\u606f\u3002\u5728\u4e0a\u9762\u7684\u793a\u4f8b\u4e2d\uff0c\u6211\u4eec\u4f7f\u7528`result.stdout`\u6765\u8bbf\u95ee\u547d\u4ee4\u7684\u6807\u51c6\u8f93\u51fa\u3002<\/p>\n<h2>var\u3001msg\u533a\u522b<\/h2>\n<p>\u5728Ansible\u7684`debug`\u6a21\u5757\u4e2d\uff0c`var`\u548c`msg`\u53c2\u6570\u7528\u4e8e\u6253\u5370\u53d8\u91cf\u7684\u503c\uff0c\u4f46\u5b83\u4eec\u6709\u4e00\u4e9b\u533a\u522b\u3002<\/p>\n<p>`var`\u53c2\u6570\u7528\u4e8e\u6253\u5370\u53d8\u91cf\u7684\u503c\uff0c\u5b83\u4f1a\u76f4\u63a5\u6253\u5370\u53d8\u91cf\u7684\u503c\uff0c\u4e0d\u4f1a\u6dfb\u52a0\u4efb\u4f55\u989d\u5916\u7684\u6587\u672c\u3002\u4f8b\u5982\uff1a<\/p>\n<pre>- name: \u6253\u5370\u53d8\u91cf\r\n  debug:\r\n    var: my_variable<\/pre>\n<p>\u5728\u4e0a\u9762\u7684\u793a\u4f8b\u4e2d\uff0c`my_variable`\u662f\u8981\u6253\u5370\u7684\u53d8\u91cf\u540d\u79f0\uff0c\u4f7f\u7528`var`\u53c2\u6570\u53ef\u4ee5\u76f4\u63a5\u6253\u5370\u53d8\u91cf\u7684\u503c\u3002<\/p>\n<p>&#8211; `msg`\u53c2\u6570\u7528\u4e8e\u6253\u5370\u6d88\u606f\uff0c\u5e76\u53ef\u4ee5\u5728\u6d88\u606f\u4e2d\u5f15\u7528\u53d8\u91cf\u7684\u503c\u3002\u5b83\u53ef\u4ee5\u6dfb\u52a0\u989d\u5916\u7684\u6587\u672c\uff0c\u5e76\u4f7f\u7528`{{ }}`\u8bed\u6cd5\u6765\u5f15\u7528\u53d8\u91cf\u7684\u503c\u3002\u4f8b\u5982\uff1a<\/p>\n<pre>- name: \u6253\u5370\u53d8\u91cf\r\n  debug:\r\n    msg: \"\u53d8\u91cf\u7684\u503c\u662f {{ my_variable }}\"<\/pre>\n<p>\u5728\u4e0a\u9762\u7684\u793a\u4f8b\u4e2d\uff0c\u4f7f\u7528`msg`\u53c2\u6570\u53ef\u4ee5\u5728\u6253\u5370\u65f6\u6dfb\u52a0\u4e00\u4e9b\u989d\u5916\u7684\u6587\u672c\uff0c\u5e76\u4f7f\u7528`{{ }}`\u8bed\u6cd5\u6765\u5f15\u7528\u53d8\u91cf\u7684\u503c\u3002<\/p>\n<p>\u603b\u7ed3\u6765\u8bf4\uff0c`var`\u53c2\u6570\u7528\u4e8e\u76f4\u63a5\u6253\u5370\u53d8\u91cf\u7684\u503c\uff0c\u800c`msg`\u53c2\u6570\u7528\u4e8e\u6253\u5370\u6d88\u606f\u5e76\u5f15\u7528\u53d8\u91cf\u7684\u503c\u3002\u60a8\u53ef\u4ee5\u6839\u636e\u9700\u8981\u9009\u62e9\u4f7f\u7528`var`\u6216`msg`\u53c2\u6570\u6765\u6253\u5370\u53d8\u91cf\u7684\u503c\u3002\u5982\u679c\u53ea\u9700\u8981\u6253\u5370\u53d8\u91cf\u7684\u503c\uff0c\u90a3\u4e48\u4f7f\u7528`var`\u53c2\u6570\u66f4\u7b80\u6d01\u3002\u5982\u679c\u9700\u8981\u5728\u6253\u5370\u65f6\u6dfb\u52a0\u4e00\u4e9b\u989d\u5916\u7684\u6587\u672c\uff0c\u5e76\u5f15\u7528\u53d8\u91cf\u7684\u503c\uff0c\u90a3\u4e48\u4f7f\u7528`msg`\u53c2\u6570\u66f4\u7075\u6d3b\u3002<\/p>\n<h4>\u5267\u672c<\/h4>\n<pre>[root@ansible \/server\/playbook]$ cat 07register.yml \r\n---\r\n- hosts: al\r\n  tasks:\r\n  - name: ip addr\r\n    shell: ip a<\/pre>\n<pre>[root@ansible \/server\/playbook]$ ansible-playbook 07register.yml -C\r\n\r\nPLAY [al] *********************************************************************************************************************\r\n\r\nTASK [Gathering Facts] ********************************************************************************************************\r\nok: [172.16.1.78]\r\n\r\nTASK [ip addr] ****************************************************************************************************************\r\nskipping: [172.16.1.78]\r\n\r\nPLAY RECAP ********************************************************************************************************************\r\n172.16.1.78 : ok=1 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0<\/pre>\n<h4>\u6dfb\u52a0register<\/h4>\n<pre>[root@ansible \/server\/playbook]$ cat 07register.yml \r\n---\r\n- hosts: al\r\n  tasks:\r\n  - name: ip addr\r\n    shell:  hostname -I\r\n    register: ip_addr\r\n  - name: echo\r\n    debug: \r\n      msg: \"you ip address is {{ ip_addr }}\"<\/pre>\n<pre>[root@ansible \/server\/playbook]$ ansible-playbook 07register.yml\r\n\r\nPLAY [al] *********************************************************************************************************************\r\n\r\nTASK [Gathering Facts] ********************************************************************************************************\r\nok: [172.16.1.78]\r\n\r\nTASK [ip addr] ****************************************************************************************************************\r\nchanged: [172.16.1.78]\r\n\r\nTASK [echo] *******************************************************************************************************************\r\nok: [172.16.1.78] =&gt; {\r\n\"msg\": \"you ip address is {'stderr_lines': [], u'changed': True, u'end': u'2023-08-07 11:28:13.526129', 'failed': False, u'stdout': u'10.0.0.78 172.16.1.78 ', u'cmd': u'hostname -I', u'rc': 0, u'start': u'2023-08-07 11:28:13.518866', u'stderr': u'', u'delta': u'0:00:00.007263', 'stdout_lines': [u'10.0.0.78 172.16.1.78 ']}\"\r\n}\r\n\r\nPLAY RECAP ********************************************************************************************************************\r\n172.16.1.78 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0\r\n\r\n{'stderr_lines': [], u'changed': True, u'end': u'2023-08-07 11:28:13.526129', 'failed': False, u\r\n'stdout': u'10.0.0.78 172.16.1.78 ', u'cmd': u'hostname -I', u\r\n'rc': 0, u'start': u'2023-08-07 11:28:13.518866', u\r\n'stderr': u'', u'delta': u'0:00:00.007263', \r\n'stdout_lines': [u'10.0.0.78 172.16.1.78 ']}\"\r\n}<\/pre>\n<p>\u53d8\u91cf\u53eb\u505aip_addr<br \/>\nip_addr.stdout_lines\uff1a\u53d6\u51faip<br \/>\nip_addr.rc\uff1a\u8fd4\u56de\u503c return code $?<br \/>\nip_addr.stdout\uff1a\u6807\u51c6\u8f93\u51fa, \u5c4f\u5e55\u4e0a\u9762\u7684\u8f93\u51fa<br \/>\nip_addr.stderr\uff1a\u6807\u51c6\u9519\u8bef\u8f93\u51fa,\u9519\u8bef\u4fe1\u606f<\/p>\n<h1>6.facts\u53d8\u91cf<\/h1>\n<p>Ansible facts\u53d8\u91cf\u662f\u4e00\u7ec4\u5173\u4e8e\u8fdc\u7a0b\u4e3b\u673a\u7684\u4e8b\u5b9e\u4fe1\u606f\uff0c\u5305\u62ec\u4e3b\u673a\u540d\u3001\u64cd\u4f5c\u7cfb\u7edf\u3001\u7f51\u7edc\u63a5\u53e3\u3001\u5185\u5b58\u3001CPU\u7b49\u3002\u8fd9\u4e9b\u4fe1\u606f\u5728Ansible\u7684\u6267\u884c\u8fc7\u7a0b\u4e2d\u81ea\u52a8\u6536\u96c6\u5e76\u5b58\u50a8\u5728`ansible_facts`\u53d8\u91cf\u4e2d\u3002<\/p>\n<p>\u4ee5\u4e0b\u662f\u4e00\u4e9b\u5e38\u7528\u7684Ansible facts\u53d8\u91cf\uff1a<\/p>\n<p>`ansible_facts[&#8216;ansible_hostname&#8217;]`\uff1a\u8fdc\u7a0b\u4e3b\u673a\u7684\u4e3b\u673a\u540d\u3002<br \/>\n`ansible_facts[&#8216;ansible_default_ipv4&#8217;]`\uff1a\u8fdc\u7a0b\u4e3b\u673a\u7684\u9ed8\u8ba4IPv4\u5730\u5740\u4fe1\u606f\u3002<br \/>\n`ansible_facts[&#8216;ansible_default_ipv6&#8217;]`\uff1a\u8fdc\u7a0b\u4e3b\u673a\u7684\u9ed8\u8ba4IPv6\u5730\u5740\u4fe1\u606f\u3002<br \/>\n`ansible_facts[&#8216;ansible_distribution&#8217;]`\uff1a\u8fdc\u7a0b\u4e3b\u673a\u7684\u64cd\u4f5c\u7cfb\u7edf\u53d1\u884c\u7248\u540d\u79f0\u3002<br \/>\n`ansible_facts[&#8216;ansible_distribution_version&#8217;]`\uff1a\u8fdc\u7a0b\u4e3b\u673a\u7684\u64cd\u4f5c\u7cfb\u7edf\u53d1\u884c\u7248\u7248\u672c\u3002<br \/>\n`ansible_facts[&#8216;ansible_distribution_release&#8217;]`\uff1a\u8fdc\u7a0b\u4e3b\u673a\u7684\u64cd\u4f5c\u7cfb\u7edf\u53d1\u884c\u7248\u53d1\u5e03\u53f7\u3002<br \/>\n`ansible_facts[&#8216;ansible_architecture&#8217;]`\uff1a\u8fdc\u7a0b\u4e3b\u673a\u7684\u67b6\u6784\uff08\u6bd4\u5982x86_64\uff09\u3002<br \/>\n`ansible_facts[&#8216;ansible_memtotal_mb&#8217;]`\uff1a\u8fdc\u7a0b\u4e3b\u673a\u7684\u603b\u5185\u5b58\u5927\u5c0f\uff08\u4ee5MB\u4e3a\u5355\u4f4d\uff09\u3002<br \/>\n`ansible_facts[&#8216;ansible_processor_vcpus&#8217;]`\uff1a\u8fdc\u7a0b\u4e3b\u673a\u7684CPU\u6838\u5fc3\u6570\u3002<br \/>\n`ansible_facts[&#8216;ansible_interfaces&#8217;]`\uff1a\u8fdc\u7a0b\u4e3b\u673a\u7684\u7f51\u7edc\u63a5\u53e3\u5217\u8868\u3002<\/p>\n<p>\u53ef\u4ee5\u4f7f\u7528`debug`\u6a21\u5757\u6765\u8f93\u51fa\u8fd9\u4e9bfacts\u53d8\u91cf\uff0c\u4f8b\u5982\uff1a<\/p>\n<pre>- name: \u8f93\u51fa\u8fdc\u7a0b\u4e3b\u673a\u4fe1\u606f\r\n\u00a0 debug:\r\n  \u00a0 msg: \"\u4e3b\u673a\u540d: {{ ansible_facts['ansible_hostname'] }}, IP\u5730\u5740: {{ ansible_facts['ansible_default_ipv4']['address'] }}, \u64cd\u4f5c\u7cfb\u7edf: {{ ansible_facts['ansible_distribution'] }}\"\r\n\r\n<\/pre>\n<p>\u5728\u8fd9\u4e2a\u793a\u4f8b\u4e2d\uff0c\u4f7f\u7528\u4e86`ansible_facts`\u53d8\u91cf\u6765\u8f93\u51fa\u8fdc\u7a0b\u4e3b\u673a\u7684\u4e3b\u673a\u540d\u3001IP\u5730\u5740\u548c\u64cd\u4f5c\u7cfb\u7edf\u4fe1\u606f\u3002\u53ef\u4ee5\u6839\u636e\u9700\u8981\u5f15\u7528\u5176\u4ed6\u7684facts\u53d8\u91cf\u6765\u8f93\u51fa\u66f4\u591a\u7684\u4fe1\u606f\u3002<\/p>\n<p>\u53ef\u4ee5\u901a\u8fc7`ansible -m setup &lt;hostname&gt;`\u547d\u4ee4\u6765\u67e5\u770b\u8fdc\u7a0b\u4e3b\u673a\u7684\u6240\u6709facts\u53d8\u91cf\u3002\u4e5f\u53ef\u4ee5\u901a\u8fc7`ansible_facts`\u53d8\u91cf\u5728Playbook\u4e2d\u4f7f\u7528\u8fd9\u4e9b\u4fe1\u606f\u3002<\/p>\n<h2>facts\u4f7f\u7528\u573a\u666f<\/h2>\n<p>Ansible facts\u53d8\u91cf\u53ef\u4ee5\u5728Ansible\u7684Playbook\u4e2d\u4f7f\u7528\uff0c\u7528\u4e8e\u6839\u636e\u8fdc\u7a0b\u4e3b\u673a\u7684\u4e8b\u5b9e\u4fe1\u606f\u6765\u6267\u884c\u4e0d\u540c\u7684\u4efb\u52a1\u6216\u51b3\u7b56\u3002\u4ee5\u4e0b\u662f\u4e00\u4e9b\u5e38\u89c1\u7684\u4f7f\u7528\u573a\u666f\uff1a<\/p>\n<p>\u6761\u4ef6\u5224\u65ad\uff1a\u53ef\u4ee5\u4f7f\u7528facts\u53d8\u91cf\u6765\u5224\u65ad\u8fdc\u7a0b\u4e3b\u673a\u7684\u64cd\u4f5c\u7cfb\u7edf\u7c7b\u578b\u3001\u7248\u672c\u3001\u67b6\u6784\u7b49\u4fe1\u606f\uff0c\u4ece\u800c\u6839\u636e\u4e0d\u540c\u7684\u6761\u4ef6\u6267\u884c\u4e0d\u540c\u7684\u4efb\u52a1\u6216\u914d\u7f6e\u3002<\/p>\n<p>\u4e3b\u673a\u8fc7\u6ee4\uff1a\u53ef\u4ee5\u4f7f\u7528facts\u53d8\u91cf\u6765\u8fc7\u6ee4\u4e3b\u673a\uff0c\u53ea\u5bf9\u7279\u5b9a\u7684\u64cd\u4f5c\u7cfb\u7edf\u3001\u67b6\u6784\u6216\u5176\u4ed6\u7279\u5f81\u7684\u4e3b\u673a\u6267\u884c\u4efb\u52a1\u3002<\/p>\n<p>\u53d8\u91cf\u8d4b\u503c\uff1a\u53ef\u4ee5\u4f7f\u7528facts\u53d8\u91cf\u6765\u83b7\u53d6\u8fdc\u7a0b\u4e3b\u673a\u7684\u4fe1\u606f\uff0c\u5e76\u5c06\u5176\u8d4b\u503c\u7ed9\u81ea\u5b9a\u4e49\u53d8\u91cf\uff0c\u4ee5\u4fbf\u5728\u540e\u7eed\u7684\u4efb\u52a1\u4e2d\u4f7f\u7528\u3002<\/p>\n<p>\u6a21\u677f\u6e32\u67d3\uff1a\u53ef\u4ee5\u4f7f\u7528facts\u53d8\u91cf\u6765\u586b\u5145\u6a21\u677f\u6587\u4ef6\uff0c\u751f\u6210\u57fa\u4e8e\u8fdc\u7a0b\u4e3b\u673a\u4fe1\u606f\u7684\u914d\u7f6e\u6587\u4ef6\u3002<\/p>\n<p>\u8f93\u51fa\u62a5\u544a\uff1a\u53ef\u4ee5\u4f7f\u7528facts\u53d8\u91cf\u6765\u751f\u6210\u5173\u4e8e\u8fdc\u7a0b\u4e3b\u673a\u7684\u62a5\u544a\uff0c\u5305\u62ec\u4e3b\u673a\u540d\u3001\u64cd\u4f5c\u7cfb\u7edf\u3001\u5185\u5b58\u3001CPU\u7b49\u4fe1\u606f\u3002<\/p>\n<p>\u81ea\u52a8\u5316\u51b3\u7b56\uff1a\u53ef\u4ee5\u4f7f\u7528facts\u53d8\u91cf\u6765\u81ea\u52a8\u51b3\u7b56\uff0c\u6bd4\u5982\u6839\u636e\u4e3b\u673a\u7684\u5185\u5b58\u5927\u5c0f\u9009\u62e9\u5408\u9002\u7684\u5e94\u7528\u90e8\u7f72\u65b9\u6848\u3002<\/p>\n<p>\u9700\u8981\u6ce8\u610f\u7684\u662f\uff0cAnsible\u4f1a\u5728\u6267\u884cPlaybook\u7684\u8fc7\u7a0b\u4e2d\u81ea\u52a8\u6536\u96c6\u8fdc\u7a0b\u4e3b\u673a\u7684facts\u4fe1\u606f\uff0c\u65e0\u9700\u989d\u5916\u7684\u914d\u7f6e\u3002\u53ef\u4ee5\u901a\u8fc7`ansible_facts`\u53d8\u91cf\u6765\u8bbf\u95ee\u8fd9\u4e9b\u4fe1\u606f\u3002\u53ef\u4ee5\u4f7f\u7528`setup`\u6a21\u5757\u6216`ansible -m setup &lt;hostname&gt;`\u547d\u4ee4\u6765\u67e5\u770b\u8fdc\u7a0b\u4e3b\u673a\u7684\u6240\u6709facts\u53d8\u91cf\u3002<\/p>\n<p>\u5728Playbook\u4e2d\u4f7f\u7528facts\u53d8\u91cf\u65f6\uff0c\u53ef\u4ee5\u4f7f\u7528`when`\u6761\u4ef6\u8bed\u53e5\u3001`inventory_hostname`\u53d8\u91cf\u3001`ansible_facts`\u53d8\u91cf\u7b49\u6765\u6839\u636e\u9700\u8981\u8fdb\u884c\u5224\u65ad\u548c\u5f15\u7528\u3002<\/p>\n<h4>\u663e\u793a\u6240\u6709 ansible facts<\/h4>\n<pre>[root@ansible \/server\/playbook]$ ansible 172.16.1.78 -m setup\r\n172.16.1.78 | SUCCESS =&gt; {\r\n\"ansible_facts\": {\r\n\"ansible_all_ipv4_addresses\": [\r\n\"172.16.1.78\", \r\n\"10.0.0.78\"\r\n], \r\n\"ansible_all_ipv6_addresses\": [\r\n\"fe80::250:56ff:fe24:6451\", \r\n\"fe80::250:56ff:fe37:3f8e\"\r\n], \r\n\"ansible_apparmor\": {\r\n\"status\": \"disabled\"\r\n}, \r\n\"ansible_architecture\": \"x86_64\", \r\n\"ansible_bios_date\": \"07\/22\/2020\", \r\n\"ansible_bios_version\": \"6.00\", \r\n\"ansible_cmdline\": {\r\n\"BOOT_IMAGE\": \"\/vmlinuz-3.10.0-1127.el7.x86_64\", \r\n\"LANG\": \"en_US.UTF-8\", \r\n\"biosdevname\": \"0\", \r\n\"crashkernel\": \"auto\", \r\n\"net.ifnames\": \"0\", \r\n\"quiet\": true, \r\n\"rd.lvm.lv\": \"centos\/swap\", \r\n\"rhgb\": true, \r\n\"ro\": true, \r\n\"root\": \"\/dev\/mapper\/centos-root\", \r\n\"spectre_v2\": \"retpoline\"\r\n}, \r\n\"ansible_date_time\": {\r\n\"date\": \"2023-08-08\", \r\n\"day\": \"08\", \r\n\"epoch\": \"1691459623\", \r\n\"hour\": \"09\", \r\n\"iso8601\": \"2023-08-08T01:53:43Z\", \r\n\"iso8601_basic\": \"20230808T095343763132\", \r\n\"iso8601_basic_short\": \"20230808T095343\", \r\n\"iso8601_micro\": \"2023-08-08T01:53:43.763132Z\", \r\n\"minute\": \"53\", \r\n\"month\": \"08\", \r\n\"second\": \"43\", \r\n\"time\": \"09:53:43\", \r\n\"tz\": \"CST\", \r\n\"tz_offset\": \"+0800\", \r\n\"weekday\": \"Tuesday\", \r\n\"weekday_number\": \"2\", \r\n\"weeknumber\": \"32\", \r\n\"year\": \"2023\"\r\n}, \r\n\"ansible_default_ipv4\": {\r\n\"address\": \"10.0.0.78\", \r\n\"alias\": \"eth0\", \r\n\"broadcast\": \"10.0.0.255\", \r\n\"gateway\": \"10.0.0.2\", \r\n\"interface\": \"eth0\", \r\n\"macaddress\": \"00:50:56:37:3f:8e\", \r\n\"mtu\": 1500, \r\n\"netmask\": \"255.255.255.0\", \r\n\"network\": \"10.0.0.0\", \r\n\"type\": \"ether\"\r\n}, \r\n\"ansible_default_ipv6\": {}, \r\n\"ansible_device_links\": {\r\n\"ids\": {\r\n\"dm-0\": [\r\n\"dm-name-centos-root\", \r\n\"dm-uuid-LVM-HCWQlQaQFPWs1ZP4DVzZQfW8WAdjrLeRsaQOYbw38OrY1dvyYpNu60NRH0jVwKKJ\"\r\n], \r\n\"dm-1\": [\r\n\"dm-name-centos-swap\", \r\n\"dm-uuid-LVM-HCWQlQaQFPWs1ZP4DVzZQfW8WAdjrLeRZSfFcq2KXnOFcZjbCGb4X2A5eCicqnTO\"\r\n], \r\n\"sda2\": [\r\n\"lvm-pv-uuid-cvNneq-NfnO-kCvx-3FVD-vYST-cIAw-fvUcXc\"\r\n], \r\n\"sr0\": [\r\n\"ata-VMware_Virtual_IDE_CDROM_Drive_10000000000000000001\"\r\n]\r\n}, \r\n\"labels\": {\r\n\"sr0\": [\r\n\"CentOS\\\\x207\\\\x20x86_64\"\r\n]\r\n}, \r\n\"masters\": {\r\n\"sda2\": [\r\n\"dm-0\", \r\n\"dm-1\"\r\n]\r\n}, \r\n\"uuids\": {\r\n\"dm-0\": [\r\n\"1cfd0a4f-a5e3-40ba-bbfe-289e8fd0b694\"\r\n], \r\n\"dm-1\": [\r\n\"aaa043bb-aa90-4fd6-9cc8-f7948a830954\"\r\n], \r\n\"sda1\": [\r\n\"17e70c68-1201-4286-a802-61b85fa09c5b\"\r\n], \r\n\"sr0\": [\r\n\"2020-04-22-00-54-00-00\"\r\n]\r\n}\r\n}, \r\n\"ansible_devices\": {\r\n\"dm-0\": {\r\n\"holders\": [], \r\n\"host\": \"\", \r\n\"links\": {\r\n\"ids\": [\r\n\"dm-name-centos-root\", \r\n\"dm-uuid-LVM-HCWQlQaQFPWs1ZP4DVzZQfW8WAdjrLeRsaQOYbw38OrY1dvyYpNu60NRH0jVwKKJ\"\r\n], \r\n\"labels\": [], \r\n\"masters\": [], \r\n\"uuids\": [\r\n\"1cfd0a4f-a5e3-40ba-bbfe-289e8fd0b694\"\r\n]\r\n}, \r\n\"model\": null, \r\n\"partitions\": {}, \r\n\"removable\": \"0\", \r\n\"rotational\": \"1\", \r\n\"sas_address\": null, \r\n\"sas_device_handle\": null, \r\n\"scheduler_mode\": \"\", \r\n\"sectors\": \"98549760\", \r\n\"sectorsize\": \"512\", \r\n\"size\": \"46.99 GB\", \r\n\"support_discard\": \"0\", \r\n\"vendor\": null, \r\n\"virtual\": 1\r\n}, \r\n\"dm-1\": {\r\n\"holders\": [], \r\n\"host\": \"\", \r\n\"links\": {\r\n\"ids\": [\r\n\"dm-name-centos-swap\", \r\n\"dm-uuid-LVM-HCWQlQaQFPWs1ZP4DVzZQfW8WAdjrLeRZSfFcq2KXnOFcZjbCGb4X2A5eCicqnTO\"\r\n], \r\n\"labels\": [], \r\n\"masters\": [], \r\n\"uuids\": [\r\n\"aaa043bb-aa90-4fd6-9cc8-f7948a830954\"\r\n]\r\n}, \r\n\"model\": null, \r\n\"partitions\": {}, \r\n\"removable\": \"0\", \r\n\"rotational\": \"1\", \r\n\"sas_address\": null, \r\n\"sas_device_handle\": null, \r\n\"scheduler_mode\": \"\", \r\n\"sectors\": \"4194304\", \r\n\"sectorsize\": \"512\", \r\n\"size\": \"2.00 GB\", \r\n\"support_discard\": \"0\", \r\n\"vendor\": null, \r\n\"virtual\": 1\r\n}, \r\n\"sda\": {\r\n\"holders\": [], \r\n\"host\": \"SCSI storage controller: Broadcom \/ LSI 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (rev 01)\", \r\n\"links\": {\r\n\"ids\": [], \r\n\"labels\": [], \r\n\"masters\": [], \r\n\"uuids\": []\r\n}, \r\n\"model\": \"VMware Virtual S\", \r\n\"partitions\": {\r\n\"sda1\": {\r\n\"holders\": [], \r\n\"links\": {\r\n\"ids\": [], \r\n\"labels\": [], \r\n\"masters\": [], \r\n\"uuids\": [\r\n\"17e70c68-1201-4286-a802-61b85fa09c5b\"\r\n]\r\n}, \r\n\"sectors\": \"2097152\", \r\n\"sectorsize\": 512, \r\n\"size\": \"1.00 GB\", \r\n\"start\": \"2048\", \r\n\"uuid\": \"17e70c68-1201-4286-a802-61b85fa09c5b\"\r\n}, \r\n\"sda2\": {\r\n\"holders\": [\r\n\"centos-root\", \r\n\"centos-swap\"\r\n], \r\n\"links\": {\r\n\"ids\": [\r\n\"lvm-pv-uuid-cvNneq-NfnO-kCvx-3FVD-vYST-cIAw-fvUcXc\"\r\n], \r\n\"labels\": [], \r\n\"masters\": [\r\n\"dm-0\", \r\n\"dm-1\"\r\n], \r\n\"uuids\": []\r\n}, \r\n\"sectors\": \"102758400\", \r\n\"sectorsize\": 512, \r\n\"size\": \"49.00 GB\", \r\n\"start\": \"2099200\", \r\n\"uuid\": null\r\n}\r\n}, \r\n\"removable\": \"0\", \r\n\"rotational\": \"1\", \r\n\"sas_address\": null, \r\n\"sas_device_handle\": null, \r\n\"scheduler_mode\": \"deadline\", \r\n\"sectors\": \"104857600\", \r\n\"sectorsize\": \"512\", \r\n\"size\": \"50.00 GB\", \r\n\"support_discard\": \"0\", \r\n\"vendor\": \"VMware,\", \r\n\"virtual\": 1\r\n}, \r\n\"sr0\": {\r\n\"holders\": [], \r\n\"host\": \"IDE interface: Intel Corporation 82371AB\/EB\/MB PIIX4 IDE (rev 01)\", \r\n\"links\": {\r\n\"ids\": [\r\n\"ata-VMware_Virtual_IDE_CDROM_Drive_10000000000000000001\"\r\n], \r\n\"labels\": [\r\n\"CentOS\\\\x207\\\\x20x86_64\"\r\n], \r\n\"masters\": [], \r\n\"uuids\": [\r\n\"2020-04-22-00-54-00-00\"\r\n]\r\n}, \r\n\"model\": \"VMware IDE CDR10\", \r\n\"partitions\": {}, \r\n\"removable\": \"1\", \r\n\"rotational\": \"1\", \r\n\"sas_address\": null, \r\n\"sas_device_handle\": null, \r\n\"scheduler_mode\": \"deadline\", \r\n\"sectors\": \"9338880\", \r\n\"sectorsize\": \"2048\", \r\n\"size\": \"4.45 GB\", \r\n\"support_discard\": \"0\", \r\n\"vendor\": \"NECVMWar\", \r\n\"virtual\": 1\r\n}\r\n}, \r\n\"ansible_distribution\": \"CentOS\", \r\n\"ansible_distribution_file_parsed\": true, \r\n\"ansible_distribution_file_path\": \"\/etc\/redhat-release\", \r\n\"ansible_distribution_file_variety\": \"RedHat\", \r\n\"ansible_distribution_major_version\": \"7\", \r\n\"ansible_distribution_release\": \"Core\", \r\n\"ansible_distribution_version\": \"7.8\", \r\n\"ansible_dns\": {\r\n\"nameservers\": [\r\n\"223.5.5.5\"\r\n]\r\n}, \r\n\"ansible_domain\": \"\", \r\n\"ansible_effective_group_id\": 0, \r\n\"ansible_effective_user_id\": 0, \r\n\"ansible_env\": {\r\n\"HOME\": \"\/root\", \r\n\"LANG\": \"en_US.UTF-8\", \r\n\"LESSOPEN\": \"||\/usr\/bin\/lesspipe.sh %s\", \r\n\"LOGNAME\": \"root\", \r\n\"LS_COLORS\": \"rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:\", \r\n\"MAIL\": \"\/var\/mail\/root\", \r\n\"PATH\": \"\/usr\/local\/sbin:\/usr\/local\/bin:\/usr\/sbin:\/usr\/bin\", \r\n\"PWD\": \"\/root\", \r\n\"SHELL\": \"\/bin\/bash\", \r\n\"SHLVL\": \"2\", \r\n\"SSH_CLIENT\": \"172.16.1.5 33896 22\", \r\n\"SSH_CONNECTION\": \"172.16.1.5 33896 172.16.1.78 22\", \r\n\"SSH_TTY\": \"\/dev\/pts\/1\", \r\n\"TERM\": \"linux\", \r\n\"USER\": \"root\", \r\n\"XDG_RUNTIME_DIR\": \"\/run\/user\/0\", \r\n\"XDG_SESSION_ID\": \"5310\", \r\n\"_\": \"\/usr\/bin\/python\"\r\n}, \r\n\"ansible_eth0\": {\r\n\"active\": true, \r\n\"device\": \"eth0\", \r\n\"features\": {\r\n\"busy_poll\": \"off [fixed]\", \r\n\"fcoe_mtu\": \"off [fixed]\", \r\n\"generic_receive_offload\": \"on\", \r\n\"generic_segmentation_offload\": \"on\", \r\n\"highdma\": \"off [fixed]\", \r\n\"hw_tc_offload\": \"off [fixed]\", \r\n\"l2_fwd_offload\": \"off [fixed]\", \r\n\"large_receive_offload\": \"off [fixed]\", \r\n\"loopback\": \"off [fixed]\", \r\n\"netns_local\": \"off [fixed]\", \r\n\"ntuple_filters\": \"off [fixed]\", \r\n\"receive_hashing\": \"off [fixed]\", \r\n\"rx_all\": \"off\", \r\n\"rx_checksumming\": \"off\", \r\n\"rx_fcs\": \"off\", \r\n\"rx_gro_hw\": \"off [fixed]\", \r\n\"rx_udp_tunnel_port_offload\": \"off [fixed]\", \r\n\"rx_vlan_filter\": \"on [fixed]\", \r\n\"rx_vlan_offload\": \"on\", \r\n\"rx_vlan_stag_filter\": \"off [fixed]\", \r\n\"rx_vlan_stag_hw_parse\": \"off [fixed]\", \r\n\"scatter_gather\": \"on\", \r\n\"tcp_segmentation_offload\": \"on\", \r\n\"tx_checksum_fcoe_crc\": \"off [fixed]\", \r\n\"tx_checksum_ip_generic\": \"on\", \r\n\"tx_checksum_ipv4\": \"off [fixed]\", \r\n\"tx_checksum_ipv6\": \"off [fixed]\", \r\n\"tx_checksum_sctp\": \"off [fixed]\", \r\n\"tx_checksumming\": \"on\", \r\n\"tx_fcoe_segmentation\": \"off [fixed]\", \r\n\"tx_gre_csum_segmentation\": \"off [fixed]\", \r\n\"tx_gre_segmentation\": \"off [fixed]\", \r\n\"tx_gso_partial\": \"off [fixed]\", \r\n\"tx_gso_robust\": \"off [fixed]\", \r\n\"tx_ipip_segmentation\": \"off [fixed]\", \r\n\"tx_lockless\": \"off [fixed]\", \r\n\"tx_nocache_copy\": \"off\", \r\n\"tx_scatter_gather\": \"on\", \r\n\"tx_scatter_gather_fraglist\": \"off [fixed]\", \r\n\"tx_sctp_segmentation\": \"off [fixed]\", \r\n\"tx_sit_segmentation\": \"off [fixed]\", \r\n\"tx_tcp6_segmentation\": \"off [fixed]\", \r\n\"tx_tcp_ecn_segmentation\": \"off [fixed]\", \r\n\"tx_tcp_mangleid_segmentation\": \"off\", \r\n\"tx_tcp_segmentation\": \"on\", \r\n\"tx_udp_tnl_csum_segmentation\": \"off [fixed]\", \r\n\"tx_udp_tnl_segmentation\": \"off [fixed]\", \r\n\"tx_vlan_offload\": \"on [fixed]\", \r\n\"tx_vlan_stag_hw_insert\": \"off [fixed]\", \r\n\"udp_fragmentation_offload\": \"off [fixed]\", \r\n\"vlan_challenged\": \"off [fixed]\"\r\n}, \r\n\"hw_timestamp_filters\": [], \r\n\"ipv4\": {\r\n\"address\": \"10.0.0.78\", \r\n\"broadcast\": \"10.0.0.255\", \r\n\"netmask\": \"255.255.255.0\", \r\n\"network\": \"10.0.0.0\"\r\n}, \r\n\"ipv6\": [\r\n{\r\n\"address\": \"fe80::250:56ff:fe37:3f8e\", \r\n\"prefix\": \"64\", \r\n\"scope\": \"link\"\r\n}\r\n], \r\n\"macaddress\": \"00:50:56:37:3f:8e\", \r\n\"module\": \"e1000\", \r\n\"mtu\": 1500, \r\n\"pciid\": \"0000:02:01.0\", \r\n\"promisc\": false, \r\n\"speed\": 1000, \r\n\"timestamping\": [\r\n\"tx_software\", \r\n\"rx_software\", \r\n\"software\"\r\n], \r\n\"type\": \"ether\"\r\n}, \r\n\"ansible_eth1\": {\r\n\"active\": true, \r\n\"device\": \"eth1\", \r\n\"features\": {\r\n\"busy_poll\": \"off [fixed]\", \r\n\"fcoe_mtu\": \"off [fixed]\", \r\n\"generic_receive_offload\": \"on\", \r\n\"generic_segmentation_offload\": \"on\", \r\n\"highdma\": \"off [fixed]\", \r\n\"hw_tc_offload\": \"off [fixed]\", \r\n\"l2_fwd_offload\": \"off [fixed]\", \r\n\"large_receive_offload\": \"off [fixed]\", \r\n\"loopback\": \"off [fixed]\", \r\n\"netns_local\": \"off [fixed]\", \r\n\"ntuple_filters\": \"off [fixed]\", \r\n\"receive_hashing\": \"off [fixed]\", \r\n\"rx_all\": \"off\", \r\n\"rx_checksumming\": \"off\", \r\n\"rx_fcs\": \"off\", \r\n\"rx_gro_hw\": \"off [fixed]\", \r\n\"rx_udp_tunnel_port_offload\": \"off [fixed]\", \r\n\"rx_vlan_filter\": \"on [fixed]\", \r\n\"rx_vlan_offload\": \"on\", \r\n\"rx_vlan_stag_filter\": \"off [fixed]\", \r\n\"rx_vlan_stag_hw_parse\": \"off [fixed]\", \r\n\"scatter_gather\": \"on\", \r\n\"tcp_segmentation_offload\": \"on\", \r\n\"tx_checksum_fcoe_crc\": \"off [fixed]\", \r\n\"tx_checksum_ip_generic\": \"on\", \r\n\"tx_checksum_ipv4\": \"off [fixed]\", \r\n\"tx_checksum_ipv6\": \"off [fixed]\", \r\n\"tx_checksum_sctp\": \"off [fixed]\", \r\n\"tx_checksumming\": \"on\", \r\n\"tx_fcoe_segmentation\": \"off [fixed]\", \r\n\"tx_gre_csum_segmentation\": \"off [fixed]\", \r\n\"tx_gre_segmentation\": \"off [fixed]\", \r\n\"tx_gso_partial\": \"off [fixed]\", \r\n\"tx_gso_robust\": \"off [fixed]\", \r\n\"tx_ipip_segmentation\": \"off [fixed]\", \r\n\"tx_lockless\": \"off [fixed]\", \r\n\"tx_nocache_copy\": \"off\", \r\n\"tx_scatter_gather\": \"on\", \r\n\"tx_scatter_gather_fraglist\": \"off [fixed]\", \r\n\"tx_sctp_segmentation\": \"off [fixed]\", \r\n\"tx_sit_segmentation\": \"off [fixed]\", \r\n\"tx_tcp6_segmentation\": \"off [fixed]\", \r\n\"tx_tcp_ecn_segmentation\": \"off [fixed]\", \r\n\"tx_tcp_mangleid_segmentation\": \"off\", \r\n\"tx_tcp_segmentation\": \"on\", \r\n\"tx_udp_tnl_csum_segmentation\": \"off [fixed]\", \r\n\"tx_udp_tnl_segmentation\": \"off [fixed]\", \r\n\"tx_vlan_offload\": \"on [fixed]\", \r\n\"tx_vlan_stag_hw_insert\": \"off [fixed]\", \r\n\"udp_fragmentation_offload\": \"off [fixed]\", \r\n\"vlan_challenged\": \"off [fixed]\"\r\n}, \r\n\"hw_timestamp_filters\": [], \r\n\"ipv4\": {\r\n\"address\": \"172.16.1.78\", \r\n\"broadcast\": \"172.16.1.255\", \r\n\"netmask\": \"255.255.255.0\", \r\n\"network\": \"172.16.1.0\"\r\n}, \r\n\"ipv6\": [\r\n{\r\n\"address\": \"fe80::250:56ff:fe24:6451\", \r\n\"prefix\": \"64\", \r\n\"scope\": \"link\"\r\n}\r\n], \r\n\"macaddress\": \"00:50:56:24:64:51\", \r\n\"module\": \"e1000\", \r\n\"mtu\": 1500, \r\n\"pciid\": \"0000:02:02.0\", \r\n\"promisc\": false, \r\n\"speed\": 1000, \r\n\"timestamping\": [\r\n\"tx_software\", \r\n\"rx_software\", \r\n\"software\"\r\n], \r\n\"type\": \"ether\"\r\n}, \r\n\"ansible_fibre_channel_wwn\": [], \r\n\"ansible_fips\": false, \r\n\"ansible_form_factor\": \"Other\", \r\n\"ansible_fqdn\": \"all\", \r\n\"ansible_hostname\": \"all\", \r\n\"ansible_hostnqn\": \"\", \r\n\"ansible_interfaces\": [\r\n\"lo\", \r\n\"eth1\", \r\n\"eth0\"\r\n], \r\n\"ansible_is_chroot\": false, \r\n\"ansible_iscsi_iqn\": \"\", \r\n\"ansible_kernel\": \"3.10.0-1127.el7.x86_64\", \r\n\"ansible_kernel_version\": \"#1 SMP Tue Mar 31 23:36:51 UTC 2020\", \r\n\"ansible_lo\": {\r\n\"active\": true, \r\n\"device\": \"lo\", \r\n\"features\": {\r\n\"busy_poll\": \"off [fixed]\", \r\n\"fcoe_mtu\": \"off [fixed]\", \r\n\"generic_receive_offload\": \"on\", \r\n\"generic_segmentation_offload\": \"on\", \r\n\"highdma\": \"on [fixed]\", \r\n\"hw_tc_offload\": \"off [fixed]\", \r\n\"l2_fwd_offload\": \"off [fixed]\", \r\n\"large_receive_offload\": \"off [fixed]\", \r\n\"loopback\": \"on [fixed]\", \r\n\"netns_local\": \"on [fixed]\", \r\n\"ntuple_filters\": \"off [fixed]\", \r\n\"receive_hashing\": \"off [fixed]\", \r\n\"rx_all\": \"off [fixed]\", \r\n\"rx_checksumming\": \"on [fixed]\", \r\n\"rx_fcs\": \"off [fixed]\", \r\n\"rx_gro_hw\": \"off [fixed]\", \r\n\"rx_udp_tunnel_port_offload\": \"off [fixed]\", \r\n\"rx_vlan_filter\": \"off [fixed]\", \r\n\"rx_vlan_offload\": \"off [fixed]\", \r\n\"rx_vlan_stag_filter\": \"off [fixed]\", \r\n\"rx_vlan_stag_hw_parse\": \"off [fixed]\", \r\n\"scatter_gather\": \"on\", \r\n\"tcp_segmentation_offload\": \"on\", \r\n\"tx_checksum_fcoe_crc\": \"off [fixed]\", \r\n\"tx_checksum_ip_generic\": \"on [fixed]\", \r\n\"tx_checksum_ipv4\": \"off [fixed]\", \r\n\"tx_checksum_ipv6\": \"off [fixed]\", \r\n\"tx_checksum_sctp\": \"on [fixed]\", \r\n\"tx_checksumming\": \"on\", \r\n\"tx_fcoe_segmentation\": \"off [fixed]\", \r\n\"tx_gre_csum_segmentation\": \"off [fixed]\", \r\n\"tx_gre_segmentation\": \"off [fixed]\", \r\n\"tx_gso_partial\": \"off [fixed]\", \r\n\"tx_gso_robust\": \"off [fixed]\", \r\n\"tx_ipip_segmentation\": \"off [fixed]\", \r\n\"tx_lockless\": \"on [fixed]\", \r\n\"tx_nocache_copy\": \"off [fixed]\", \r\n\"tx_scatter_gather\": \"on [fixed]\", \r\n\"tx_scatter_gather_fraglist\": \"on [fixed]\", \r\n\"tx_sctp_segmentation\": \"on\", \r\n\"tx_sit_segmentation\": \"off [fixed]\", \r\n\"tx_tcp6_segmentation\": \"on\", \r\n\"tx_tcp_ecn_segmentation\": \"on\", \r\n\"tx_tcp_mangleid_segmentation\": \"on\", \r\n\"tx_tcp_segmentation\": \"on\", \r\n\"tx_udp_tnl_csum_segmentation\": \"off [fixed]\", \r\n\"tx_udp_tnl_segmentation\": \"off [fixed]\", \r\n\"tx_vlan_offload\": \"off [fixed]\", \r\n\"tx_vlan_stag_hw_insert\": \"off [fixed]\", \r\n\"udp_fragmentation_offload\": \"on\", \r\n\"vlan_challenged\": \"on [fixed]\"\r\n}, \r\n\"hw_timestamp_filters\": [], \r\n\"ipv4\": {\r\n\"address\": \"127.0.0.1\", \r\n\"broadcast\": \"\", \r\n\"netmask\": \"255.0.0.0\", \r\n\"network\": \"127.0.0.0\"\r\n}, \r\n\"ipv6\": [\r\n{\r\n\"address\": \"::1\", \r\n\"prefix\": \"128\", \r\n\"scope\": \"host\"\r\n}\r\n], \r\n\"mtu\": 65536, \r\n\"promisc\": false, \r\n\"timestamping\": [\r\n\"rx_software\", \r\n\"software\"\r\n], \r\n\"type\": \"loopback\"\r\n}, \r\n\"ansible_local\": {}, \r\n\"ansible_lsb\": {}, \r\n\"ansible_lvm\": {\r\n\"lvs\": {\r\n\"root\": {\r\n\"size_g\": \"46.99\", \r\n\"vg\": \"centos\"\r\n}, \r\n\"swap\": {\r\n\"size_g\": \"2.00\", \r\n\"vg\": \"centos\"\r\n}\r\n}, \r\n\"pvs\": {\r\n\"\/dev\/sda2\": {\r\n\"free_g\": \"0.00\", \r\n\"size_g\": \"49.00\", \r\n\"vg\": \"centos\"\r\n}\r\n}, \r\n\"vgs\": {\r\n\"centos\": {\r\n\"free_g\": \"0.00\", \r\n\"num_lvs\": \"2\", \r\n\"num_pvs\": \"1\", \r\n\"size_g\": \"49.00\"\r\n}\r\n}\r\n}, \r\n\"ansible_machine\": \"x86_64\", \r\n\"ansible_machine_id\": \"5e918c2ff6934327a06c0471021125c2\", \r\n\"ansible_memfree_mb\": 1491, \r\n\"ansible_memory_mb\": {\r\n\"nocache\": {\r\n\"free\": 1649, \r\n\"used\": 170\r\n}, \r\n\"real\": {\r\n\"free\": 1491, \r\n\"total\": 1819, \r\n\"used\": 328\r\n}, \r\n\"swap\": {\r\n\"cached\": 0, \r\n\"free\": 2047, \r\n\"total\": 2047, \r\n\"used\": 0\r\n}\r\n}, \r\n\"ansible_memtotal_mb\": 1819, \r\n\"ansible_mounts\": [\r\n{\r\n\"block_available\": 184206, \r\n\"block_size\": 262144, \r\n\"block_total\": 192387, \r\n\"block_used\": 8181, \r\n\"device\": \"172.16.1.78:\/data-nfs\", \r\n\"fstype\": \"nfs4\", \r\n\"inode_available\": 24574787, \r\n\"inode_total\": 24637440, \r\n\"inode_used\": 62653, \r\n\"mount\": \"\/tmp\", \r\n\"options\": \"rw,relatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=172.16.1.78,local_lock=none,addr=172.16.1.78\", \r\n\"size_available\": 48288497664, \r\n\"size_total\": 50433097728, \r\n\"uuid\": \"N\/A\"\r\n}, \r\n{\r\n\"block_available\": 221106, \r\n\"block_size\": 4096, \r\n\"block_total\": 259584, \r\n\"block_used\": 38478, \r\n\"device\": \"\/dev\/sda1\", \r\n\"fstype\": \"xfs\", \r\n\"inode_available\": 523961, \r\n\"inode_total\": 524288, \r\n\"inode_used\": 327, \r\n\"mount\": \"\/boot\", \r\n\"options\": \"rw,relatime,attr2,inode64,noquota\", \r\n\"size_available\": 905650176, \r\n\"size_total\": 1063256064, \r\n\"uuid\": \"17e70c68-1201-4286-a802-61b85fa09c5b\"\r\n}, \r\n{\r\n\"block_available\": 184206, \r\n\"block_size\": 262144, \r\n\"block_total\": 192387, \r\n\"block_used\": 8181, \r\n\"device\": \"172.16.1.78:\/data-nfs\", \r\n\"fstype\": \"nfs4\", \r\n\"inode_available\": 24574787, \r\n\"inode_total\": 24637440, \r\n\"inode_used\": 62653, \r\n\"mount\": \"\/mnt\", \r\n\"options\": \"rw,relatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=172.16.1.78,local_lock=none,addr=172.16.1.78\", \r\n\"size_available\": 48288497664, \r\n\"size_total\": 50433097728, \r\n\"uuid\": \"N\/A\"\r\n}, \r\n{\r\n\"block_available\": 11789163, \r\n\"block_size\": 4096, \r\n\"block_total\": 12312705, \r\n\"block_used\": 523542, \r\n\"device\": \"\/dev\/mapper\/centos-root\", \r\n\"fstype\": \"xfs\", \r\n\"inode_available\": 24574787, \r\n\"inode_total\": 24637440, \r\n\"inode_used\": 62653, \r\n\"mount\": \"\/\", \r\n\"options\": \"rw,relatime,attr2,inode64,noquota\", \r\n\"size_available\": 48288411648, \r\n\"size_total\": 50432839680, \r\n\"uuid\": \"1cfd0a4f-a5e3-40ba-bbfe-289e8fd0b694\"\r\n}\r\n], \r\n\"ansible_nodename\": \"all\", \r\n\"ansible_os_family\": \"RedHat\", \r\n\"ansible_pkg_mgr\": \"yum\", \r\n\"ansible_proc_cmdline\": {\r\n\"BOOT_IMAGE\": \"\/vmlinuz-3.10.0-1127.el7.x86_64\", \r\n\"LANG\": \"en_US.UTF-8\", \r\n\"biosdevname\": \"0\", \r\n\"crashkernel\": \"auto\", \r\n\"net.ifnames\": \"0\", \r\n\"quiet\": true, \r\n\"rd.lvm.lv\": [\r\n\"centos\/root\", \r\n\"centos\/swap\"\r\n], \r\n\"rhgb\": true, \r\n\"ro\": true, \r\n\"root\": \"\/dev\/mapper\/centos-root\", \r\n\"spectre_v2\": \"retpoline\"\r\n}, \r\n\"ansible_processor\": [\r\n\"0\", \r\n\"GenuineIntel\", \r\n\"Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz\"\r\n], \r\n\"ansible_processor_cores\": 1, \r\n\"ansible_processor_count\": 1, \r\n\"ansible_processor_threads_per_core\": 1, \r\n\"ansible_processor_vcpus\": 1, \r\n\"ansible_product_name\": \"VMware Virtual Platform\", \r\n\"ansible_product_serial\": \"VMware-56 4d f8 05 24 e2 2a e3-5d 3d ce 11 97 ce b7 db\", \r\n\"ansible_product_uuid\": \"05F84D56-E224-E32A-5D3D-CE1197CEB7DB\", \r\n\"ansible_product_version\": \"None\", \r\n\"ansible_python\": {\r\n\"executable\": \"\/usr\/bin\/python\", \r\n\"has_sslcontext\": true, \r\n\"type\": \"CPython\", \r\n\"version\": {\r\n\"major\": 2, \r\n\"micro\": 5, \r\n\"minor\": 7, \r\n\"releaselevel\": \"final\", \r\n\"serial\": 0\r\n}, \r\n\"version_info\": [\r\n2, \r\n7, \r\n5, \r\n\"final\", \r\n0\r\n]\r\n}, \r\n\"ansible_python_version\": \"2.7.5\", \r\n\"ansible_real_group_id\": 0, \r\n\"ansible_real_user_id\": 0, \r\n\"ansible_selinux\": {\r\n\"status\": \"disabled\"\r\n}, \r\n\"ansible_selinux_python_present\": true, \r\n\"ansible_service_mgr\": \"systemd\", \r\n\"ansible_ssh_host_key_ecdsa_public\": \"AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEpvyOBL2arP8fp+UopqGXcbJu8r5OWjmccIS1hMY6S73RKgFXtcao+Ydv\/rBj8kSa\/2FYKwjwY9ZDE+KfTKd3k=\", \r\n\"ansible_ssh_host_key_ed25519_public\": \"AAAAC3NzaC1lZDI1NTE5AAAAIETLhr2yJfkwHLo0TbmgbgjZgUVOilVImTeg5ME3rNki\", \r\n\"ansible_ssh_host_key_rsa_public\": \"AAAAB3NzaC1yc2EAAAADAQABAAABAQDmsFpRpCGSkswjpYGZAvCFxj\/hZJ2X6k8IAqWZw9gBdsfQBFh7fWoRPtFGKTu7+OHCO9+0JRcze+D81zP5N8tDHTi8m3HsJ9RSud83rrFSgxh9GLmNcjuRyPeH5rWmbJ6+BEorZFP4DZ53M87A7iu+D3xB8emt9nckd7Er5p0GDsbqR9pl2IczypQ3Pba5pAyiAdjG1HTBErpYFwq7IxopFu7QUJwxL7qj57axUU7YR9vXLQgTKyJzzabKrwYYdWjGT8QnUnZ1fbzwTPfvryrB\/pOTBLl+qk1crTwshulMIhP5mdApYXYcjUmLv1Rwdfu012vGKbYMt7d0pwcCqS5n\", \r\n\"ansible_swapfree_mb\": 2047, \r\n\"ansible_swaptotal_mb\": 2047, \r\n\"ansible_system\": \"Linux\", \r\n\"ansible_system_capabilities\": [\r\n\"cap_chown\", \r\n\"cap_dac_override\", \r\n\"cap_dac_read_search\", \r\n\"cap_fowner\", \r\n\"cap_fsetid\", \r\n\"cap_kill\", \r\n\"cap_setgid\", \r\n\"cap_setuid\", \r\n\"cap_setpcap\", \r\n\"cap_linux_immutable\", \r\n\"cap_net_bind_service\", \r\n\"cap_net_broadcast\", \r\n\"cap_net_admin\", \r\n\"cap_net_raw\", \r\n\"cap_ipc_lock\", \r\n\"cap_ipc_owner\", \r\n\"cap_sys_module\", \r\n\"cap_sys_rawio\", \r\n\"cap_sys_chroot\", \r\n\"cap_sys_ptrace\", \r\n\"cap_sys_pacct\", \r\n\"cap_sys_admin\", \r\n\"cap_sys_boot\", \r\n\"cap_sys_nice\", \r\n\"cap_sys_resource\", \r\n\"cap_sys_time\", \r\n\"cap_sys_tty_config\", \r\n\"cap_mknod\", \r\n\"cap_lease\", \r\n\"cap_audit_write\", \r\n\"cap_audit_control\", \r\n\"cap_setfcap\", \r\n\"cap_mac_override\", \r\n\"cap_mac_admin\", \r\n\"cap_syslog\", \r\n\"35\", \r\n\"36+ep\"\r\n], \r\n\"ansible_system_capabilities_enforced\": \"True\", \r\n\"ansible_system_vendor\": \"VMware, Inc.\", \r\n\"ansible_uptime_seconds\": 515022, \r\n\"ansible_user_dir\": \"\/root\", \r\n\"ansible_user_gecos\": \"root\", \r\n\"ansible_user_gid\": 0, \r\n\"ansible_user_id\": \"root\", \r\n\"ansible_user_shell\": \"\/bin\/bash\", \r\n\"ansible_user_uid\": 0, \r\n\"ansible_userspace_architecture\": \"x86_64\", \r\n\"ansible_userspace_bits\": \"64\", \r\n\"ansible_virtualization_role\": \"guest\", \r\n\"ansible_virtualization_type\": \"VMware\", \r\n\"discovered_interpreter_python\": \"\/usr\/bin\/python\", \r\n\"gather_subset\": [\r\n\"all\"\r\n], \r\n\"module_setup\": true\r\n}, \r\n\"changed\": false\r\n}<\/pre>\n<h4>\u901a\u8fc7filter\u8fdb\u884c\u8fc7\u6ee4 \u663e\u793a\u6211\u4eec\u7d22\u8981\u7684facts<\/h4>\n<pre>[root@ansible \/server\/playbook]$ ansible 172.16.1.78 -m setup -a 'filter=\"*eth1*\"'\r\n172.16.1.78 | SUCCESS =&gt; {\r\n\"ansible_facts\": {\r\n\"ansible_eth1\": {\r\n\"active\": true, \r\n\"device\": \"eth1\", \r\n\"features\": {\r\n\"busy_poll\": \"off [fixed]\", \r\n\"fcoe_mtu\": \"off [fixed]\", \r\n\"generic_receive_offload\": \"on\", \r\n\"generic_segmentation_offload\": \"on\", \r\n\"highdma\": \"off [fixed]\", \r\n\"hw_tc_offload\": \"off [fixed]\", \r\n\"l2_fwd_offload\": \"off [fixed]\", \r\n\"large_receive_offload\": \"off [fixed]\", \r\n\"loopback\": \"off [fixed]\", \r\n\"netns_local\": \"off [fixed]\", \r\n\"ntuple_filters\": \"off [fixed]\", \r\n\"receive_hashing\": \"off [fixed]\", \r\n\"rx_all\": \"off\", \r\n\"rx_checksumming\": \"off\", \r\n\"rx_fcs\": \"off\", \r\n\"rx_gro_hw\": \"off [fixed]\", \r\n\"rx_udp_tunnel_port_offload\": \"off [fixed]\", \r\n\"rx_vlan_filter\": \"on [fixed]\", \r\n\"rx_vlan_offload\": \"on\", \r\n\"rx_vlan_stag_filter\": \"off [fixed]\", \r\n\"rx_vlan_stag_hw_parse\": \"off [fixed]\", \r\n\"scatter_gather\": \"on\", \r\n\"tcp_segmentation_offload\": \"on\", \r\n\"tx_checksum_fcoe_crc\": \"off [fixed]\", \r\n\"tx_checksum_ip_generic\": \"on\", \r\n\"tx_checksum_ipv4\": \"off [fixed]\", \r\n\"tx_checksum_ipv6\": \"off [fixed]\", \r\n\"tx_checksum_sctp\": \"off [fixed]\", \r\n\"tx_checksumming\": \"on\", \r\n\"tx_fcoe_segmentation\": \"off [fixed]\", \r\n\"tx_gre_csum_segmentation\": \"off [fixed]\", \r\n\"tx_gre_segmentation\": \"off [fixed]\", \r\n\"tx_gso_partial\": \"off [fixed]\", \r\n\"tx_gso_robust\": \"off [fixed]\", \r\n\"tx_ipip_segmentation\": \"off [fixed]\", \r\n\"tx_lockless\": \"off [fixed]\", \r\n\"tx_nocache_copy\": \"off\", \r\n\"tx_scatter_gather\": \"on\", \r\n\"tx_scatter_gather_fraglist\": \"off [fixed]\", \r\n\"tx_sctp_segmentation\": \"off [fixed]\", \r\n\"tx_sit_segmentation\": \"off [fixed]\", \r\n\"tx_tcp6_segmentation\": \"off [fixed]\", \r\n\"tx_tcp_ecn_segmentation\": \"off [fixed]\", \r\n\"tx_tcp_mangleid_segmentation\": \"off\", \r\n\"tx_tcp_segmentation\": \"on\", \r\n\"tx_udp_tnl_csum_segmentation\": \"off [fixed]\", \r\n\"tx_udp_tnl_segmentation\": \"off [fixed]\", \r\n\"tx_vlan_offload\": \"on [fixed]\", \r\n\"tx_vlan_stag_hw_insert\": \"off [fixed]\", \r\n\"udp_fragmentation_offload\": \"off [fixed]\", \r\n\"vlan_challenged\": \"off [fixed]\"\r\n}, \r\n\"hw_timestamp_filters\": [], \r\n\"ipv4\": {\r\n\"address\": \"172.16.1.78\", \r\n\"broadcast\": \"172.16.1.255\", \r\n\"netmask\": \"255.255.255.0\", \r\n\"network\": \"172.16.1.0\"\r\n}, \r\n\"ipv6\": [\r\n{\r\n\"address\": \"fe80::250:56ff:fe24:6451\", \r\n\"prefix\": \"64\", \r\n\"scope\": \"link\"\r\n}\r\n], \r\n\"macaddress\": \"00:50:56:24:64:51\", \r\n\"module\": \"e1000\", \r\n\"mtu\": 1500, \r\n\"pciid\": \"0000:02:02.0\", \r\n\"promisc\": false, \r\n\"speed\": 1000, \r\n\"timestamping\": [\r\n\"tx_software\", \r\n\"rx_software\", \r\n\"software\"\r\n], \r\n\"type\": \"ether\"\r\n}, \r\n\"discovered_interpreter_python\": \"\/usr\/bin\/python\"\r\n}, \r\n\"changed\": false\r\n}<\/pre>\n<h3>facts\u57fa\u672c\u7528\u6cd5\uff0c\u83b7\u53d6\u88ab\u63a7\u7aef\u7684\u4e3b\u673a\u540d\u4e0eIP\u5730\u5740<\/h3>\n<h4>\u5267\u672c<\/h4>\n<pre>[root@ansible \/server\/playbook]$ cat 08debug.yml \r\n---\r\n- hosts: al\r\n  tasks:\r\n  - name: echo\r\n    debug:\r\n      msg: \r\n      - \"name {{ ansible_hostname }}\"\r\n      - \"\u6240\u6709\u7684ip\u5730\u5740 {{ ansible_all_ipv4_addresses }}\"\r\n      - \"\u9ed8\u8ba4\u7684ip\u5730\u5740 {{ ansible_default_ipv4.address }}\"\r\n      - \"you interface is {{ ansible_default_ipv4.interface }}\"\r\n      - \"time is {{ ansible_date_time.date }}\"\r\n      - \"mem total is {{ ansible_memtotal_mb }}\"\r\n      - \"you system is {{ ansible_distribution }} version is {{ ansible_distribution_version }}\"<\/pre>\n<pre>[root@ansible \/server\/playbook]$ ansible-playbook 08debug.yml\r\n\r\nPLAY [al] *********************************************************************************************************************\r\n\r\nTASK [Gathering Facts] ********************************************************************************************************\r\nok: [172.16.1.78]\r\n\r\nTASK [echo] *******************************************************************************************************************\r\nok: [172.16.1.78] =&gt; {\r\n\"msg\": [\r\n\"name all \",\r\n\"\u6240\u6709\u7684ip\u5730\u5740 [u'172.16.1.78', u'10.0.0.78']\", \r\n\"\u9ed8\u8ba4\u7684ip\u5730\u5740 10.0.0.78\", \r\n\"you interface is eth0\", \r\n\"time is 2023-08-08\", \r\n\"mem total is 1819\", \r\n\"you system is CentOS version is 7.8\"\r\n]\r\n}\r\n\r\nPLAY RECAP ********************************************************************************************************************\r\n172.16.1.78 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0<\/pre>\n<h3>facts\u5f00\u542f\u540e\u4f1a\u5f71\u54cdAnsible\u4e3b\u673a\u7684\u6027\u80fd\uff0c\u5982\u679c\u6ca1\u6709\u91c7\u96c6\u88ab\u63a7\u7aef\u4e3b\u673a\u9700\u6c42\u53ef\u9009\u62e9\u5173\u95ed<\/h3>\n<h4>\u5267\u672c<\/h4>\n<pre>[root@ansible \/server\/playbook]$ cat 08debug.yml \r\n---\r\n- hosts: al\r\n\u00a0 gather_facts: no\r\n  tasks:\r\n  - name: echo\r\n    debug:\r\n      msg: \r\n      - \"name {{ ansible_hostname }} \"\r\n      - \"\u6240\u6709\u7684ip\u5730\u5740 {{ ansible_all_ipv4_addresses }}\"\r\n      - \"\u9ed8\u8ba4\u7684ip\u5730\u5740 {{ ansible_default_ipv4.address }}\"\r\n      - \"you interface is {{ ansible_default_ipv4.interface }}\"\r\n      - \"time is {{ ansible_date_time.date }}\"\r\n      - \"mem total is {{ ansible_memtotal_mb }}\"\r\n      - \"you system is {{ ansible_distribution }} version is {{ ansible_distribution_version }}\"\r\n[root@ansible \/server\/playbook]$ ansible-playbook 08debug.yml\r\n\r\nPLAY [al] *********************************************************************************************************************\r\n\r\nTASK [echo] *******************************************************************************************************************\r\nfatal: [172.16.1.78]: FAILED! =&gt; {\"msg\": \"The task includes an option with an undefined variable. The error was: 'ansible_hostname' is undefined\\n\\nThe error appears to be in '\/server\/playbook\/08debug.yml': line 5, column 7, but may\\nbe elsewhere in the file depending on the exact syntax problem.\\n\\nThe offending line appears to be:\\n\\n tasks:\\n - name: echo\\n ^ here\\n\"}\r\n\r\nPLAY RECAP ********************************************************************************************************************\r\n172.16.1.78 : ok=0 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0<\/pre>\n<h3>\u4f7f\u7528facts\u6839\u636e\u4e0d\u540c\u7684\u5185\u5b58\u751f\u6210\u4e0d\u540cMemcached\u914d\u7f6e\u6587\u4ef6<\/h3>\n<h4>\u5267\u672c<\/h4>\n<pre>[root@ansible \/server\/playbook]$ cat 09memcached.yml \r\n---\r\n- hosts: web\r\n  tasks:\r\n  - name: Install Memcached\r\n    yum:\r\n      name: memcached\r\n      state: present\r\n  - name: Configure Memcached\r\n    template: \r\n      src: \/server\/playbook\/memcached.j2\r\n      dest: \/etc\/sysconfig\/memcached\r\n  - name: Start Memcached\r\n    service: \r\n      name: memcached\r\n      enabled: yes<\/pre>\n<h4>\u914d\u7f6e\u6587\u4ef6<\/h4>\n<pre>[root@ansible \/server\/playbook]$ cat memcached.j2 \r\nPORT=\"11211\"\r\nUSER=\"memcached\"\r\nMAXCONN=\"1024\"\r\nCACHESIZE=\"{{ ansible_memtotal_mb \/\/2 }}\"\r\nOPTIONS=\"\"<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>1.Ansible\u53d8\u91cf\u6982\u8ff0\u8be6\u60c5 \u5728Ansible\u4e2d\uff0c\u53d8\u91cf\u662f\u7528\u4e8e\u5b58\u50a8\u548c\u5f15\u7528\u503c\u7684\u6807\u8bc6\u7b26\u3002\u5b83\u4eec\u53ef\u4ee5\u5728Playbook [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":""},"categories":[24],"tags":[],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/www.qiangzhenshuai.com\/index.php?rest_route=\/wp\/v2\/posts\/1182"}],"collection":[{"href":"https:\/\/www.qiangzhenshuai.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.qiangzhenshuai.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.qiangzhenshuai.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.qiangzhenshuai.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1182"}],"version-history":[{"count":8,"href":"https:\/\/www.qiangzhenshuai.com\/index.php?rest_route=\/wp\/v2\/posts\/1182\/revisions"}],"predecessor-version":[{"id":1192,"href":"https:\/\/www.qiangzhenshuai.com\/index.php?rest_route=\/wp\/v2\/posts\/1182\/revisions\/1192"}],"wp:attachment":[{"href":"https:\/\/www.qiangzhenshuai.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1182"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.qiangzhenshuai.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1182"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.qiangzhenshuai.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1182"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}