{"id":725,"date":"2022-03-07T21:56:32","date_gmt":"2022-03-07T13:56:32","guid":{"rendered":"https:\/\/www.buyao007.icu\/?p=725"},"modified":"2022-03-08T17:32:16","modified_gmt":"2022-03-08T09:32:16","slug":"3-%e8%87%aa%e5%8a%a8%e5%8c%96%e8%bf%90%e7%bb%b4%e5%b7%a5%e5%85%b7ansible-%e4%b9%8bplaybook","status":"publish","type":"post","link":"https:\/\/www.buyao007.icu\/?p=725","title":{"rendered":"3.\u81ea\u52a8\u5316\u8fd0\u7ef4\u5de5\u5177Ansible \u4e4bPlayBook"},"content":{"rendered":"\n<p>\u5b59\u5bcc\u9633\uff0c \u6c5f\u6e56\u4eba\u79f0\u6ca1\u4eba\u79f0\u3002\u591a\u5e74\u4e92\u8054\u7f51\u8fd0\u7ef4\u5de5\u4f5c\u7ecf\u9a8c\uff0c\u66fe\u8d1f\u8d23\u8fc7\u5b59\u5e03\u65af\u5927\u89c4\u6a21\u96c6\u7fa4\u67b6\u6784\u81ea\u52a8\u5316\u8fd0\u7ef4\u7ba1\u7406\u5de5\u4f5c\u3002\u64c5\u957fWeb\u96c6\u7fa4\u67b6\u6784\u4e0e\u81ea\u52a8\u5316\u8fd0\u7ef4\uff0c\u66fe\u8d1f\u8d23\u56fd\u5185\u67d0\u5927\u578b\u535a\u5ba2\u7f51\u7ad9\u8fd0\u7ef4\u5de5\u4f5c\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"toc_0\">1.Ansible Playbook\u57fa\u672c\u6982\u8ff0<\/h2>\n\n\n\n<p><strong><em>1.\u4ec0\u4e48\u662fplaybook<\/em><\/strong><\/p>\n\n\n\n<p>PlayBook \u5373\u201d\u5267\u672c\u201d\uff0c\u201d\u5175\u4e66\u201d\u4e4b\u610f\uff0cPlayBook\u662f\u7531\u4ee5\u4e0b\u90e8\u5206\u7ec4\u6210\u7684<br>play : \u5b9a\u4e49\u7684\u662f\u4e3b\u673a\u7684\u89d2\u8272\u3002\uff08\u4e3b\u89d2\u8fd8\u662f\u914d\u89d2,\u627e\u54ea\u4e2a\u660e\u661f\uff09<br>task : \u5b9a\u4e49\u7684\u662f\u5177\u4f53\u6267\u884c\u7684\u4efb\u52a1\u3002\uff08\u89d2\u8272\u7684\u53f0\u8bcd\u548c\u52a8\u4f5c\uff09<br>playbook : \u7531\u4e00\u4e2a\u6216\u591a\u4e2aplay\uff08\u89d2\u8272\uff09\u7ec4\u6210\uff0c\u4e00\u4e2aplay\uff08\u89d2\u8272\uff09\u53ef\u4ee5\u5305\u542b\u591a\u4e2atask\uff08\u53f0\u8bcd\uff0c\u52a8\u4f5c\uff0c\u5927\u8155\u6bcf\u96c6\u62cd\u4ec0\u4e48\uff09\u3002<br>\u7b80\u5355\u7406\u89e3\u4e3a: \u4f7f\u7528\u4e0d\u540c\u7684\u6a21\u5757\u5b8c\u6210\u4e00\u4ef6\u4e8b\u60c5<br>\u5728 Ansible \u4e2d\u201d\u5267\u672c\u6587\u4ef6\u201d\u662f\u4ee5yml\u7ed3\u5c3e\u7684\u6587\u4ef6\u3002 \u5728 SaltStack \u4e2d\u201d\u5267\u672c\u6587\u4ef6\u201d\u662f\u4ee5sls\u7ed3\u5c3e\u7684\u6587\u4ef6\u3002 \u4f46\u662f\u8bed\u6cd5\uff0c\u4f7f\u7528\u7684\u90fd\u662f yaml \u8bed\u6cd5**<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"865\" height=\"384\" src=\"https:\/\/www.buyao007.icu\/wp-content\/uploads\/2022\/03\/image-20.png\" alt=\"\" class=\"wp-image-726\" srcset=\"https:\/\/www.buyao007.icu\/wp-content\/uploads\/2022\/03\/image-20.png 865w, https:\/\/www.buyao007.icu\/wp-content\/uploads\/2022\/03\/image-20-300x133.png 300w, https:\/\/www.buyao007.icu\/wp-content\/uploads\/2022\/03\/image-20-768x341.png 768w\" sizes=\"(max-width: 865px) 100vw, 865px\" \/><\/figure>\n\n\n\n<p><strong><em>2.Ansible playbook\u4e0eAD-Hoc\u7684\u5173\u7cfb<\/em><\/strong><\/p>\n\n\n\n<p>1.PlayBook \u529f\u80fd\u6bd4 ad\u2010hoc \u66f4\u5168\uff0c\u662f\u5bf9 ad\u2010hoc \u7684\u4e00\u79cd\u7f16\u6392.<br>2.PlayBook \u80fd\u5f88\u597d\u7684\u63a7\u5236\u5148\u540e\u6267\u884c\u987a\u5e8f, \u4ee5\u53ca\u4f9d\u8d56\u5173\u7cfb<br>3.PlayBook \u8bed\u6cd5\u5c55\u73b0\u66f4\u52a0\u7684\u76f4\u89c2.<br>4.playbook \u53ef\u4ee5\u6301\u4e45\u4f7f\u7528, ad\u2010hoc \u65e0\u6cd5\u6301\u4e45\u4f7f\u7528.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"toc_0\">2.Ansible Playbook\u8bed\u6cd5\u4e66\u5199\u683c\u5f0f<\/h2>\n\n\n\n<p>playbook\u662f\u7531yaml\u8bed\u6cd5\u4e66\u5199\uff0c\u7ed3\u6784\u6e05\u6670\uff0c\u53ef\u8bfb\u6027\u5f3a\uff0c\u6240\u4ee5\u5fc5\u987b\u638c\u63e1yml\u57fa\u7840\u8bed\u6cd5<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>\u8bed\u6cd5<\/td><td>\u63cf\u8ff0<\/td><\/tr><tr><td>\u7f29\u8fdb<\/td><td>YAML\u4f7f\u7528\u56fa\u5b9a\u7684\u7f29\u8fdb\u98ce\u683c\u8868\u793a\u5c42\u7ea7\u7ed3\u6784,\u6bcf\u4e2a\u7f29\u8fdb\u7531\u4e24\u4e2a\u7a7a\u683c\u7ec4\u6210, \u4e0d\u80fd\u4f7f\u7528tabs<\/td><\/tr><tr><td>\u5192\u53f7<\/td><td>\u4ee5\u5192\u53f7\u7ed3\u5c3e\u7684\u9664\u5916\uff0c\u5176\u4ed6\u6240\u6709\u5192\u53f7\u540e\u9762\u6240\u6709\u5fc5\u987b\u6709\u7a7a\u683c\u3002<\/td><\/tr><tr><td>\u77ed\u6a2a\u7ebf<\/td><td>\u8868\u793a\u5217\u8868\u9879\uff0c\u4f7f\u7528\u4e00\u4e2a\u77ed\u6a2a\u6760\u52a0\u4e00\u4e2a\u7a7a\u683c\u3002\u591a\u4e2a\u9879\u4f7f\u7528\u540c\u6837\u7684\u7f29\u8fdb\u7ea7\u522b\u4f5c\u4e3a\u540c\u4e00\u5217\u8868\u3002<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong><em>1.\u4e0b\u9762\u6211\u4eec\u4e00\u8d77\u6765\u7f16\u5199\u4e00\u4e2aplaybook\u6587\u4ef6<\/em><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>playbook\u8d77\u6b65\nhost: \u5bf9\u54ea\u4e9b\u4e3b\u673a\u8fdb\u884c\u64cd\u4f5c\nremote_user: \u6211\u8981\u4f7f\u7528\u4ec0\u4e48\u7528\u6237\u6267\u884c\ntasks: \u5177\u4f53\u6267\u884c\u4ec0\u4e48\u4efb\u52a1\n###\u4eba\u751f\u4e2d\u7b2c1\u4e2a\u5267\u672c \u67e5\u8be2\u6240\u6709\u4e3b\u673a\u7684\u4e3b\u673a\n&#91;root@mb01 ~]# vim \/server\/playbook\/01_playbook.yml \n---\n- name: shosh\n  hosts: all\n  tasks:\n  - name: show\n    command: hostname\n<\/code><\/pre>\n\n\n\n<p><strong><em>2.\u6267\u884cplaybook\uff0c\u6ce8\u610f\u89c2\u5bdf\u6267\u884c\u8fd4\u56de\u7684\u72b6\u6001\u989c\u8272<\/em><\/strong><\/p>\n\n\n\n<p>\u7ea2\u8272\uff1a\u8868\u793a\u6709task\u6267\u884c\u5931\u8d25\uff0c\u901a\u5e38\u90fd\u4f1a\u63d0\u793a\u9519\u8bef\u4fe1\u606f\u3002<br>\u9ec4\u8272\uff1a\u8868\u793a\u8fdc\u7a0b\u4e3b\u673a\u6309\u7167\u7f16\u6392\u7684\u4efb\u52a1\u6267\u884c\u4e14\u8fdb\u884c\u4e86\u6539\u53d8\u3002<br>\u7eff\u8272\uff1a\u8868\u793a\u8be5\u4e3b\u673a\u5df2\u7ecf\u662f\u63cf\u8ff0\u540e\u7684\u72b6\u6001\uff0c\u65e0\u9700\u5728\u6b21\u8fd0\u884c<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"toc_0\">3.Ansible Playbook\u7ec3\u4e60\u5b9e\u9a8c<\/h2>\n\n\n\n<p><strong><em>1.\u4f7f\u7528ansible\u642d\u5efanfs\u670d\u52a1<\/em><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;root@mb01 ~]# cat \/server\/playbook\/host.yml\r\n---\r\n- name: \u670d\u52a1\u7aef\u642d\u5efanfs\u670d\u52a1\r\n  hosts: 172.16.1.51\r\n  remote_user: root\r\n  tasks:\r\n    - name: \u670d\u52a1\u7aef\u5b89\u88c5nfs\u670d\u52a1\r\n      yum:\r\n        name: nfs-utils\r\n        state: installed\r\n    - name: \u4e66\u5199\u914d\u7f6e\u6587\u4ef6\r\n      copy:\r\n        content: \/data\/ 172.16.1.0\/24(rw,no_all_squash)\r\n        dest: \/etc\/exports\r\n        backup: yes\r\n      notify:\r\n        - nfs\u53d8\u5316\uff0c\u91cd\u542fnfs\r\n    - name: \u521b\u5efa\u5171\u4eab\u76ee\u5f55\r\n      file:\r\n        path: \/data\/\r\n        state: directory\r\n        owner: nfsnobody\r\n        group: nfsnobody\r\n        mode: 0755\r\n    - name: \u542f\u52a8\u670d\u52a1\r\n      systemd:\r\n        name: nfs\r\n        state: started\r\n        enabled: yes\r\n    - name: \u542f\u52a8rcp\r\n      systemd:\r\n        name: rpcbind\r\n        state: started\r\n        enabled: yes\r\n  handlers:\r\n    - name: nfs\u53d8\u5316\uff0c\u91cd\u542fnfs\r\n      systemd:\r\n        name: nfs\r\n        state: restarted\r\n        enabled: yes\r\n- name: \u5ba2\u6237\u7aef\u6302\u8f7d\r\n  hosts: webs \r\n  remote_user: root\r\n  tasks:\r\n    - name: \u5b89\u88c5nfs\u670d\u52a1\r\n      yum:\r\n        name: nfs-utils\r\n        state: installed\r\n    - name: \u6267\u884c\u6302\u8f7d\u64cd\u4f5c\r\n      mount:\r\n        src: 172.16.1.51:\/data\r\n        path: \/mnt\r\n        state: mounted\r\n        fstype: nfs\r<\/code><\/pre>\n\n\n\n<p><strong><em>2.\u4f7f\u7528ansible\u642d\u5efarsyncd<\/em><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>\u7f16\u5199\u5267\u672c<\/strong>\r\n&#91;root@mb01 ~]# cat \/server\/playbook\/rsync.yml \r\n---\r\n- name: backup\u670d\u52a1\u5668\u642d\u5efarsync\u670d\u52a1\r\n  hosts: backup\r\n  tasks:\r\n    - name: \u5b89\u88c5rsync\r\n      yum:\r\n        name: rsync\r\n        state: installed\r\n    - name: \u62f7\u8d1d\u914d\u7f6e\u6587\u4ef6\u81f3backup\u670d\u52a1\u7aef\r\n      copy:\r\n        src: \/opt\/rsyncd.conf\r\n        dest: \/etc\/rsyncd.conf\r\n        backup: yes\r\n    - name: \u521b\u5efa\u7528\u6237\u7ec4\r\n      group:\r\n        name: rsync\r\n        gid: \"666\"\r\n    - name: \u521b\u5efa\u7528\u6237\r\n      user:\r\n       name: rsync\r\n       uid: \"666\"\r\n       create_home: no\r\n       shell: \/sbin\/nologin\r\n       group: \"666\"\r\n    - name: \u521b\u5efa\u914d\u7f6e\u6587\u4ef6\u6307\u5b9a\u7684\u76ee\u5f55\r\n      file:\r\n        path: \/backup\r\n        state: directory\r\n        owner: rsync\r\n        group: rsync\r\n    - name: \u521b\u5efa\u5bc6\u7801\u6587\u4ef6\r\n      copy:\r\n        content: rsync_backup:123456\r\n        dest: \/etc\/rsync.pass\r\n        mode: 0600\r\n    - name: \u542f\u52a8rsync\u670d\u52a1\r\n      systemd:\r\n        name: rsyncd\r\n        state: started\r\n        enabled: yes\r\n- name: \u5ba2\u6237\u7aef\u9a8c\u8bc1\r\n  hosts: webs\r\n  tasks:\r\n    - name: \u63a8\u9001\u5bc6\u7801\u6587\u4ef6\u81f3rsync\u5ba2\u6237\u7aef\r\n      copy:\r\n        content: 123456\r\n        dest: \/etc\/rsync.pass\r\n        mode: 0600\r\n    - name: \u6d4b\u8bd5\u662f\u5426\u53ef\u4ee5\u6267\u884c\r\n      command: rsync -avz \/etc\/hosts rsync_backup@172.16.1.41::backup --password-file=\/etc\/rsync.pass\r\n<strong>###\u5728ansible\u7ba1\u7406\u7aef\u7f16\u5199\u88ab\u7ba1\u7406\u7aef\u7684\u914d\u7f6e\u6587\u4ef6<\/strong>\r\n&#91;root@mb01 ~]# cat \/opt\/rsyncd.conf \r\nuid = rsync\r\ngid = rsync\r\nport = 873\r\nfake super = yes\r\nuse chroot = no\r\nmax connections = 200\r\ntimeout = 300\r\nlog file = \/var\/log\/rsyncd.log\r\nignore errors\r\nread only = false\r\nlist = false\r\nauth users = rsync_backup\r\nsecrets file = \/etc\/rsync.pass\r\n&#91;backup]\r\ncomment = \"backup dir by oldboy\"\r\npath = \/backup\r\n<\/code><\/pre>\n\n\n\n<p><strong><em>PS\uff1aansibel-playbook\u547d\u4ee4<\/em><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#\u68c0\u67e5\u8bed\u6cd5\r\n&#91;root@mb01 ~]# ansible-playbook --syntax-check \/server\/playbook\/rsync.yml\r\n#\u6d4b\u8bd5\u6267\u884c\r\n&#91;root@mb01 ~]# ansible-playbook \/server\/playbook\/rsync.yml -C\r\n#\u6267\u884c\r\n&#91;root@mb01 ~]# ansible-playbook \/server\/playbook\/rsync.yml\r<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u5b59\u5bcc\u9633\uff0c \u6c5f\u6e56\u4eba\u79f0\u6ca1\u4eba\u79f0\u3002\u591a\u5e74\u4e92\u8054\u7f51\u8fd0\u7ef4\u5de5\u4f5c\u7ecf\u9a8c\uff0c\u66fe\u8d1f\u8d23\u8fc7\u5b59\u5e03\u65af\u5927\u89c4\u6a21\u96c6\u7fa4\u67b6\u6784\u81ea\u52a8\u5316\u8fd0\u7ef4\u7ba1\u7406\u5de5\u4f5c\u3002\u64c5\u957fWeb\u96c6 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":246,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16],"tags":[],"_links":{"self":[{"href":"https:\/\/www.buyao007.icu\/index.php?rest_route=\/wp\/v2\/posts\/725"}],"collection":[{"href":"https:\/\/www.buyao007.icu\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.buyao007.icu\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.buyao007.icu\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.buyao007.icu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=725"}],"version-history":[{"count":3,"href":"https:\/\/www.buyao007.icu\/index.php?rest_route=\/wp\/v2\/posts\/725\/revisions"}],"predecessor-version":[{"id":729,"href":"https:\/\/www.buyao007.icu\/index.php?rest_route=\/wp\/v2\/posts\/725\/revisions\/729"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.buyao007.icu\/index.php?rest_route=\/wp\/v2\/media\/246"}],"wp:attachment":[{"href":"https:\/\/www.buyao007.icu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=725"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.buyao007.icu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=725"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.buyao007.icu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=725"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}