{"id":220,"date":"2023-08-30T11:08:52","date_gmt":"2023-08-30T03:08:52","guid":{"rendered":"http:\/\/xianyijitan.top\/?p=220"},"modified":"2023-08-31T18:53:55","modified_gmt":"2023-08-31T10:53:55","slug":"ansible-%e8%87%aa%e5%ae%9a%e4%b9%89%e5%8f%98%e9%87%8f","status":"publish","type":"post","link":"https:\/\/xianyijitan.top\/?p=220","title":{"rendered":"Ansible \u81ea\u5b9a\u4e49\u53d8\u91cf"},"content":{"rendered":"<h2>\u81ea\u5b9a\u4e49\u53d8\u91cf\u7b80\u4ecb<\/h2>\n<p><strong>Ansible\u5f15\u5165\u53d8\u91cf\uff0c\u53ef\u4ee5\u65b9\u4fbfPlaybook\u91cd\u7528\uff0c\u5bf9\u4e8e\u591a\u6b21\u6267\u884cplaybook\uff0c\u53ea\u8981\u6539\u53d8\u53d8\u91cf\u540d\u5373\u53ef\uff0c\u4e0d\u7528\u7f16\u5199\u65b0\u7684playbook\u3002\u5e76\u4e14Ansible\u652f\u630110\u79cd\u4ee5\u4e0a\u7684\u53d8\u91cf\u5b9a\u4e49\u65b9\u5f0f\uff0c\u5e38\u7528\u7684\u53d8\u91cf\u6765\u6e90\u5982\u4e0b\uff1a<\/strong><\/p>\n<ul>\n<li><strong>inventory\u53d8\u91cf\uff0c\u53d8\u91cf\u6765\u81ea\u4e8e\u4e3b\u673a\u6e05\u5355\u6587\u4ef6<\/strong><\/li>\n<li><strong>facts\u53d8\u91cf<\/strong><\/li>\n<li><strong>playbook\u53d8\u91cf\uff0c\u53d8\u91cf\u5728playbook\u4e2d\u5b9a\u4e49<\/strong><\/li>\n<li><strong>\u53d8\u91cf\u6587\u4ef6\uff0c\u4e13\u95e8\u521b\u5efa\u7528\u4e8e\u4fdd\u5b58\u53d8\u91cf\u7684\u6587\u4ef6<\/strong><\/li>\n<\/ul>\n<h2>\u81ea\u5b9a\u4e49\u53d8\u91cf\u5e94\u7528<\/h2>\n<ul>\n<li><strong>inventory\u53d8\u91cf<\/strong><\/li>\n<\/ul>\n<pre><code class=\"language-shell\"># \u6539\u6e05\u5355\u6587\u4ef6\n[root@pubserver ansible]# vim inventory \n[webservers]\nweb[1:2]\n[dbs]\ndb1\n[cluster:children]\nwebservers\ndbs\n\n[dbs]\ndb1 username=&quot;wangwu&quot;   # \u5b9a\u4e49\u4e3b\u673a\u53d8\u91cf\n[webservers:vars]       # \u5b9a\u4e49\u7ec4\u53d8\u91cf\nusername=&quot;zhaoliu&quot;\n\n# \u901a\u8fc7\u53d8\u91cf\u521b\u5efa\u7528\u6237\n[root@pubserver ansible]# vim var1.yml\n---\n- name: webservers create user\n  hosts: dbs,webservers\n  tasks:\n    - name: create user\n      user:\n        name: &quot;{{username}}&quot;   # \u8c03\u7528\u53d8\u91cf\n        state: present\n\n# \u8fd0\u884c\n[root@pubserver ansible]# ansible-playbook var1.yml \n\nPLAY [webservers create user] *********************************************************************************************************************\n\nTASK [Gathering Facts] ****************************************************************************************************************************\nok: [db1]\nok: [web1]\nok: [web2]\n\nTASK [create user] ********************************************************************************************************************************\nchanged: [web2]\nchanged: [web1]\nchanged: [db1]\n\nPLAY RECAP ****************************************************************************************************************************************\ndb1                        : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   \nweb1                       : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   \nweb2                       : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0 <\/code><\/pre>\n<ul>\n<li><strong>facts \u4e2d\u5b9a\u4e49\u53d8\u91cf<\/strong><\/li>\n<\/ul>\n<pre><code class=\"language-shell\">[root@pubserver ansible]# vim fact.yml\n---\n- name: copy\n  hosts: all\n  tasks: \n   - copy:\n       content: &quot;{{ansible_hostname}}:{{ansible_bios_version}}&quot;  #\u4e3b\u673a\u540d\u5b57\u548cBIOS\u7248\u672c\u4fe1\u606f\n       dest: \/tmp\/facts.txt\n# \u8fd0\u884c\n[root@pubserver ansible]# ansible-playbook fact.yml \n\nPLAY [copy] ***************************************************************************************************************************************\n\nTASK [Gathering Facts] ****************************************************************************************************************************\nok: [db1]\nok: [web2]\nok: [web1]\n\nTASK [copy] ***************************************************************************************************************************************\nchanged: [db1]\nchanged: [web2]\nchanged: [web1]\n\nPLAY RECAP ****************************************************************************************************************************************\ndb1                        : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   \nweb1                       : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   \nweb2                       : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0 <\/code><\/pre>\n<ul>\n<li><strong>playbook\u4e2d\u5b9a\u4e49 \u53d8\u91cf<\/strong><\/li>\n<\/ul>\n<pre><code class=\"language-shell\">[root@pubserver ansible]# vim user_jack.yml\n---\n- name: create user\n  hosts: webservers\n  vars:                     # \u5b9a\u4e49\u53d8\u91cf\n    username: &quot;jack&quot;\n    mima: &quot;123456&quot;\n  tasks:\n    - name: create some users\n      user:\n        name: &quot;{{username}}&quot;      # \u8c03\u7528\u53d8\u91cf\n        state: present\n        password: &quot;{{mima|password_hash(&#039;sha512&#039;)}}&quot;   # \u8c03\u7528\u53d8\u91cf\n\n# \u8fd0\u884c\n[root@pubserver ansible]# ansible-playbook user_jack.yml \n\nPLAY [create user] ********************************************************************************************************************************\n\nTASK [Gathering Facts] ****************************************************************************************************************************\nok: [web2]\nok: [web1]\n\nTASK [create some users] **************************************************************************************************************************\nchanged: [web1]\nchanged: [web2]\n\nPLAY RECAP ****************************************************************************************************************************************\nweb1                       : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   \nweb2                       : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0 <\/code><\/pre>\n<ul>\n<li><strong>\u53d8\u91cf\u6587\u4ef6 \u5b9a\u4e49\u53d8\u91cf<\/strong><\/li>\n<\/ul>\n<pre><code class=\"language-shell\"># \u521b\u5efa\u53d8\u91cf\u6587\u4ef6\n[root@pubserver ansible]# vim vars.yml\n---\nmao: laohu\ngou: lang\n\n[root@pubserver ansible]# vim user_anm.yml\n---\n- name: create ani\n  hosts: webservers\n  vars_files: vars.yml      # \u8c03\u7528\u53d8\u91cf\u6587\u4ef6\n  tasks:\n    - name: create amin\n      user:\n        name: &quot;mao&quot;           # \u8c03\u7528\u53d8\u91cf\n        state: present\n        password: &quot;{{gou|password_hash(&#039;sha512&#039;)}}&quot;   # \u8c03\u7528\u53d8\u91cf\n\n# \u8fd0\u884c\n[root@pubserver ansible]# ansible-playbook user_anm.yml \n\nPLAY [create ani] *********************************************************************************************************************************\n\nTASK [Gathering Facts] ****************************************************************************************************************************\nok: [web2]\nok: [web1]\n\nTASK [create amin] ********************************************************************************************************************************\nchanged: [web2]\nchanged: [web1]\n\nPLAY RECAP ****************************************************************************************************************************************\nweb1                       : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   \nweb2                       : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0 <\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u81ea\u5b9a\u4e49\u53d8\u91cf\u7b80\u4ecb Ansible\u5f15\u5165\u53d8\u91cf\uff0c\u53ef\u4ee5\u65b9\u4fbfPlaybook\u91cd\u7528\uff0c\u5bf9\u4e8e\u591a\u6b21\u6267\u884cplaybook\uff0c\u53ea\u8981\u6539\u53d8\u53d8\u91cf\u540d\u5373\u53ef\uff0c\u4e0d\u7528\u7f16\u5199\u65b0\u7684playbook\u3002\u5e76\u4e14Ansible\u652f\u630110\u79cd\u4ee5\u4e0a\u7684\u53d8\u91cf\u5b9a\u4e49\u65b9\u5f0f\uff0c\u5e38\u7528\u7684\u53d8\u91cf\u6765\u6e90\u5982\u4e0b\uff1a inventory\u53d8\u91cf\uff0c\u53d8\u91cf\u6765\u81ea\u4e8e\u4e3b\u673a\u6e05\u5355\u6587\u4ef6 facts\u53d8\u91cf playbook\u53d8\u91cf\uff0c\u53d8\u91cf\u5728playbook\u4e2d\u5b9a\u4e49 \u53d8\u91cf\u6587\u4ef6\uff0c\u4e13\u95e8\u521b\u5efa\u7528\u4e8e\u4fdd\u5b58\u53d8\u91cf\u7684\u6587\u4ef6 \u81ea\u5b9a\u4e49\u53d8\u91cf\u5e94\u7528 inventory\u53d8\u91cf # \u6539\u6e05\u5355\u6587\u4ef6 [root@pubserver ansible]# vim inventory [webservers] web[1:2] [dbs] db1 [cluster:children] webservers dbs [dbs] db1 username=&quot;wangwu&quot; # \u5b9a\u4e49\u4e3b\u673a\u53d8\u91cf [webservers:vars] # \u5b9a\u4e49\u7ec4\u53d8\u91cf username=&quot;zhaoliu&quot; # \u901a\u8fc7\u53d8\u91cf\u521b\u5efa\u7528\u6237 [root@pubserver ansible]# vim var1.yml &#8212; &#8211; name: webservers create user hosts: dbs,webservers tasks: &#8211; name: create user user: name: &quot;{{username}}&quot; # \u8c03\u7528\u53d8\u91cf state: present # \u8fd0\u884c [root@pubserver ansible]# ansible-playbook var1.yml PLAY [webservers create user] ********************************************************************************************************************* TASK [Gathering Facts] **************************************************************************************************************************** ok: [db1] ok: [web1] ok: [web2] TASK [create user] ******************************************************************************************************************************** changed: [web2] changed: [web1] changed: [db1] PLAY RECAP **************************************************************************************************************************************** db1 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 web1 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 web2 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 facts \u4e2d\u5b9a\u4e49\u53d8\u91cf [root@pubserver ansible]# vim fact.yml &#8212; &#8211; name: copy hosts: all tasks: &#8211; copy: content: &quot;{{ansible_hostname}}:{{ansible_bios_version}}&quot; #\u4e3b\u673a\u540d\u5b57\u548cBIOS\u7248\u672c\u4fe1\u606f dest: \/tmp\/facts.txt # \u8fd0\u884c [root@pubserver ansible]# ansible-playbook fact.yml PLAY [copy] *************************************************************************************************************************************** TASK [Gathering Facts] *******&#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-220","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\/220","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=220"}],"version-history":[{"count":2,"href":"https:\/\/xianyijitan.top\/index.php?rest_route=\/wp\/v2\/posts\/220\/revisions"}],"predecessor-version":[{"id":260,"href":"https:\/\/xianyijitan.top\/index.php?rest_route=\/wp\/v2\/posts\/220\/revisions\/260"}],"wp:attachment":[{"href":"https:\/\/xianyijitan.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=220"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/xianyijitan.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=220"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/xianyijitan.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=220"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}