{"id":5442,"date":"2020-08-18T16:31:55","date_gmt":"2020-08-18T08:31:55","guid":{"rendered":"http:\/\/39.97.231.10\/?p=5442"},"modified":"2020-08-18T16:31:55","modified_gmt":"2020-08-18T08:31:55","slug":"ansible%e6%9c%8d%e5%8a%a1%e9%83%a8%e7%bd%b2%e4%b8%8e%e4%bd%bf%e7%94%a8","status":"publish","type":"post","link":"http:\/\/www.weijing.co\/?p=5442","title":{"rendered":"ansible\u670d\u52a1\u90e8\u7f72\u4e0e\u4f7f\u7528"},"content":{"rendered":"<header class=\\\"entry-header\\\">\n<h1 class=\\\"entry-title\\\"><span style=\\\"font-size: 1.53846rem;\\\">\u7b2c1\u7ae0 ssh+key\u5b9e\u73b0\u57fa\u4e8e\u5bc6\u94a5\u8fde\u63a5\uff08ansible\u4f7f\u7528\u524d\u63d0\uff09<\/span><\/h1>\n<\/header>\n<div class=\\\"entry-content\\\">\n<div class=\\\"single-content\\\">\n<strong>\u8bf4\u660e\uff1a<\/strong><br \/>\n<strong>\u00a0\u00a0 ansible<\/strong><strong>\u5176\u529f\u80fd\u5b9e\u73b0\u57fa\u4e8eSSH<\/strong><strong>\u8fdc\u7a0b\u8fde\u63a5\u670d\u52a1<\/strong><br \/>\n<strong>\u00a0\u00a0\u00a0<\/strong><strong>\u4f7f\u7528ansible<\/strong><strong>\u9700\u8981\u9996\u5148\u5b9e\u73b0ssh<\/strong><strong>\u5bc6\u94a5\u8fde\u63a5<\/strong><\/p>\n<h2><span id=\\\"11_ssh_key\\\">1.1 \u90e8\u7f72ssh key<\/span><\/h2>\n<h3><span id=\\\"111\\\">1.1.1 \u7b2c\u4e00\u4e2a\u91cc\u7a0b\u7891\uff1a \u521b\u5efa\u5bc6\u94a5\u5bf9<\/span><\/h3>\n<div class=\\\"cnblogs_code\\\">\n<pre>ssh-keygen\n-t \u6307\u5b9a\u5bc6\u94a5\u7c7b\u578b  rsa1 dsa\uff08\u5e38\u7528\uff09 ecdsa\n\u8bed\u6cd5\uff1a\nSYNOPSIS\n     ssh-keygen [-q] [-b bits] -t type [-N new_passphrase] [-C comment]\n                [-f output_keyfile]\n     ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]\n     ssh-keygen -i [-f input_keyfile]\n     ssh-keygen -e [-f input_keyfile]\n     ssh-keygen -y [-f input_keyfile]\n     ssh-keygen -c [-P passphrase] [-C comment] [-f keyfile]\n     ssh-keygen -l [-f input_keyfile]\n     ssh-keygen -B [-f input_keyfile]\n     ssh-keygen -D pkcs11\n     ssh-keygen -F hostname [-f known_hosts_file] [-l]\n     ssh-keygen -H [-f known_hosts_file]\n     ssh-keygen -R hostname [-f known_hosts_file]\n     ssh-keygen -r hostname [-f input_keyfile] [-g]\n     ssh-keygen -G output_file [-v] [-b bits] [-M memory] [-S start_point]\n     ssh-keygen -T output_file -f input_file [-v] [-a num_trials]\n                [-W generator]\n     ssh-keygen [-n] [-D smartcard]\n     ssh-keygen -s ca_key -I certificate_identity [-h] [-Z principals]\n                [-O option] [-V validity_interval] [-z serial_number] file ...\n     ssh-keygen -L [-f input_keyfile]<\/pre>\n<\/div>\n<p><strong>\u521b\u5efa\u5bc6\u94a5\u7684\u8fc7\u7a0b<\/strong><\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# ssh-keygen -t dsa\nGenerating public\/private dsa key pair.\nEnter file in which to save the key (\/root\/.ssh\/id_dsa):  #\u79c1\u94a5\u521b\u5efa\u540e\u4fdd\u5b58\u7684\u8def\u5f84\nCreated directory \\'\/root\/.ssh\\'.\nEnter passphrase (empty for no passphrase):             #\u79c1\u94a5\u9700\u4e0d\u9700\u8fdb\u884c\u52a0\u5bc6\uff0c\u8bbe\u7f6e\u5bc6\u7801\nEnter same passphrase again:   #\u79c1\u94a5\u9700\u4e0d\u9700\u8fdb\u884c\u52a0\u5bc6\uff0c\u518d\u6b21\u8f93\u5165\u5bc6\u7801\u786e\u8ba4\nYour identification has been saved in \/root\/.ssh\/id_dsa.\nYour public key has been saved in \/root\/.ssh\/id_dsa.pub.\nThe key fingerprint is:\n31:4a:4f:9f:97:b0:b6:ca:4c:53:78:70:89:83:5f:16 root@m01\nThe key\\'s randomart image is:\n+--[ DSA 1024]----+\n|          E      |\n|       . . o     |\n|      o B *      |\n|     . = @ + .   |\n|      . S B o    |\n|         + o     |\n|        o .      |\n|       + o       |\n|        +        |\n+-----------------+<\/pre>\n<\/div>\n<\/div>\n<p>\u521b\u5efa\u51fa\u6765\u7684\u6587\u4ef6\uff1a<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# ll \/root\/.ssh\/\ntotal 8\n-rw------- 1 root root 668 Oct 17 18:55 id_dsa       #\u521b\u5efa\u51fa\u6765\u7684\u79c1\u94a5\n-rw-r--r-- 1 root root 598 Oct 17 18:55 id_dsa.pub  #\u521b\u5efa\u51fa\u6765\u7684\u516c\u94a5<\/pre>\n<\/div>\n<\/div>\n<h3><span id=\\\"112\\\">1.1.2 \u7b2c\u4e8c\u4e2a\u91cc\u7a0b\u7891\uff1a \u5206\u53d1\u516c\u94a5\u6587\u4ef6<\/span><\/h3>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# man ssh-copy-id\nssh-copy-id  -  install  your  public  key in a remote machine\u2019s autho-rized_keys<\/pre>\n<\/div>\n<\/div>\n<p>\u6ce8\u610f\uff1a\u5bc6\u94a5\u5206\u53d1\u547d\u4ee4\u5c5e\u4e8eopenssh-clients\u8f6f\u4ef6\u5305<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@nfs01 ~]# rpm -qf `which ssh-copy-id`\nopenssh-clients-5.3p1-122.el6.x86_64<\/pre>\n<\/div>\n<\/div>\n<p><strong>\u8bed\u6cd5\u683c\u5f0f<\/strong><\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>ssh-copy-id [-i [identity_file]] [user@]machine\n-i       \u6307\u5b9a\u8981\u5206\u53d1\u7684\u516c\u94a5\u6587\u4ef6\u4ee5\u53ca\u8def\u5f84\u4fe1\u606f\n[user@] \u4ee5\u4ec0\u4e48\u7528\u6237\u8eab\u4efd\u8fdb\u884c\u5206\u53d1\nmachine \u5c06\u516c\u94a5\u5206\u53d1\u5230\u54ea\u53f0\u4e3b\u673a\u4e0a\uff0c\u8fdc\u7a0b\u4e3b\u673aIP\u5730\u5740\n[root@m01 ~]# ssh-copy-id  -i \/root\/.ssh\/id_dsa.pub  root@172.16.1.41\nThe authenticity of host \\'172.16.1.41 (172.16.1.41)\\' can\\'t be established.\nRSA key fingerprint is d3:41:bb:0d:43:88:da:a3:2c:e8:36:91:11:c9:e4:9c.\nAre you sure you want to continue connecting (yes\/no)? yes\nWarning: Permanently added \\'172.16.1.41\\' (RSA) to the list of known hosts.\nroot@172.16.1.41\\'s password:\nNow try logging into the machine, with \\\"ssh \\'root@172.16.1.41\\'\\\", and check in\n  .ssh\/authorized_keys\nto make sure we haven\\'t added extra keys that you weren\\'t expecting.<\/pre>\n<\/div>\n<\/div>\n<h3><span id=\\\"113\\\">1.1.3 \u7b2c\u4e09\u4e2a\u91cc\u7a0b\u7891\uff1a \u57fa\u4e8e\u5bc6\u94a5\u767b\u9646\u6d4b\u8bd5<\/span><\/h3>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# ssh 172.16.1.41\nLast login: Tue Oct 17 18:38:47 2017 from 10.0.0.1\n[root@backup ~]#<\/pre>\n<\/div>\n<\/div>\n<p>\u57fa\u4e8e\u5bc6\u94a5\u767b\u9646\u65b9\u5f0f\u6210\u529f\u2191<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# ssh root@172.16.1.41 \\\"hostname -i\\\"\n172.16.1.41<\/pre>\n<\/div>\n<\/div>\n<p>\u4e0d\u7528\u7684\u767b\u9646\u5230\u8fdc\u7a0b\u4e3b\u673a\u76f4\u63a5\u6267\u884c\u547d\u4ee4\uff0c\u8fd4\u56de\u8f93\u51fa\u7ed3\u679c\u2191<br \/>\n<strong>\u8bf4\u660e\uff1a<\/strong><\/p>\n<div>\n<p class=\\\"a3\\\"><strong>\u7ba1\u7406\u4e3b\u673a\u4e00\u65e6\u521b\u5efa\u597d\u79d8\u94a5\u5bf9\u6587\u4ef6\uff0c\u7ed9\u591a\u4e2a\u4e3b\u673a\u5206\u53d1\u516c\u94a5\u65f6\uff0c\u516c\u94a5\u6587\u4ef6\u76f8\u540c<\/strong><\/p>\n<\/div>\n<h3><span id=\\\"114_ssh\\\">1.1.4 ssh\u670d\u52a1\u5206\u53d1\u516c\u94a5\u5b9e\u8d28\u6267\u884c\u8fc7\u7a0b<\/span><\/h3>\n<div>\n<p class=\\\"a3\\\">\u2460.\u00a0\u7ba1\u7406\u670d\u52a1\u5668<strong>\u521b\u5efa<\/strong>\u79c1\u94a5\u548c\u516c\u94a5\uff08<strong>\u5bc6\u94a5\u5bf9<\/strong>\uff09<\/p>\n<p class=\\\"a3\\\">\u2461.\u00a0\u5c06<strong>\u516c\u94a5\u6587\u4ef6\u8fdc\u7a0b\u4f20\u9001\u590d\u5236\u5230\u88ab\u7ba1\u7406\u670d\u52a1\u5668<\/strong>\u76f8\u5e94\u7528\u6237~\/.ssh\/id_dsa.pub\u4e0b\uff0c\u5e76\u4fee\u6539.ssh\u76ee\u5f55\u6743\u9650\u4e3a700<\/p>\n<p class=\\\"a3\\\">\u2462.\u00a0\u4fee\u6539\u516c\u94a5\u6587\u4ef6<strong>\u6587\u4ef6\u540d\u79f0\u4e3a<\/strong><strong>authorized_keys<\/strong>\uff0c\u6388\u6743\u6743\u9650\u4e3a600<\/p>\n<p class=\\\"a3\\\">\u2463.\u00a0\u5229\u7528ssh\u670d\u52a1\u914d\u7f6e\u6587\u4ef6\u7684\u914d\u7f6e\u53c2\u6570\uff0c\u8fdb\u884c<strong>\u8bc6\u522b\u516c\u94a5\u6587\u4ef6<\/strong>authorized_keys<\/p>\n<p class=\\\"a3\\\">\u2464.\u00a0\u8fdb\u800c<strong>\u5b9e\u73b0\u57fa\u4e8e\u5bc6\u94a5\u8fdc\u7a0b\u767b\u5f55<\/strong>\u670d\u52a1\u5668\uff08\u514d\u5bc6\u7801\u767b\u5f55\/\u975e\u4ea4\u4e92\u65b9\u5f0f\u767b\u5f55\uff09<\/p>\n<\/div>\n<h2><span id=\\\"12_22\\\">1.2 \u9ed8\u8ba4\u7aef\u53e3\u53f7\u4e0d\u662f22\uff0c\u5982\u4f55\u5206\u53d1\u516c\u94a5<\/span><\/h2>\n<h3><span id=\\\"121_ssh-copy-id\\\">1.2.1 \u67e5\u8be2ssh-copy-id\u547d\u4ee4\u53ef\u4ee5\u5f97\u77e5\u8fd9\u662f\u4e2a\u811a\u672c\u6587\u4ef6<\/span><\/h3>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# file `which ssh-copy-id `\n\/usr\/bin\/ssh-copy-id: POSIX shell script text executable<\/pre>\n<\/div>\n<\/div>\n<p>\u770b\u770b\u811a\u672c\u5185\u5bb9\u53d1\u73b0\u4f20\u8f93\u65b9\u5f0f<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# cat `which ssh-copy-id`|grep ssh\nssh $1 \\\"exec sh -c \\'cd; umask 077; test -d .ssh || mkdir .ssh ; cat &gt;&gt; .ssh\/authorized_keys &amp;&amp; (test -x \/sbin\/restorecon &amp;&amp; \/sbin\/restorecon .ssh .ssh\/authorized_keys &gt;\/dev\/null 2&gt;&amp;1 || true)\\'\\\" || exit 1<\/pre>\n<\/div>\n<\/div>\n<p>\u8bf4\u660e\uff1a<br \/>\n1\u3001\u5207\u6362\u7528\u6237\u5230\u5bb6\u76ee\u5f55\u4e0b\uff0c\u4e34\u65f6\u8bbe\u7f6eumask\u503c<br \/>\n2\u3001\u5224\u65ad\u5ba2\u6237\u7aef\u76f8\u5e94\u7528\u6237\u4e2d\u6709\u6ca1\u6709.ssh\u76ee\u5f55\uff0c\u5982\u679c\u6ca1\u6709.ssh \u76ee\u5f55\u5c31\u8fdb\u884c\u521b\u5efa<br \/>\n3\u3001\u5c06\u7ba1\u7406\u7aef\u516c\u94a5\u6587\u4ef6\u5185\u5bb9\u6dfb\u52a0\u5230\u5ba2\u6237\u7aef~.\/ssh\/authorized_keys, \u9ed8\u8ba4authorized_keys\u6587\u4ef6\u4e0d\u5b58\u5728\uff0c\u9700\u8981\u521b\u5efa\uff0c\u6587\u4ef6\u6743\u9650600<\/p>\n<h3><span id=\\\"122_22\\\">1.2.2 \u5b9e\u73b0\u975e22\u7aef\u53e3\u7684\u5206\u53d1<\/span><\/h3>\n<p>\u65b9\u6cd5\u4e00\uff1a \u4fee\u6539\u811a\u672c\u5185\u5bb9<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>ssh -p52113 $1 \\\"exec sh -c \\'cd; umask 077; test -d .ssh || mkdir .ssh ; cat &gt;&gt; .ssh\/authorized_keys &amp;&amp; (test -x \/sbin\/restorecon &amp;&amp; \/sbin\/restorecon .ssh .ssh\/authorized_keys &gt;\/dev\/null 2&gt;&amp;1 || true)\\'\\\" || exit 1<\/pre>\n<\/div>\n<\/div>\n<p>\u8bf4\u660e\uff1a\u6839\u636e\u547d\u4ee4\u811a\u672c\uff0c\u4fee\u6539$1\u4f20\u53c2\u4fe1\u606f\uff0c\u4ece\u800c\u5b9e\u73b0\u6839\u636essh\u4e0d\u540c\u7aef\u53e3\u4f20\u9001\u516c\u94a5\u6587\u4ef6<br \/>\n\u65b9\u6cd5\u4e8c\uff1a\u5c06\u4f20\u5165\u7684\u53c2\u6570\u4e0a\u6dfb\u52a0\u4e0a\u7aef\u53e3\u4fe1\u606f<strong>(<\/strong><strong>\u63a8\u8350)<\/strong><\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 scripts]# ssh-copy-id -i \/root\/.ssh\/id_dsa.pub \\\"-p 52113 znix@172.16.1.250\\\"\nNow try logging into the machine, with \\\"ssh \\'-p 52113 znix@172.16.1.250\\'\\\", and check in:\n  .ssh\/authorized_keys\nto make sure we haven\\'t added extra keys that you weren\\'t expecting.<\/pre>\n<\/div>\n<\/div>\n<h3><span id=\\\"123_usrbinssh-copy-id_1\\\">1.2.3 \u5173\u4e8e \/usr\/bin\/ssh-copy-id \u811a\u672c\u4e2d $1\u7684\u8bf4\u660e<\/span><\/h3>\n<h4 id=\\\"title-0\\\"><span id=\\\"1231nbsp_shift\\\">1.2.3.1\u00a0 \u7f16\u5199\u811a\u672cshift<\/span><\/h4>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 scripts]# cat shift.sh\n#!\/bin\/bash\nuntil [ $# -eq 0 ]\ndo\necho $*\nshift\ndone<\/pre>\n<\/div>\n<p>\u6d4b\u8bd5<\/p>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 scripts]# sh shift.sh 1 2 3 4 5 6\n1 2 3 4 5 6\n2 3 4 5 6\n3 4 5 6\n4 5 6\n5 6\n6<\/pre>\n<\/div>\n<\/div>\n<p>\u8bf4\u660e\uff1a<\/p>\n<div>\n<p class=\\\"a3\\\">shift\u547d\u4ee4\u7528\u4e8e\u5bf9\u53c2\u6570\u7684\u79fb\u52a8(\u5de6\u79fb)\uff0c\u901a\u5e38\u7528\u4e8e\u5728\u4e0d\u77e5\u9053\u4f20\u5165\u53c2\u6570\u4e2a\u6570\u7684\u60c5\u51b5\u4e0b\u4f9d\u6b21\u904d\u5386\u6bcf\u4e2a\u53c2\u6570\u7136\u540e\u8fdb\u884c\u76f8\u5e94\u5904\u7406\uff08\u5e38\u89c1\u4e8eLinux\u4e2d\u5404\u79cd\u7a0b\u5e8f\u7684\u542f\u52a8\u811a\u672c\uff09\u3002<\/p>\n<\/div>\n<div>\n<div class=\\\"cnblogs_Highlighter\\\">\n<pre class=\\\"brush:bash;gutter:true;\\\">ssh-copy-id -i \/root\/.ssh\/id_dsa.pub \\\"-p 52113 znix@172.16.1.250\\\"<\/pre>\n<\/div>\n<\/div>\n<p>\u7531\u4e8e\/usr\/bin\/ssh-copy-id \u811a\u672c\u4e2d\u524d\u9762\u4f7f\u7528\u4e86\u4e24\u4e2ashift \u6240\u6709\u539f\u672c\u8be5\u4e3a$3\u7684\u53c2\u6570\u53d8\u4e3a\u4e86$1.<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>if [ \\\"-i\\\" = \\\"$1\\\" ]; then\n  shift\n  # check if we have 2 parameters left, if so the first is the new ID file\n  if [ -n \\\"$2\\\" ]; then\n    if expr \\\"$1\\\" : \\\".*\\\\.pub\\\" &gt; \/dev\/null ; then\n      ID_FILE=\\\"$1\\\"\n    else\n      ID_FILE=\\\"$1.pub\\\"\n    fi\n    shift         # and this should leave $1 as the target name\n  fi\nelse<\/pre>\n<\/div>\n<\/div>\n<h2><span id=\\\"13\\\">1.3 \u5b9e\u73b0\u81ea\u52a8\u5206\u53d1\u516c\u94a5\uff0c\u8fdc\u7a0b\u7ba1\u7406\u591a\u53f0\u4e3b\u673a<\/span><\/h2>\n<h3><span id=\\\"131_shell\\\">1.3.1 \u3010\u9884\u5907\u77e5\u8bc6\u3011shell\u4e2d\u4e09\u79cd\u5faa\u73af<\/span><\/h3>\n<div class=\\\"cnblogs_code\\\">\n<pre>#for \u5faa\u73af\nfor n in (1..100)\ndo\n      xxx\ndone\n#while\u5faa\u73af:\u5faa\u73af\u6761\u4ef6\u4e3a\u771f\u65f6\uff0c\u4e00\u76f4\u5faa\u73af\uff1b\u4e3a\u5047\u65f6\uff0c\u505c\u6b62\u5faa\u73af\nwhile [ture]\ndo\n      xxx\ndone\n#until \u5faa\u73af: \u5faa\u73af\u6761\u4ef6\u4e3a\u5047\u65f6\uff0c\u4e00\u76f4\u5faa\u73af\uff1b\u4e3a\u771f\u65f6\uff0c\u505c\u6b62\u5faa\u73af\nuntil [ture]\ndo\n   xxx\ndone<\/pre>\n<\/div>\n<div><\/div>\n<h3><span id=\\\"132\\\">1.3.2 \u5b9e\u73b0\u81ea\u52a8\u5206\u53d1\u516c\u94a5\uff0c\u8fdc\u7a0b\u7ba1\u7406\u591a\u53f0\u4e3b\u673a\u7684\u963b\u788d\u56e0\u7d20\uff1f<\/span><\/h3>\n<div>\n<p class=\\\"a3\\\">01.\u521b\u5efa\u79d8\u94a5\u5bf9\u9700\u8981\u8fdb\u884c\u4ea4\u4e92<\/p>\n<p class=\\\"a3\\\">\u3000\u3000a.\u9700\u8981\u786e\u8ba4\u79d8\u94a5\u4fdd\u5b58\u8def\u5f84<\/p>\n<p class=\\\"a3\\\">\u3000\u3000b.\u9700\u8981\u786e\u8ba4\u5bc6\u7801\u4fe1\u606f<\/p>\n<p class=\\\"a3\\\">02.\u5206\u53d1\u516c\u94a5\u65f6\u9700\u8981\u8fdb\u884c\u4ea4\u4e92<\/p>\n<p class=\\\"a3\\\">\u3000\u3000a.\u9700\u8981\u8fdb\u884c\u786e\u8ba4yes|no<\/p>\n<p class=\\\"a3\\\">\u3000\u3000b.\u7b2c\u4e00\u6b21\u5206\u53d1\u516c\u94a5\u9700\u8981\u8fdb\u884c\u5bc6\u7801\u8ba4\u8bc1<\/p>\n<\/div>\n<h3><span id=\\\"133\\\">1.3.3 \u89e3\u51b3\u963b\u788d\u56e0\u7d20<\/span><\/h3>\n<p>1.\u81ea\u52a8\u4fdd\u5b58\u8def\u5f84\uff0c\u5e76\u4e14\u4e0d\u5bc6\u7801<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>ssh-keygen -t rsa -f ~\/.ssh\/id_rsa -N \\\"\\\" -q<\/pre>\n<\/div>\n<\/div>\n<p><strong>\u53c2\u6570\u8bf4\u660e\uff1a<\/strong><\/p>\n<div>\n<div class=\\\"cnblogs_Highlighter\\\">\n<pre class=\\\"brush:bash;gutter:true;\\\">-f filename     Specifies the filename of the key file.\n                  \u6307\u5b9a\u5bc6\u94a5\u6587\u4ef6\u4fdd\u5b58\u7684\u8def\u5f84\u4fe1\u606f\uff08\u514d\u4ea4\u4e92\uff09\n-P passphrase       Provides the (old) passphrase.\n                    \u63d0\u4f9b\u4e00\u4e2a\u5bc6\u7801\u4fe1\u606f\n-N new_passphrase      Provides the new passphrase.\n      -P -N        \u90fd\u662f\u514d\u4ea4\u4e92\u65b9\u5f0f\u6307\u5b9a\u5bc6\u7801\u4fe1\u606f\n-q \u5b89\u9759\u7684    \u4e0d\u8f93\u51fa\u4fe1\u606f\uff0c\u51cf\u5c11\u4fe1\u606f\u8f93\u51fa<\/pre>\n<\/div>\n<\/div>\n<p>2.\u89e3\u51b3\u5206\u53d1\u516c\u94a5\u65f6\u9700\u8981\u8fdb\u884c\u7684\u4ea4\u4e92<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>sshpass -p123456 ssh-copy-id -i ~\/.ssh\/id_rsa.pub \\\" root@172.16.1.$ip  -o StrictHostKeyChecking=no \\\"<\/pre>\n<\/div>\n<\/div>\n<p><strong>\u53c2\u6570\u8bf4\u660e\uff1a<\/strong><\/p>\n<div>\n<div class=\\\"cnblogs_Highlighter\\\">\n<pre class=\\\"brush:bash;gutter:true;\\\">-o   option   \u9009\u62e9 \uff08man \u624b\u518c\u4e2d\u53ef\u4ee5\u67e5\u5230\u6709\u5f88\u591a\u9009\u9879\uff09\nStrictHostKeyChecking=no \u5bf9\u8be2\u95ee\u7684\u56de\u5e94\uff08\u4e0d\u8fdb\u884c\u5bf9\u5bc6\u94a5\u68c0\u67e5\uff09<\/pre>\n<\/div>\n<\/div>\n<p>\u8981\u5b9e\u73b0\u514d\u5bc6\u7801\uff0c\u9700\u8981\u4e00\u6b3e\u8f6f\u4ef6 sshpass \u00a0\u8be5\u8f6f\u4ef6\u5c31\u662f\u4e3assh\u63d0\u4f9b\u5bc6\u7801\u4f7f\u7528\u7684<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# yum install  sshpass  -y<\/pre>\n<\/div>\n<\/div>\n<p><strong>\u6ce8\u610f\uff1a\u5bc6\u7801\u4e0e -p<\/strong><strong>\u4e4b\u95f4\u4e0d\u80fd\u6709\u7a7a\u683c<\/strong><\/p>\n<h3><span id=\\\"134\\\">1.3.4 \u6700\u7ec8\u6279\u91cf\u5206\u53d1\u811a\u672c\u5185\u5bb9<\/span><\/h3>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 scripts]# vim ssh-key.sh\n#!\/bin\/bash\n. \/etc\/rc.d\/init.d\/functions\n# \u521b\u5efa\u5bc6\u94a5\n\\\\rm ~\/.ssh\/id_rsa* -f\nssh-keygen -t rsa -f ~\/.ssh\/id_rsa -N \\\"\\\" -q\n# \u5206\u53d1\u516c\u94a5\nfor ip in 31 41 8\ndo\nsshpass -p123456 ssh-copy-id -i ~\/.ssh\/id_rsa.pub \\\" root@172.16.1.$ip  -o StrictHostKeyChecking=no \\\" &amp;&gt;\/dev\/null\nif [ $? -eq 0 ];then\naction  \\\"fenfa 172.16.1.$ip\\\"  \/bin\/true\nelse\naction  \\\"fenfa 172.16.1.$ip\\\"  \/bin\/false\nfi\necho \\\"\\\"\ndone<\/pre>\n<\/div>\n<\/div>\n<p>\u811a\u672c\u6267\u884c\u6548\u679c\uff1a<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 scripts]# sh ssh-key.sh\nfenfa 172.16.1.31                                          [  OK  ]\nfenfa 172.16.1.41                                          [  OK  ]\nfenfa 172.16.1.8                                           [  OK  ]<\/pre>\n<\/div>\n<\/div>\n<p>\u8bf4\u660e\uff1a<br \/>\n\u811a\u672c\u4e2d\u5f15\u7528\u00a0<strong>. \/etc\/rc.d\/init.d\/functions<\/strong>\u00a0\u51fd\u6570\uff0c\u53ef\u4ee5\u663e\u793a\u6267\u884c\u7ed3\u679c\u7684\u5224\u65ad\u3002<br \/>\n\u4f7f\u7528if\u8bed\u53e5\u8fdb\u884c\u5224\u65ad\uff0caction \u6267\u884c\u76f8\u5e94\u7684\u52a8\u4f5c\u3002true\/false<\/p>\n<h3><span id=\\\"135\\\">1.3.5 \u5b9e\u73b0\u57fa\u4e8e\u5bc6\u94a5\u7684\u6279\u91cf\u7ba1\u7406\u811a\u672c<\/span><\/h3>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 scripts]# vim piliang_guanli.sh\n#!\/bin\/bash\nCMD=$1\nfor ip in 8 31 41\ndo\necho ========host 172.16.1.$ip=======\nssh root@172.16.1.$ip \\\"$CMD\\\"\necho ============END===============\necho \\\"\\\"\ndone<\/pre>\n<\/div>\n<\/div>\n<p>\u811a\u672c\u6267\u884c\u6548\u679c\uff1a<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 scripts]# sh piliang_guanli.sh  date\n======172.16.1.8======\nThu Oct 19 16:25:08 CST 2017\n=========END=============\n======172.16.1.31======\nThu Oct 19 16:25:08 CST 2017\n=========END=============\n======172.16.1.41======\nThu Oct 19 16:25:08 CST 2017\n=========END=============<\/pre>\n<\/div>\n<\/div>\n<p><strong>\u57fa\u4e8e\u5bc6\u94a5\u767b\u9646\u65b9\u5f0f\uff0c\u5206\u53d1\u7684\u516c\u94a5\u6587\u4ef6\u4f1a\u8bc6\u522b\u7528\u6237\u4fe1\u606f\uff0c\u6240\u4ee5\u80fd\u591f\u5b9e\u73b0\u514d\u5bc6\u7801\u6279\u91cf\u7ba1\u7406\u3002<\/strong><\/p>\n<h1><span id=\\\"2_ansible\\\">\u7b2c2\u7ae0 ansible\u8f6f\u4ef6\u4ecb\u7ecd<\/span><\/h1>\n<ul>\n<li>python \u8bed\u8a00\u662f\u8fd0\u7ef4\u4eba\u5458\u5fc5\u987b\u4f1a\u7684\u8bed\u8a00<\/li>\n<li>ansible \u662f\u4e00\u4e2a\u57fa\u4e8epython \u5f00\u53d1\u7684\u81ea\u52a8\u5316\u8fd0\u7ef4\u5de5\u5177<\/li>\n<li>\u5176\u529f\u80fd\u5b9e\u73b0\u57fa\u4e8essh\u8fdc\u7a0b\u8fde\u63a5\u670d\u52a1<\/li>\n<li>ansible \u53ef\u4ee5\u5b9e\u73b0\u6279\u91cf\u7cfb\u7edf\u914d\u7f6e\uff0c\u6279\u91cf\u8f6f\u4ef6\u90e8\u7f72\uff0c\u6279\u91cf\u6587\u4ef6\u62f7\u8d1d\uff0c\u6279\u91cf\u8fd0\u884c\u547d\u4ee4\u7b49\u529f\u80fd<\/li>\n<\/ul>\n<div>\n<p class=\\\"a3\\\">\u9664\u4e86ansible\u4e4b\u5916\uff0c\u8fd8\u6709<strong>saltstack\u00a0<\/strong>\u7b49\u6279\u91cf\u7ba1\u7406\u8f6f\u4ef6<\/p>\n<\/div>\n<h2><span id=\\\"21\\\">2.1 \u81ea\u52a8\u5316\u6279\u91cf\u7ba1\u7406\u65b9\u5f0f\u8bf4\u660e<\/span><\/h2>\n<h3><span id=\\\"211_sshkey\\\">2.1.1 ssh+key\u65b9\u5f0f\u7684\u8bf4\u660e<\/span><\/h3>\n<p>\u514d\u5bc6\u7801\u767b\u5f55\u9a8c\u8bc1\u662f\u5355\u5411\u7684\uff0c\u65b9\u5411\u4ece\u79c1\u94a5\uff08\u94a5\u5319\uff09 &gt;==&gt; \u516c\u94a5\uff08\u9501\uff09<br \/>\nSSH\u514d\u5bc6\u7801\u767b\u5f55\u57fa\u4e8e\u7528\u6237\u7684\uff0c\u6700\u597d\u4e0d\u8981\u8de8\u4e0d\u540c\u7684\u7528\u6237<br \/>\nSSH\u8fde\u63a5\u6162\u89e3\u51b3\uff1b\u5373\u4fee\u6539sshd_config\u914d\u7f5d\u6587\u4ef6\u53c2\u6570\u4fe1\u606f<br \/>\n\u6279\u91cf\u5206\u53d11000\u53f0\u521d\u59cb\u90fd\u9700\u8981\u8f93\u5165\u4e00\u6b21\u5bc6\u7801\uff0c\u5e76\u4e14\u7b2c\u4e00\u6b21\u8fde\u63a5\u8981\u786e\u8ba4\uff08expect\/sshpass)<\/p>\n<div>\n<p class=\\\"a3\\\">\u00a0 \u3000\u3000expect\u6279\u91cf\u7ba1\u7406\u670d\u52a1\u5668\u53c2\u8003 http:\/\/oldboy.blog.51cto.com\/2561410\/1206238<\/p>\n<\/div>\n<h3><span id=\\\"212\\\">2.1.2 \u4f01\u4e1a\u7ea7\u751f\u4ea7\u573a\u666f\u6279\u91cf\u7ba1\u7406-\u81ea\u52a8\u5316\u7ba1\u7406\u65b9\u6848<\/span><\/h3>\n<p>\u2460.\u6700\u7b80\u5355\/\u6700\u5e38\u7528\/\u6700\u5f3a\u5927\u7684\u9009\u62e9\u662f<strong>ssh key+shell<\/strong>\/pssh\u65b9\u6848\uff0c\u4e00\u822c\u4e2d\u5c0f\u578b\u4f01\u4e1a\u4f1a\u7528\uff0850-100\u53f0\u4ee5\u4e0b\u89c4\u6a21\u4f01\u4e1a\uff09<br \/>\na.\u5229\u7528ssh key\u6267\u884c\u547d\u4ee4\uff0c\u5e76\u5c06\u547d\u4ee4\u653e\u5728\u811a\u672c\u91cc\u9762<br \/>\nb.\u5229\u7528ssh key\u6267\u884c\u547d\u4ee4\uff0c\u5c06\u547d\u4ee4\u653e\u5728\u811a\u672c\u91cc\u9762\uff0c\u5e76\u52a0\u4e0a\u76f8\u5e94\u5faa\u73af\u8bed\u53e5\u6216\u5224\u65ad\u8bed\u53e5<br \/>\n\u2461.sina cfengine\/puppet\u8f83\u65e9\u7684\u6279\u91cf\u7ba1\u7406\u5de5\u5177\uff1b\u73b0\u5728\u57fa\u672c\u4e0a\u6ca1\u6709\u4f01\u4e1a\u7528<br \/>\n\u2462.\u95e8\u6237\u7ea7\u522b\u6bd4\u8f83\u6d41\u884c\u7684\uff0cpuppet\u6279\u91cf\u7ba1\u7406\u5de5\u5177\uff08\u590d\u6742\/\u7b28\u91cd\uff09<br \/>\n\u2463.saltstack\u6279\u91cf\u7ba1\u7406\u5de5\u5177\uff1b\u7279\u70b9\uff1a\u7b80\u5355\uff0c\u529f\u80fd\u5f3a\u5927\uff08\u914d\u7f5d\u590d\u6742&gt;&#8212;\u8d76\u96c6\u7f51\/\u5c0f\u7c73\/\u4e00\u4e9bCDN\u516c\u53f8 \u6279\u91cf\u7ba1\u7406\u8def\u7ebf\uff1assh key&#8211;&gt;cfengine&#8211;&gt;puppet&#8211;&gt;saltstack\/ansible<br \/>\nPS:\u4f7f\u7528ansible\u8f6f\u4ef6\u7684\u524d\u63d0\u662fssh key\u516c\u94a5\u5206\u53d1\u5145\u6210<\/p>\n<h3><span id=\\\"213\\\">2.1.3 \u5982\u4f55\u5b8c\u6210\u6210\u96c6\u7fa4\u89c4\u6a21\u67b6\u6784\u4e00\u952e\u81ea\u52a8\u5316\u5b9e\u73b0\uff08\u6b65\u9aa4\u8bf4\u660e\uff09<\/span><\/h3>\n<p>\u2460.1\u53f0\u670d\u52a1\u5668\u5148\u914d\u7f6e\u597d\uff08kickstart,cobbler\u65e0\u4eba\u503c\u5b88\u5b89\u88c5\uff09\u3002\u9ad8\u7ea7\u5b9e\u73b0\u4e91\u8ba1\u7b97\uff08\u6309\u9700\u5206\u914d\uff0c\u52a8\u6001\u8c03\u6574\uff09\uff08openstack,kvm)<br \/>\n\u2461.linux\u57fa\u672c\u4f18\u5316\uff0c\u5305\u62ecssh\u670d\u52a1\uff08\u53ef\u4ee5\u81ea\u52a8\u5316\u5b9e\u73b0\uff09\u3002<br \/>\n\u521b\u5efa\u5bc6\u94a5\u4fe1\u606f\uff08\u81ea\u52a8\u5316\u514d\u4ea4\u4e92\u521b\u5efa\uff09<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>ssh-keygen -t dsa -P \\\"\\\" -f ~\/.ssh\/id_dsa &gt;\/dev\/null 2&gt;&amp;1<\/pre>\n<\/div>\n<\/div>\n<p>\u8fdb\u884c\u6279\u91cf\u5206\u53d1\u5bc6\u94a5\uff08<strong>sshpass<\/strong>,expect\u81ea\u52a8\u5316\u5b9e\u73b0\uff09<br \/>\n\u2464.ansible\u8f6f\u4ef6\u5b89\u88c5\uff08\u53ef\u4ee5\u81ea\u52a8\u5316\u5b9e\u73b0\uff09<br \/>\n\u2465.\u7f51\u7edc\u670d\u52a1\u81ea\u52a8\u5316\u5b89\u88c5\uff08ansible\u5b9e\u73b0\uff09<br \/>\n(\u642d\u5efayum\u4ed3\u5e93\uff0c\u5b9a\u5236rpm\u5305\uff09<\/p>\n<h2><span id=\\\"22_ansible\\\">2.2 ansible\u8f6f\u4ef6\u7279\u70b9\u6982\u8ff0<\/span><\/h2>\n<p>l \u4e0d\u9700\u8981\u5355\u72ec\u5b89\u88c5\u5ba2\u6237\u7aef\uff08no agents\uff09\uff0c\u57fa\u4e8e\u7cfb\u7edf\u81ea\u5e26\u7684sshd\u670d\u52a1\uff0csshd\u5c31\u76f8\u5f53\u4e8eansible\u7684\u5ba2\u6237\u7aef<br \/>\nl \u4e0d\u9700\u8981\u670d\u52a1\u7aef\uff08no sever\uff09<br \/>\nl \u9700\u8981\u4f9d\u9760\u5927\u91cf\u7684\u6a21\u5757\u5b9e\u73b0\u6279\u91cf\u7ba1\u7406<br \/>\nl \u914d\u7f6e\u6587\u4ef6 \/etc\/ansible\/ansible.cfg (\u524d\u671f\u4e0d\u7528\u914d\u7f6e)<\/p>\n<div>\n<p class=\\\"a3\\\"><strong>ansible<\/strong><strong>\u8f6f\u4ef6\u76f8\u5173\u53c2\u8003\u94fe\u63a5\u4fe1\u606f<\/strong><\/p>\n<p class=\\\"a3\\\">http:\/\/docs.ansible.com\/ansible\/intro_installation.html<\/p>\n<p class=\\\"a3\\\">http:\/\/www.ansible.com.cn\/<\/p>\n<p class=\\\"a3\\\">http:\/\/docs.ansible.com\/modules_by_category.html<\/p>\n<p class=\\\"a3\\\">http:\/\/www.ansible.cn\/docs\/<\/p>\n<\/div>\n<h3><span id=\\\"221_ansible\\\">2.2.1 ansible\u8f6f\u4ef6\u4e2d\u67e5\u770b\u6a21\u5757\u76f8\u5173\u4fe1\u606f\u65b9\u6cd5<\/span><\/h3>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# ansible-doc -l\n\u5217\u51fa\u6240\u6709\u6a21\u5757\u4fe1\u606f\n[root@m01 ~]# ansible-doc -s cron\n\u53c2\u770b\u6307\u5b9a\u6a21\u5757\u7684\u5e2e\u52a9<\/pre>\n<\/div>\n<\/div>\n<h2><span id=\\\"23_ansible\\\">2.3 \u90e8\u7f72ansible\u8f6f\u4ef6<\/span><\/h2>\n<h3><span id=\\\"231_sshkey\\\">2.3.1 \u7b2c\u4e00\u4e2a\u91cc\u91cc\u7a0b\u7891\uff1a\u90e8\u7f72ssh+key\u514d\u5bc6\u7801\u767b\u5f55\u65b9\u5f0f<\/span><\/h3>\n<p><a href=\\\"https:\/\/clsn.io\/wp-content\/themes\/clsn-003\/inc\/go.php?url=file:\/\/\/I:\/Desktop\/%E8%AF%BE%E5%90%8E%E6%80%BB%E7%BB%93\/%E7%AC%AC10%E5%91%A8\/day44,45-ansible%E6%9C%8D%E5%8A%A1%E9%83%A8%E7%BD%B2-ssh+key%20%E5%AF%86%E9%92%A5%E5%88%86%E5%8F%91+ansible%E6%A8%A1%E5%9D%97%E8%AF%B4%E6%98%8E.docx#_ssh+key%E5%AE%9E%E7%8E%B0%E5%9F%BA%E4%BA%8E%E5%AF%86%E9%92%A5%E8%BF%9E%E6%8E%A5\\\">\u53c2\u89c1\u7b2c\u4e00\u7ae0\u5185\u5bb9<i class=\\\"be be-anchor\\\"><\/i><\/a><\/p>\n<h3><span id=\\\"232_ansible\\\">2.3.2 \u7b2c\u4e8c\u4e2a\u91cc\u7a0b\u7891\uff1a\u88ab\u7ba1\u7406\u7aef\u5b89\u88c5ansible\u76f8\u5173\u7ba1\u7406\u8f6f\u4ef6<\/span><\/h3>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# yum install libselinux-python -y<\/pre>\n<\/div>\n<\/div>\n<p>\u8be5\u8f6f\u4ef6\u662f\u7528\u6765\u5bf9selinux\u8fdb\u884c\u8bbe\u7f6e\u7684\uff0c\u786e\u4fdd\u5373\u4f7f\u670d\u52a1\u5668selinux\u670d\u52a1\u5f00\u542f\uff0c\u4f9d\u65e7\u80fd\u591f\u901a\u8fc7ansible \u8f6f\u4ef6\u7ba1\u7406\u3002<\/p>\n<h3><span id=\\\"233_ansiblehosts\\\">2.3.3 \u7b2c\u4e09\u4e2a\u91cc\u7a0b\u7891\uff1a\u7ba1\u7406\u7aef\u5b89\u88c5ansible\u8f6f\u4ef6\uff0c\u914d\u7f6ehosts\u6587\u4ef6<\/span><\/h3>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# yum install ansible -y<\/pre>\n<\/div>\n<\/div>\n<p>\u8f6f\u4ef6\u5b89\u88c5\u5b8c\u6210\uff0c\u8fdb\u884c\u4fee\u6539ansible\u4e0b\u7684hosts\u6587\u4ef6\uff0c<strong>\u6ce8\u610f\u6587\u4ef6\u7684\u8def\u5f84<\/strong><\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# vim \/etc\/ansible\/hosts\n[clsn]\n172.16.1.31\n172.16.1.41\n172.16.1.8<\/pre>\n<\/div>\n<\/div>\n<p><strong>\u6587\u4ef6\u4fe1\u606f\u8bf4\u660e\uff1a<\/strong><br \/>\n1.\u4e2d\u62ec\u53f7\u4e2d\u7684\u540d\u5b57\u4ee3\u8868\u7ec4\u540d<br \/>\n2.\u4e3b\u673a(hosts)\u90e8\u5206\u53ef\u4ee5\u4f7f\u7528\u57df\u540d\u3001\u4e3b\u673a\u540d\u3001IP\u5730\u5740\u8868\u793a\uff1b\u4e00\u822c\u6b64\u7c7b\u914d\u7f6e\u4e2d\u591a\u4f7f\u7528IP\u5730\u5740\uff1b<br \/>\n3\uff0e\u7ec4\u540d\u4e0b\u7684\u4e3b\u673a\u5730\u5740\u5c31\u662fansible\u53ef\u4ee5\u7ba1\u7406\u7684\u5730\u5740<br \/>\n<strong>\u81f3\u6b64ansible\u00a0<\/strong><strong>\u670d\u52a1\u5c31\u90e8\u7f72\u5b8c\u6210\u00a0<\/strong><strong>\u2191<\/strong><\/p>\n<h2><span id=\\\"24_ansible\\\">2.4 \u67e5\u770bansible\u8f6f\u4ef6\u76f8\u5173\u4fe1\u606f<\/span><\/h2>\n<h3><span id=\\\"241_ansible\\\">2.4.1 ansible\u5b9e\u8df5\u90e8\u7f72\u5730\u5740\u89c4\u5212<\/span><\/h3>\n<table border=\\\"1\\\" cellspacing=\\\"0\\\" cellpadding=\\\"0\\\">\n<tbody>\n<tr>\n<td valign=\\\"top\\\" width=\\\"174\\\">\n<p align=\\\"center\\\"><strong>\u670d\u52a1\u5668\u540d\u79f0<\/strong><\/p>\n<\/td>\n<td valign=\\\"top\\\" width=\\\"174\\\">\n<p align=\\\"center\\\"><strong>\u7f51\u5361eth0<\/strong><\/p>\n<\/td>\n<td valign=\\\"top\\\" width=\\\"174\\\">\n<p align=\\\"center\\\"><strong>\u7f51\u5361eth1<\/strong><\/p>\n<\/td>\n<td valign=\\\"top\\\" width=\\\"174\\\">\n<p align=\\\"center\\\"><strong>\u7528\u9014\u8bf4\u660e<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\\\"top\\\" width=\\\"174\\\">m01<\/td>\n<td valign=\\\"top\\\" width=\\\"174\\\">10.0.0.61<\/td>\n<td valign=\\\"top\\\" width=\\\"174\\\">172.16.1.61<\/td>\n<td valign=\\\"top\\\" width=\\\"174\\\">\u6279\u91cf\u7ba1\u7406\u670d\u52a1\u5668<\/td>\n<\/tr>\n<tr>\n<td valign=\\\"top\\\" width=\\\"174\\\">nfs01<\/td>\n<td valign=\\\"top\\\" width=\\\"174\\\">10.0.0.31<\/td>\n<td valign=\\\"top\\\" width=\\\"174\\\">172.16.1.31<\/td>\n<td valign=\\\"top\\\" width=\\\"174\\\">nfs\u5171\u4eab\u50a8\u5b58\u670d\u52a1\u5668<\/td>\n<\/tr>\n<tr>\n<td valign=\\\"top\\\" width=\\\"174\\\">backup<\/td>\n<td valign=\\\"top\\\" width=\\\"174\\\">10.0.0.41<\/td>\n<td valign=\\\"top\\\" width=\\\"174\\\">172.16.1.41<\/td>\n<td valign=\\\"top\\\" width=\\\"174\\\">rsync\u5907\u4efd\u670d\u52a1\u5668<\/td>\n<\/tr>\n<tr>\n<td valign=\\\"top\\\" width=\\\"174\\\">web01<\/td>\n<td valign=\\\"top\\\" width=\\\"174\\\">10.0.0.8<\/td>\n<td valign=\\\"top\\\" width=\\\"174\\\">172.16.1.8<\/td>\n<td valign=\\\"top\\\" width=\\\"174\\\">web\u670d\u52a1\u5668<\/td>\n<\/tr>\n<tr>\n<td colspan=\\\"4\\\" valign=\\\"top\\\" width=\\\"697\\\">\u8bf4\u660e\uff1a\u65e0\u7279\u6b8a\u60c5\u51b5\uff0c\u5b50\u7f51\u63a9\u7801\u4e3a255.255.255.0<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3><span id=\\\"242_ansible\\\">2.4.2 ansible\u8f6f\u4ef6\u7684\u7248\u672c\u4fe1\u606f<\/span><\/h3>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# ansible --version\nansible 2.3.2.0\n  config file = \/etc\/ansible\/ansible.cfg\n  configured module search path = Default w\/o overrides\n  python version = 2.6.6 (r266:84292, Aug 18 2016, 15:13:37) [GCC 4.4.7 20120313 (Red Hat 4.4.7-17)]<\/pre>\n<\/div>\n<\/div>\n<h3><span id=\\\"243\\\">2.4.3 \u8f6f\u4ef6\u76ee\u524d\u4e3b\u8981\u4f1a\u7528\u5230\u7684\u6587\u4ef6<\/span><\/h3>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# rpm -ql ansible\n\/etc\/ansible\/hosts            #\u5b9a\u4e49anisble\u8f6f\u4ef6\u53ef\u4ee5\u7ba1\u7406\u7684\u4e3b\u673a\u4fe1\u606f\n\/usr\/bin\/ansible              #ansible\u6267\u884c\u547d\u4ee4\n\/usr\/bin\/ansible-playboot   # ansible\u6267\u884c\u5267\u672c\u547d\u4ee4<\/pre>\n<\/div>\n<\/div>\n<h3><span id=\\\"244_etcansible\\\">2.4.4 \/etc\/ansible\u4e0b\u7684\u6587\u4ef6<\/span><\/h3>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ansible]# ll\ntotal 28\n-rw-r--r-- 1 root root 18066 Sep  6 06:38 ansible.cfg  #ansible\u914d\u7f6e\u6587\u4ef6\n-rw-r--r-- 1 root root  1016 Sep  6 06:38 hosts       #\u5b9a\u4e49ansible\u53ef\u4ee5\u7ba1\u7406\u7684\u4e3b\u673a\u4fe1\u606f\ndrwxr-xr-x 2 root root  4096 Sep  6 06:38 roles   #\u4e3b\u8981\u5728\u81ea\u52a8\u5316\u7684\u65f6\u5019\u90e8\u7f72\u591a\u53f0\u4e3b\u673a\u65f6\u4f7f\u7528<\/pre>\n<\/div>\n<\/div>\n<h2><span id=\\\"25_ansible\\\">2.5 ansible\u8f6f\u4ef6\u7684\u4f7f\u7528\/\u53c2\u6570<\/span><\/h2>\n<h3><span id=\\\"251_ansible\\\">2.5.1 ansible\u8fdc\u7a0b\u6279\u91cf\u6267\u884c\u547d\u4ee4<\/span><\/h3>\n<p><strong>\u8bed\u6cd5\uff1a<\/strong><\/p>\n<div>\n<div class=\\\"cnblogs_Highlighter\\\">\n<pre class=\\\"brush:bash;gutter:true;\\\">    ansible clsn -a \\\"uptime\\\"\n   ansible clsn -m command -a \\\"uptime\\\"\n   ansible \u5b9a\u4e49\u7684\u7ec4\/\u5355\u4e2aip\/\u57df\u540d\/all  -m command -a \\\"uptime\\\"<\/pre>\n<\/div>\n<p class=\\\"ac\\\"><strong>\u8bf4\u660e\uff1a<\/strong>-m \u6307\u5b9a\u4f7f\u7528\u7684\u6a21\u5757<\/p>\n<p class=\\\"ac\\\">\u00a0\u00a0 \u00a0\u00a0\u00a0-a \u6307\u5b9a\u4f7f\u7528\u6a21\u5757\u4e2d\u76f8\u5e94\u7684\u547d\u4ee4\u53c2\u6570<\/p>\n<p class=\\\"ac\\\">\u00a0\u00a0 \u00a0 \u00a0\u547d\u4ee4\u53c2\u6570\u53ea\u80fd\u662f\u57fa\u672c\u547d\u4ee4\uff0c\u5e76\u4e0d\u652f\u6301\u7ba1\u9053\u64cd\u4f5c<\/p>\n<p class=\\\"ac\\\">\u00a0\u00a0\u00a0\u00a0\u00a0 all \u00a0\u00a0\u4e3ahosts\u6587\u4ef6\u4e2d\u7684\u7ec4\u5168\u90e8\u7ba1\u7406<\/p>\n<\/div>\n<p><img src=\\\"https:\/\/clsn.io\/wp-content\/uploads\/2018\/03\/1190037-20171027153653242-314383760.png\\\" alt=\\\"ansible\u670d\u52a1\u90e8\u7f72\u4e0e\u4f7f\u7528\\\" data-original=\\\"https:\/\/clsn.io\/wp-content\/uploads\/2018\/03\/1190037-20171027153653242-314383760.png\\\" \/><\/p>\n<p class=\\\"a9\\\" align=\\\"center\\\">\u56fe2-1 ansible\u547d\u4ee4\u8bed\u6cd5\u683c\u5f0f\u793a\u610f\u56fe<\/p>\n<h3><span id=\\\"252_ansible\\\">2.5.2 \u672a\u5206\u53d1\u516c\u94a5\u5982\u4f55\u5b9e\u73b0\u8fdc\u7a0b\u7ba1\u7406\u4e3b\u673a\u53ca\u6307\u5b9aansible\u7aef\u53e3\u4fe1\u606f<\/span><\/h3>\n<p>\u914d\u7f6ehosts\u6587\u4ef6\u65f6\u914d\u7f6e\u4e0a\u5bc6\u7801<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>vim \/etc\/ansible\/hosts\n[clsn]\n172.16.1.31:52113  ansible_ssh_user=root ansible_ssh_pass=123456\n172.16.1.41\n172.16.1.8<\/pre>\n<\/div>\n<p class=\\\"ac\\\">IP:\u7aef\u53e3 \u7528\u6237 \u5bc6\u7801<\/p>\n<div class=\\\"cnblogs_Highlighter\\\">\n<pre class=\\\"brush:bash;gutter:true;\\\">[znix]\nwww.znix.top:52113 ansible_ssh_user=znix<\/pre>\n<\/div>\n<p class=\\\"ac\\\">\u6307\u5b9a\u7aef\u53e3 \u7528\u6237\u540d<\/p>\n<\/div>\n<p>\u6d4b\u8bd5\u4fee\u6539\u7aef\u53e3\u540e\u7684\u7ed3\u679c \u4f7f\u7528ping \u6a21\u5757<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# ansible znix -m ping\nwww.znix.top | SUCCESS =&gt; {\n    \\\"changed\\\": false,\n    \\\"ping\\\": \\\"pong\\\"\n}<\/pre>\n<\/div>\n<\/div>\n<h2><span id=\\\"26_ansible\\\">2.6 ansible\u8f6f\u4ef6\u5e38\u7528\u53c2\u6570\u8868<\/span><\/h2>\n<table border=\\\"1\\\" cellspacing=\\\"0\\\" cellpadding=\\\"0\\\">\n<tbody>\n<tr>\n<td valign=\\\"top\\\" width=\\\"170\\\">\n<p align=\\\"center\\\"><strong>\u547d\u4ee4\u53c2\u6570<\/strong><\/p>\n<\/td>\n<td valign=\\\"top\\\" width=\\\"527\\\">\n<p align=\\\"center\\\"><strong>\u53c2\u6570\u8bf4\u660e<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td width=\\\"170\\\">-m\u00a0 MODULE_NAME<\/td>\n<td width=\\\"527\\\">-module-name=MODULE_NAME<br \/>\nmodule name to execute (default=command)<br \/>\n\u76f8\u5e94\u540d\u79f0\u7684\u6a21\u5757\u88ab\u6267\u884c\uff08\u9ed8\u8ba4\u6a21\u5757\u4e3acommand );<br \/>\n-m\u540e\u8fb9\u662f\u6a21\u5757\u7684\u540d\u5b87<\/td>\n<\/tr>\n<tr>\n<td width=\\\"170\\\">-a MODULE_ARGS<\/td>\n<td width=\\\"527\\\">-args=MODULE_ARGS<br \/>\nmodule arguments<br \/>\n\u6a21\u5757\u53c2\u6570\u4fe1\u606f<br \/>\n-a\u540e\u9762\u662f\u8981\u6267\u884c\u7684\u547d\u4ee4\uff1b\u4e5f\u53ef\u4ee5\u5199\u4e2aip ,\u9488\u5bf9\u53f0\u673a\u5668\u6765\u6267\u884c\u547d\u4ee4<\/td>\n<\/tr>\n<tr>\n<td width=\\\"170\\\">-C, -checks<\/td>\n<td width=\\\"527\\\">don\\&#8217;t make any changes, instead, try to predict some of the changes that may<br \/>\noccurs<br \/>\n\u4e0d\u505a\u4efb\u4f55\u6539\u53d8\uff1b\u53cd\u800c\uff0c\u53ea\u662f\u5c1d\u8bd5\u9884\u8a00\u4e9b\u53ef\u80fd\u51fa\u73b0\u7684\u6539\u53d8<\/td>\n<\/tr>\n<tr>\n<td width=\\\"170\\\">-syntax-checks<\/td>\n<td width=\\\"527\\\">perform a syntax check on the playbook, but do not execute ii*&gt;<br \/>\n\u6267\u884c\u8bed\u6cd5\u68c0\u67e5\u5728\u5267\u672c\u4e0a\uff0c\u4f46\u662f\u5e76\u4e0d\u6267\u884c\u5267\u672c<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3><span id=\\\"261_ansible\\\">2.6.1 ansible\u547d\u4ee4\u6267\u884c\u7ed3\u679c\u8272\u5f69\u8bf4\u660e\uff1a<\/span><\/h3>\n<div>\n<p class=\\\"a3\\\">\u3000\u3000\u7eff\u8272\uff1a\u8868\u793a\u6ca1\u6709\u53d1\u751f\u4efb\u4f55\u6539\u53d8<\/p>\n<p class=\\\"a3\\\">\u3000\u3000\u7ea2\u8272\uff1a\u6267\u884c\u547d\u4ee4\u64cd\u4f5c\u51fa\u73b0\u5f02\u5e38<\/p>\n<p class=\\\"a3\\\">\u3000\u3000\u9ec4\u8272\uff1a\u6267\u884c\u547d\u4ee4\u540e\uff0c\u5bf9\u53d7\u63a7\u4e3b\u673a\u4ea7\u751f\u5f71\u54cd\uff0c\u53d1\u751f\u4e86\u914d\u7f6e\u6539\u53d8<\/p>\n<\/div>\n<h1><span id=\\\"3_ansible\\\">\u7b2c3\u7ae0 ansible\u4e2d\u7684\u6a21\u5757\u8bf4\u660e<\/span><\/h1>\n<h2><span id=\\\"31_ping\\\">3.1 ping \u6a21\u5757\uff1a\u6d4b\u8bd5\u8fde\u901a\u6027<\/span><\/h2>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# ansible all -m ping\n172.16.1.8 | SUCCESS =&gt; {\n    \\\"changed\\\": false,\n    \\\"ping\\\": \\\"pong\\\"\n}\n172.16.1.41 | SUCCESS =&gt; {\n    \\\"changed\\\": false,\n    \\\"ping\\\": \\\"pong\\\"\n}\n172.16.1.31 | SUCCESS =&gt; {\n    \\\"changed\\\": false,\n    \\\"ping\\\": \\\"pong\\\"\n}<\/pre>\n<\/div>\n<\/div>\n<p>\u8fde\u63a5\u6b63\u5e38\u8fd4\u56de pong \u901a\u8fc7\u5e2e\u52a9\u4fe1\u606f\u53ef\u4ee5\u83b7\u5f97 \u2193<\/p>\n<div>\n<p class=\\\"a3\\\">\u901a\u8fc7 ansible-doc -v ping \u53ef\u4ee5\u83b7\u5f97\u8be5\u6a21\u5757\u7684\u8bf4\u660e<\/p>\n<p class=\\\"a3\\\">ansible-doc -s file\u00a0\u00a0 \u53c2\u770b\u6a21\u5757\u7684\u5177\u4f53\u4fe1\u606f<\/p>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# ansible-doc -v ping\nUsing \/etc\/ansible\/ansible.cfg as config file\n&gt; PING    (\/usr\/lib\/python2.6\/site-packages\/ansible\/modules\/system\/ping.py)\n  A trivial test module, this module always returns `pong\\' on successful contact. It does not make sense in playbooks, but it is useful from `\/usr\/bin\/ansible\\' to verify the ability to login and that a usable  python is configured. This is NOT ICMP ping, this is just a trivial test module.<\/pre>\n<\/div>\n<\/div>\n<h2><span id=\\\"32_command\\\">3.2 command \u6a21\u5757 \u9ed8\u8ba4\u6a21\u5757<\/span><\/h2>\n<h3><span id=\\\"321_command\\\">3.2.1 command\u547d\u4ee4\u5e38\u7528\u53c2\u6570\u8bf4\u660e<\/span><\/h3>\n<table border=\\\"1\\\" cellspacing=\\\"0\\\" cellpadding=\\\"0\\\">\n<tbody>\n<tr>\n<td valign=\\\"top\\\" width=\\\"160\\\">\n<p align=\\\"center\\\"><strong>\u53c2\u6570<\/strong><\/p>\n<\/td>\n<td valign=\\\"top\\\" width=\\\"537\\\">\n<p align=\\\"center\\\"><strong>\u53c2\u6570\u8bf4\u660e<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td width=\\\"160\\\">chdir<\/td>\n<td valign=\\\"top\\\" width=\\\"537\\\">\u5728\u6267\u884c\u547d\u4ee4\u4e4b\u524d\uff0c\u901a\u8fc7cd\u547d\u4ee4\u8fdb\u5165\u5230\u6307\u5b9a\u76ee\u5f55\u4e2d<br \/>\n# ansible clsn -m command -a \\&#8221;chdir=\/tmp ls\\&#8221;<\/td>\n<\/tr>\n<tr>\n<td width=\\\"160\\\">create<\/td>\n<td valign=\\\"top\\\" width=\\\"537\\\">\n<p align=\\\"center\\\">\u5b9a\u4e49\u4e00\u4e2a\u6587\u4ef6\u662f\u5426\u5b58\u5728\uff0c\u5982\u679c\u4e0d\u5b58\u5728\u8fd0\u884c\u76f8\u5e94\u547d\u4ee4\uff1b\u5982\u679c\u5b58\u5728\u8df3\u8fc7\u6b64\u6b65\u9aa4<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\\\"top\\\" width=\\\"160\\\">executable<\/td>\n<td valign=\\\"top\\\" width=\\\"537\\\">\u6539\u53d8shell\u4f7f\u7528command\u8fdb\u884c\u6267\u884c\uff0c\u5e76\u4e14\u6267\u884c\u65f6\u8981\u4f7f\u7528\u7edd\u5bf9\u8def\u5f84<\/td>\n<\/tr>\n<tr>\n<td valign=\\\"top\\\" width=\\\"160\\\">free_form<\/td>\n<td valign=\\\"top\\\" width=\\\"537\\\">\u547d\u4ee4\u6a21\u5757\u91c7\u7528\u81ea\u7531\u5f62\u5f0f\u547d\u4ee4\u8fd0\u884c\uff1b\u5373\u53ef\u4ee5\u8f93\u5165\u4efb\u610flinux\u547d\u4ee4<\/td>\n<\/tr>\n<tr>\n<td valign=\\\"top\\\" width=\\\"160\\\">removes<\/td>\n<td valign=\\\"top\\\" width=\\\"537\\\">\u5b9a\u4e49\u4e00\u4e2a\u6587\u4ef6\u662f\u5426\u5b58\u5728\uff0c\u5982\u679c\u5b58\u5728\u8fd0\u884c\u76f8\u5e94\u547d\u4ee4\uff1b\u5982\u679c\u4e0d\u5b58\u5728\u8df3\u8fc7\u6b64\u6b65\u9aa4<\/td>\n<\/tr>\n<tr>\n<td valign=\\\"top\\\" width=\\\"160\\\">warn<br \/>\n(added in 1.8)<\/td>\n<td valign=\\\"top\\\" width=\\\"537\\\">\u5982\u679cansible\u914d\u7f6e\u6587\u4ef6\u4e2d\u5b9a\u4e49\u4e86\u547d\u4ee4\u8b66\u544a\uff0c\u5982\u679c\u53c2\u6570\u8bbe\u7f6e\u4e86no\/false\uff0c\u5c06\u4e0d\u4f1a\u8b66\u544a\u6b64\u884c\u547d\u4ee4<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u4e0d\u6307\u5b9a\u6a21\u5757\u7684\u65f6\u5019\u9ed8\u8ba4\u4f7f\u7528\u7684\u6a21\u5757\u5c31\u662fcommand\u00a0 \u2193<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# ansible all -a \\\"date\\\"\n172.16.1.41 | SUCCESS | rc=0 &gt;&gt;\nThu Oct 19 17:12:15 CST 2017\n172.16.1.31 | SUCCESS | rc=0 &gt;&gt;\nThu Oct 19 17:12:15 CST 2017\n172.16.1.8 | SUCCESS | rc=0 &gt;&gt;\nThu Oct 19 17:12:15 CST 2017<\/pre>\n<\/div>\n<\/div>\n<p>\u4f7f\u7528ansible\u81ea\u5e26\u6a21\u5757\u6267\u884c\u547d\u4ee4 \u5982\u679c\u8981\u7528 &gt; &lt; | &amp; \\&#8217; \\&#8217; \u4f7f\u7528shell\u6a21\u5757<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# ansible all -m command -a \\\"date\\\"\n172.16.1.8 | SUCCESS | rc=0 &gt;&gt;\nThu Oct 19 17:12:27 CST 2017\n172.16.1.31 | SUCCESS | rc=0 &gt;&gt;\nThu Oct 19 17:12:28 CST 2017\n172.16.1.41 | SUCCESS | rc=0 &gt;&gt;\nThu Oct 19 17:12:27 CST 2017<\/pre>\n<\/div>\n<\/div>\n<p>chdir\u53c2\u6570\u7684\u4f7f\u7528\uff1a<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# ansible clsn -m command -a \\\"chdir=\/tmp pwd\\\"\n172.16.1.31 | SUCCESS | rc=0 &gt;&gt;\n\/tmp\n172.16.1.8 | SUCCESS | rc=0 &gt;&gt;\n\/tmp\n172.16.1.41 | SUCCESS | rc=0 &gt;&gt;\n\/tmp<\/pre>\n<\/div>\n<\/div>\n<p>creates \u6587\u4ef6\u662f\u5426\u5b58\u5728\uff0c\u4e0d\u5b58\u5728\u5c31\u6267\u884c\u547d\u4ee4<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# ansible clsn -m command -a \\\"creates=\/etc\/hosts date\\\"\n172.16.1.31 | SUCCESS | rc=0 &gt;&gt;\nskipped, since \/etc\/hosts exists<\/pre>\n<\/div>\n<\/div>\n<p>removes \u6587\u4ef6\u662f\u5426\u5b58\u5728\uff0c\u4e0d\u5b58\u5728\u5c31\u4e0d\u6267\u884c\u547d\u4ee4\uff0c<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# ansible clsn -m command -a \\\"removes=\/etc\/hosts date\\\"\n172.16.1.31 | SUCCESS | rc=0 &gt;&gt;\nFri Oct 20 13:32:40 CST 2017<\/pre>\n<\/div>\n<\/div>\n<h2><span id=\\\"33_shell\\\">3.3 shell\u6a21\u5757\u00a0\u4e07\u80fd\u6a21\u5757<\/span><\/h2>\n<p>\u6267\u884clinux\u547d\u4ee4\u65f6\u53ef\u4ee5\u7528<br \/>\n\u8fdc\u7a0b\u8282\u70b9\u6267\u884c\u547d\u4ee4<br \/>\n<strong>\u8bf4\u660e\uff1a<\/strong>\u00a0shell \u6a21\u5757\u5728\u8fdc\u7a0b\u6267\u884c\u811a\u672c\u65f6\uff0c\u8fdc\u7a0b\u4e3b\u673a\u4e0a\u4e00\u5b9a\u8981\u6709\u76f8\u5e94\u7684\u811a\u672c<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# ansible clsn -m shell -a \\\"\/bin\/sh \/server\/scripts\/ssh-key.sh\\\"\n172.16.1.31 | SUCCESS | rc=0 &gt;&gt;\nfenfa 172.16.1.31 [  OK  ]\nfenfa 172.16.1.41 [  OK  ]\nfenfa 172.16.1.8 [  OK  ]<\/pre>\n<\/div>\n<\/div>\n<h2><span id=\\\"34_script\\\">3.4 script \u6a21\u5757 \u6267\u884c\u811a\u672c\u6a21\u5757<\/span><\/h2>\n<p>\u5728\u672c\u5730\u6267\u884c\u811a\u672c\u65f6\uff0c\u5c06\u811a\u672c\u4e2d\u7684\u5185\u5bb9\u4f20\u8f93\u5230\u8fdc\u7a0b\u8282\u70b9\u4e0a\u8fd0\u884c<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# ansible all -m script -a \\\"\/server\/scripts\/free.sh\\\"\n172.16.1.8 | SUCCESS =&gt; {\n    \\\"changed\\\": true,\n    \\\"rc\\\": 0,\n    \\\"stderr\\\": \\\"Shared connection to 172.16.1.8 closed.\\\\r\\\\n\\\",\n    \\\"stdout\\\": \\\"             total       used       free     shared    buffers     cached\\\\r\\\\nMem:          474M       377M        97M       532K        54M       202M\\\\r\\\\n-\/+ buffers\/cache:       120M       354M\\\\r\\\\nSwap:         767M         0B       767M\\\\r\\\\n\\\",\n    \\\"stdout_lines\\\": [\n        \\\"             total       used       free     shared    buffers     cached\\\",\n        \\\"Mem:          474M       377M        97M       532K        54M       202M\\\",\n        \\\"-\/+ buffers\/cache:       120M       354M\\\",\n        \\\"Swap:         767M         0B       767M\\\"\n    ]\n}<\/pre>\n<\/div>\n<\/div>\n<p><strong>\u8bf4\u660e\uff1a<\/strong><\/p>\n<div>\n<p class=\\\"a3\\\">\u4f7f\u7528scripts\u6a21\u5757\uff0c\u4e0d\u7528\u5c06\u811a\u672c\u4f20\u8f93\u5230\u8fdc\u7a0b\u8282\u70b9\uff0c\u811a\u672c\u672c\u8eab\u4e0d\u7528\u8fdb\u884c\u6388\u6743\uff0c\u5373\u53ef\u5229\u7528script\u6a21\u5757\u6267\u884c\u3002\u76f4\u63a5\u6267\u884c\u811a\u672c\u5373\u53ef\uff0c\u4e0d\u9700\u8981\u4f7f\u7528sh<\/p>\n<\/div>\n<h2><span id=\\\"35_copy\\\">3.5 copy\u6a21\u5757 \u628a\u672c\u5730\u6587\u4ef6\u53d1\u9001\u5230\u8fdc\u7aef<\/span><\/h2>\n<h3><span id=\\\"351_copy\\\">3.5.1 copy\u6a21\u5757\u5e38\u7528\u53c2\u6570<\/span><\/h3>\n<table border=\\\"1\\\" cellspacing=\\\"0\\\" cellpadding=\\\"0\\\">\n<tbody>\n<tr>\n<td width=\\\"160\\\">\n<p align=\\\"center\\\"><strong>\u9009\u9879\u53c2\u6570<\/strong><\/p>\n<\/td>\n<td width=\\\"537\\\">\n<p align=\\\"center\\\"><strong>\u9009\u9879\u8bf4\u660e<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td width=\\\"160\\\">backup(\u91cd\u8981\u53c2\u6570\uff09<\/td>\n<td width=\\\"537\\\">\u5728\u8986\u76d6\u8fdc\u7aef\u670d\u52a1\u5668\u6587\u4ef6\u4e4b\u524d\uff0c\u5c06\u8fdc\u7aef\u670d\u52a1\u5668\u6e90\u6587\u4ef6\u5907\u4efd\uff0c\u5907\u4efd\u6587\u4ef6\u5305\u542b\u65f6\u95f4\u4fe1\u606f\u3002\u6709\u4e24\u4e2a\u9009\u9879\uff1ayes|no<\/td>\n<\/tr>\n<tr>\n<td width=\\\"160\\\">content<\/td>\n<td width=\\\"537\\\">\u7528\u4e8e\u66ff\u4ee3\\&#8221;src\u201d,\u53ef\u4ee5\u76f4\u63a5\u8bbe\u5b9a\u6307\u5b9a\u6587\u4ef6\u7684\u503c<\/td>\n<\/tr>\n<tr>\n<td width=\\\"160\\\">dest<\/td>\n<td width=\\\"537\\\">\u5fc5\u9009\u9879\u3002\u8981\u5c06\u6e90\u6587\u4ef6\u590d\u5236\u5230\u7684\u8fdc\u7a0b\u4e3b\u673a\u7684\u7edd\u5bf9\u8def\u5f84\uff0c\u5982\u679c\u6e90\u6587\u4ef6\u662f\u4e00\u4e2a\u76ee\u5f55\uff0c\u90a3\u4e48\u8be5\u8def\u5f84\u4e5f\u5fc5\u987b\u662f\u4e2a\u76ee\u5f55<\/td>\n<\/tr>\n<tr>\n<td width=\\\"160\\\">directory_mode<\/td>\n<td width=\\\"537\\\">\u9012\u5f52\u8bbe\u5b9a\u76ee\u5f55\u7684\u6743\u9650\uff0c\u9ed8\u8ba4\u4e3a\u7cfb\u7edf\u9ed8\u8ba4\u6743\u9650<\/td>\n<\/tr>\n<tr>\n<td width=\\\"160\\\">forces<\/td>\n<td width=\\\"537\\\">\u5982\u679c\u76ee\u6807\u4e3b\u673a\u5305\u542b\u8be5\u6587\u4ef6\uff0c\u4f46\u5185\u5bb9\u4e0d\u540c\uff0c\u5982\u679c\u8bbe\u7f6e\u4e3ayes,\u5219\u5f3a\u5236\u8986\u76d6\u3002<br \/>\n\u5982\u679c\u4e3ano,\u5219\u53ea\u6709\u5f53\u76ee\u6807\u4e3b\u673a\u7684\u76ee\u6807\u4f4d\u7f6e\u4e0d\u5b58\u5728\u8be5\u6587\u4ef6\u65f6\uff0c\u624d\u590d\u5236\u3002\u9ed8\u8ba4\u4e3ayes\u3002<strong>\u522b\u540d\uff1a<\/strong><strong>thirsty<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\\\"160\\\">others<\/td>\n<td width=\\\"537\\\">\u6240\u6709\u7684file\u6a21\u5757\u91cc\u7684\u9009\u9879\u90fd\u53ef\u4ee5\u5728\u8fd9\u91cc\u4f7f\u7528<\/td>\n<\/tr>\n<tr>\n<td width=\\\"160\\\">src<\/td>\n<td width=\\\"537\\\">\u88ab\u590d\u5236\u5230\u8fdc\u7a0b\u4e3b\u673a\u7684\u672c\u5730\u6587\u4ef6\uff0c\u53ef\u4ee5\u662f\u7edd\u5bf9\u8def\u5f84\uff0c\u4e5f\u53ef\u4ee5\u662f\u76f8\u5bf9\u8def\u5f84\u3002\u5982\u679c\u8def\u5f84\u662f\u4e00\u4e2a\u76ee\u5f55\uff0c\u5b83\u5c06\u9012\u5f52\u590d\u5236\u3002\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u5982\u679c\u8def\u5f84\u4f7f\u7528\\&#8221;\/\\&#8221;\u6765\u7ed3\u5c3e\uff0c\u5219\u53ea\u590d\u5236\u76ee\u5f55\u91cc\u7684\u5185\u5bb9\uff0c\u5982\u679c\u6ca1\u6709\u4f7f\u7528\\&#8221;\/\\&#8221;\u6765\u7ed3\u5c3e\uff0c\u5219\u5305\u542b\u76ee\u5f55\u5728\u5185\u7684\u6574\u4e2a\u5185\u5bb9\u5168\u90e8\u590d\u5236\uff0c\u7c7b\u4f3c\u4e8ersync\u3002<\/td>\n<\/tr>\n<tr>\n<td valign=\\\"top\\\" width=\\\"160\\\">mode<\/td>\n<td valign=\\\"top\\\" width=\\\"537\\\">\u5b9a\u4e49\u6587\u4ef6\u6216\u76ee\u5f55\u7684\u6743\u9650\uff1b\u6ce8\u610f\uff1a\u662f4\u4f4d<\/td>\n<\/tr>\n<tr>\n<td valign=\\\"top\\\" width=\\\"160\\\">owner<\/td>\n<td valign=\\\"top\\\" width=\\\"537\\\">\u4fee\u6539\u5c5e\u4e3b<\/td>\n<\/tr>\n<tr>\n<td valign=\\\"top\\\" width=\\\"160\\\">group<\/td>\n<td valign=\\\"top\\\" width=\\\"537\\\">\u4fee\u6539\u5c5e\u7ec4<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u8bf4\u660e\uff1a src\u548ccontent\u4e0d\u80fd\u540c\u65f6\u4f7f\u7528<\/p>\n<h3><span id=\\\"352_copy\\\">3.5.2 copy\u5e38\u7528\u547d\u4ee4\u53c2\u6570\u6d4b\u8bd5<\/span><\/h3>\n<p>\u4f7f\u7528copy \u6a21\u5757\uff0c\u5c06\/etc\/hosts \u6587\u4ef6 \u4f20\u8f93\u5230\u5404\u4e2a\u670d\u52a1\u5668\u9001\uff0c\u6743\u9650\u4fee\u6539\u4e3a0600 \u5c5e\u4e3b\u5c5e\u7ec4\u4e3aclsn<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# ansible clsn -m copy -a \\\"src=\/etc\/hosts dest=\/tmp\/ mode=0600 owner=clsn group=clsn \\\"\n172.16.1.8 | SUCCESS =&gt; {\n    \\\"changed\\\": true,\n    \\\"checksum\\\": \\\"b3c1ab140a1265cd7f6de9175a962988d93c629b\\\",\n    \\\"dest\\\": \\\"\/tmp\/hosts\\\",\n    \\\"gid\\\": 500,\n    \\\"group\\\": \\\"clsn\\\",\n    \\\"md5sum\\\": \\\"8c2b120b4742a806dcfdc8cfff6b6308\\\",\n    \\\"mode\\\": \\\"0600\\\",\n    \\\"owner\\\": \\\"clsn\\\",\n    \\\"size\\\": 357,\n    \\\"src\\\": \\\"\/root\/.ansible\/tmp\/ansible-tmp-1508410846.63-224022812989166\/source\\\",\n    \\\"state\\\": \\\"file\\\",\n    \\\"uid\\\": 500\n}\n\u2026\u2026<\/pre>\n<\/div>\n<\/div>\n<p>\u68c0\u67e5\u7ed3\u679c<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# ansible all -m shell -a \\\"ls -l \/tmp\/hosts\\\"\n172.16.1.31 | SUCCESS | rc=0 &gt;&gt;\n-rw------- 1 clsn clsn 357 Oct 19 19:00 \/tmp\/hosts\n172.16.1.41 | SUCCESS | rc=0 &gt;&gt;\n-rw------- 1 clsn clsn 357 Oct 11 15:12 \/tmp\/hosts\n172.16.1.8 | SUCCESS | rc=0 &gt;&gt;\n-rw------- 1 clsn clsn 357 Oct 19 19:00 \/tmp\/hosts<\/pre>\n<\/div>\n<\/div>\n<p>\u79fb\u52a8\u8fdc\u7a0b\u4e3b\u673a\u4e0a\u7684\u6587\u4ef6 remote_src=true \u53c2\u6570<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# ansible clsn -m copy -a \\\" src=\/server\/scripts\/ssh-key.sh  dest=\/tmp\/ remote_src=true\\\"\n172.16.1.41 | SUCCESS =&gt; {\n    \\\"changed\\\": true,\n    \\\"checksum\\\": \\\"d27bd683bd37e15992d2493b50c9410e0f667c9c\\\",\n    \\\"dest\\\": \\\"\/tmp\/ssh-key.sh\\\",\n    \\\"gid\\\": 0,\n    \\\"group\\\": \\\"root\\\",\n    \\\"md5sum\\\": \\\"dc88a3a419e3657bae7d3ef31925cbde\\\",\n    \\\"mode\\\": \\\"0644\\\",\n    \\\"owner\\\": \\\"root\\\",\n    \\\"size\\\": 397,\n    \\\"src\\\": \\\"\/server\/scripts\/ssh-key.sh\\\",\n    \\\"state\\\": \\\"file\\\",\n    \\\"uid\\\": 0\n}<\/pre>\n<\/div>\n<\/div>\n<p>\u5b9a\u4e49\u6587\u4ef6\u4e2d\u7684\u5185\u5bb9\u00a0<strong>content=clsnedu.com<\/strong>\u00a0\u9ed8\u8ba4\u6ca1\u6709\u6362\u884c<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# ansible clsn -m copy -a \\\"content=clsnedu.com dest=\/tmp\/clsn666.txt\\\"\n172.16.1.8 | SUCCESS =&gt; {\n    \\\"changed\\\": true,\n    \\\"checksum\\\": \\\"291694840cd9f9c464263ea9b13421d8e74b7d00\\\",\n    \\\"dest\\\": \\\"\/tmp\/clsn666.txt\\\",\n    \\\"gid\\\": 0,\n    \\\"group\\\": \\\"root\\\",\n    \\\"md5sum\\\": \\\"0a6bb40847793839366d0ac014616d69\\\",\n    \\\"mode\\\": \\\"0644\\\",\n    \\\"owner\\\": \\\"root\\\",\n    \\\"size\\\": 13,\n    \\\"src\\\": \\\"\/root\/.ansible\/tmp\/ansible-tmp-1508466752.1-24733562369639\/source\\\",\n    \\\"state\\\": \\\"file\\\",\n    \\\"uid\\\": 0\n}<\/pre>\n<\/div>\n<\/div>\n<h2><span id=\\\"36_file\\\">3.6 file\u6a21\u5757 \u8bbe\u7f6e\u6587\u4ef6\u5c5e\u6027<\/span><\/h2>\n<h3><span id=\\\"361_file\\\">3.6.1 file\u6a21\u5757\u5e38\u7528\u53c2\u6570<\/span><\/h3>\n<table border=\\\"1\\\" cellspacing=\\\"0\\\" cellpadding=\\\"0\\\">\n<tbody>\n<tr>\n<td width=\\\"170\\\">\n<p align=\\\"center\\\"><strong>\u53c2\u6570<\/strong><\/p>\n<\/td>\n<td colspan=\\\"2\\\" width=\\\"527\\\">\n<p align=\\\"center\\\"><strong>\u53c2\u6570\u8bf4\u660e<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td width=\\\"170\\\">owner<\/td>\n<td colspan=\\\"2\\\" width=\\\"527\\\">\u8bbe\u7f6e\u590d\u5236\u4f20\u8f93\u540e\u7684\u6570\u636e\u5c5e\u4e3b\u4fe1\u606f<\/td>\n<\/tr>\n<tr>\n<td width=\\\"170\\\">group<\/td>\n<td colspan=\\\"2\\\" width=\\\"527\\\">\u8bbe\u7f6e\u590d\u5236\u4f20\u8f93\u540e\u7684\u6570\u636e\u5c5e\u7ec4\u4fe1\u606f<\/td>\n<\/tr>\n<tr>\n<td width=\\\"170\\\">mode<\/td>\n<td colspan=\\\"2\\\" width=\\\"527\\\">\u8bbe\u7f6e\u6587\u4ef6\u6570\u636e\u6743\u9650\u4fe1\u606f<\/td>\n<\/tr>\n<tr>\n<td width=\\\"170\\\">dest<\/td>\n<td colspan=\\\"2\\\" width=\\\"527\\\">\u8981\u521b\u5efa\u7684\u6587\u4ef6\u6216\u76ee\u5f55\u547d\u4ee4\uff0c\u4ee5\u53ca\u8def\u5f84\u4fe1\u606f<\/td>\n<\/tr>\n<tr>\n<td width=\\\"170\\\">src<\/td>\n<td colspan=\\\"2\\\" width=\\\"527\\\">\u6307\u5b9a\u8981\u521b\u5efa\u8f6f\u94fe\u63a5\u7684\u6587\u4ef6\u4fe1\u606f<\/td>\n<\/tr>\n<tr>\n<td rowspan=\\\"7\\\" width=\\\"170\\\">state<\/td>\n<td colspan=\\\"2\\\" width=\\\"527\\\"><strong>state<\/strong><strong>\u53c2\u6570\u4fe1\u606f<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\\\"161\\\">directory<\/td>\n<td width=\\\"367\\\">\u521b\u5efa\u76ee\u5f55<\/td>\n<\/tr>\n<tr>\n<td width=\\\"161\\\">file<\/td>\n<td width=\\\"367\\\">\u521b\u5efa\u6587\u4ef6<\/td>\n<\/tr>\n<tr>\n<td width=\\\"161\\\">link<\/td>\n<td width=\\\"367\\\">\u521b\u5efa\u8f6f\u94fe\u63a5<\/td>\n<\/tr>\n<tr>\n<td width=\\\"161\\\">hard<\/td>\n<td width=\\\"367\\\">\u521b\u5efa\u51fa\u786c\u94fe\u63a5<\/td>\n<\/tr>\n<tr>\n<td width=\\\"161\\\">absent<\/td>\n<td width=\\\"367\\\">\u76ee\u5f55\u5c06\u88ab\u9012\u5f52\u5220\u9664\u4ee5\u53ca\u6587\u4ef6\uff0c\u800c\u94fe\u63a5\u5c06\u88ab\u53d6\u6d88\u94fe\u63a5<\/td>\n<\/tr>\n<tr>\n<td width=\\\"161\\\">touch<\/td>\n<td width=\\\"367\\\">\u521b\u5efa\u6587\u4ef6\uff1b\u5982\u679c\u8def\u5f84\u4e0d\u5b58\u5728\u5c06\u521b\u5efa\u4e00\u4e2a\u7a7a\u6587\u4ef6<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>\u6ce8\u610f\uff1a\u91cd\u547d\u540d\u548c\u521b\u5efa\u591a\u7ea7\u76ee\u5f55\u4e0d\u80fd\u540c\u65f6\u5b9e\u73b0<\/strong><\/p>\n<h3><span id=\\\"362\\\">3.6.2 \u5e38\u7528\u53c2\u6570\u6d4b\u8bd5<\/span><\/h3>\n<p>\u521b\u5efa\u76ee\u5f55<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# ansible clsn -m file -a \\\"dest=\/tmp\/clsn_dir state=directory\\\"\n172.16.1.41 | SUCCESS =&gt; {\n    \\\"changed\\\": true,\n    \\\"gid\\\": 0,\n    \\\"group\\\": \\\"root\\\",\n    \\\"mode\\\": \\\"0755\\\",\n    \\\"owner\\\": \\\"root\\\",\n    \\\"path\\\": \\\"\/tmp\/clsn_dir\\\",\n    \\\"size\\\": 4096,\n    \\\"state\\\": \\\"directory\\\",\n    \\\"uid\\\": 0\n}<\/pre>\n<\/div>\n<\/div>\n<p>\u521b\u5efa\u6587\u4ef6<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# ansible clsn -m file -a \\\"dest=\/tmp\/clsn_file state=touch\\\"\n172.16.1.8 | SUCCESS =&gt; {\n    \\\"changed\\\": true,\n    \\\"dest\\\": \\\"\/tmp\/clsn_file\\\",\n    \\\"gid\\\": 0,\n    \\\"group\\\": \\\"root\\\",\n    \\\"mode\\\": \\\"0644\\\",\n    \\\"owner\\\": \\\"root\\\",\n    \\\"size\\\": 0,\n    \\\"state\\\": \\\"file\\\",\n    \\\"uid\\\": 0\n}<\/pre>\n<\/div>\n<\/div>\n<p>\u521b\u5efa\u8f6f\u8fde\u63a5<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# ansible clsn -m file -a \\\"src=\/tmp\/clsn_file dest=\/tmp\/clsn_file_link state=link\\\"\n172.16.1.41 | SUCCESS =&gt; {\n    \\\"changed\\\": true,\n    \\\"dest\\\": \\\"\/tmp\/clsn_file_link\\\",\n    \\\"gid\\\": 0,\n    \\\"group\\\": \\\"root\\\",\n    \\\"mode\\\": \\\"0777\\\",\n    \\\"owner\\\": \\\"root\\\",\n    \\\"size\\\": 16,\n    \\\"src\\\": \\\"\/tmp\/clsn_file\\\",\n    \\\"state\\\": \\\"link\\\",\n    \\\"uid\\\": 0\n}<\/pre>\n<\/div>\n<\/div>\n<p>\u5220\u9664\u76ee\u5f55\u6587\u4ef6\u4fe1\u606f<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# ansible clsn -m file -a \\\"dest=\/tmp\/clsn_dir state=absent\\\"\n172.16.1.41 | SUCCESS =&gt; {\n    \\\"changed\\\": true,\n    \\\"path\\\": \\\"\/tmp\/clsn_dir\\\",\n    \\\"state\\\": \\\"absent\\\"\n[root@m01 ~]# ansible clsn -m file -a \\\"dest=\/tmp\/clsn_file state=absent\\\"\n172.16.1.31 | SUCCESS =&gt; {\n    \\\"changed\\\": true,\n    \\\"path\\\": \\\"\/tmp\/clsn_file\\\",\n    \\\"state\\\": \\\"absent\\\"<\/pre>\n<\/div>\n<\/div>\n<p>\u521b\u5efa\u591a\u7ea7\u76ee\u5f55<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# ansible clsn -m copy -a \\\"src=\/etc\/hosts dest=\/tmp\/01\/0\/0\/0\/0\/0\/0\/0\/\\\"\n172.16.1.31 | SUCCESS =&gt; {\n    \\\"changed\\\": true,\n    \\\"checksum\\\": \\\"b3c1ab140a1265cd7f6de9175a962988d93c629b\\\",\n    \\\"dest\\\": \\\"\/tmp\/01\/0\/0\/0\/0\/0\/0\/0\/hosts\\\",\n    \\\"gid\\\": 0,\n    \\\"group\\\": \\\"root\\\",\n    \\\"md5sum\\\": \\\"8c2b120b4742a806dcfdc8cfff6b6308\\\",\n    \\\"mode\\\": \\\"0644\\\",\n    \\\"owner\\\": \\\"root\\\",\n    \\\"size\\\": 357,\n    \\\"src\\\": \\\"\/root\/.ansible\/tmp\/ansible-tmp-1508466973.39-99676412390473\/source\\\",\n    \\\"state\\\": \\\"file\\\",\n    \\\"uid\\\": 0\n}<\/pre>\n<\/div>\n<\/div>\n<p><strong>\u6ce8\u610f\uff1a\u91cd\u547d\u540d\u548c\u521b\u5efa\u591a\u7ea7\u76ee\u5f55\u4e0d\u80fd\u540c\u65f6\u5b9e\u73b0<\/strong><\/p>\n<h2><span id=\\\"37_fetch_nbsp\\\">3.7 fetch \u6a21\u5757\u00a0 \u62c9\u53d6\u6587\u4ef6<\/span><\/h2>\n<h3><span id=\\\"371_fetch\\\">3.7.1 fetch\u5e38\u7528\u53c2\u6570\u8bf4\u660e<\/span><\/h3>\n<table border=\\\"1\\\" cellspacing=\\\"0\\\" cellpadding=\\\"0\\\">\n<tbody>\n<tr>\n<td width=\\\"160\\\">\n<p align=\\\"center\\\"><strong>\u53c2\u6570<\/strong><\/p>\n<\/td>\n<td width=\\\"537\\\">\n<p align=\\\"center\\\"><strong>\u53c2\u6570\u8bf4\u660e<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td width=\\\"160\\\">dest<\/td>\n<td width=\\\"537\\\">\u5c06\u8fdc\u7a0b\u4e3b\u673a\u62c9\u53d6\u8fc7\u6765\u7684\u6587\u4ef6\u4fdd\u5b58\u5728\u672c\u5730\u7684\u8def\u5f84\u4fe1\u606f<\/td>\n<\/tr>\n<tr>\n<td width=\\\"160\\\">src<\/td>\n<td width=\\\"537\\\">\u6307\u5b9a\u4ece\u8fdc\u7a0b\u4e3b\u673a\u8981\u62c9\u53d6\u7684\u6587\u4ef6\u4fe1\u606f\uff0c\u53ea\u80fd\u62c9\u53d6\u6587\u4ef6<\/td>\n<\/tr>\n<tr>\n<td width=\\\"160\\\">flat<\/td>\n<td width=\\\"537\\\">\u9ed8\u8ba4\u8bbe\u7f6e\u4e3ano\uff0c\u5982\u679c\u8bbe\u7f6e\u4e3ayes\uff0c\u5c06\u4e0d\u663e\u793a172.16.1.8\/etc\/\u4fe1\u606f<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3><span id=\\\"372\\\">3.7.2 \u5e38\u7528\u53c2\u6570\u5b9e\u4f8b<\/span><\/h3>\n<p>\u4ece\u8fdc\u7a0b\u62c9\u53d6\u51fa\u6765\u6587\u4ef6<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 cp]# ansible clsn -m fetch -a \\\"dest=\/tmp\/backup src=\/etc\/hosts\\\"\n172.16.1.8 | SUCCESS =&gt; {\n    \\\"changed\\\": true,\n    \\\"checksum\\\": \\\"b3c1ab140a1265cd7f6de9175a962988d93c629b\\\",\n    \\\"dest\\\": \\\"\/tmp\/backup\/172.16.1.8\/etc\/hosts\\\",\n    \\\"md5sum\\\": \\\"8c2b120b4742a806dcfdc8cfff6b6308\\\",\n    \\\"remote_checksum\\\": \\\"b3c1ab140a1265cd7f6de9175a962988d93c629b\\\",\n    \\\"remote_md5sum\\\": null\n}\n[root@m01 cp]# tree \/tmp\/backup\/\n\/tmp\/backup\/\n\u251c\u2500\u2500 172.16.1.31\n\u2502   \u2514\u2500\u2500 etc\n\u2502       \u2514\u2500\u2500 hosts\n\u251c\u2500\u2500 172.16.1.41\n\u2502   \u2514\u2500\u2500 etc\n\u2502       \u2514\u2500\u2500 hosts\n\u2514\u2500\u2500 172.16.1.8\n    \u2514\u2500\u2500 etc\n        \u2514\u2500\u2500 hosts<\/pre>\n<\/div>\n<\/div>\n<p>flat \u53c2\u6570\uff0c\u62c9\u53bb\u7684\u65f6\u5019\u4e0d\u521b\u5efa\u76ee\u5f55<strong>\uff08\u540c\u540d\u6587\u4ef6\u4f1a\u8986\u76d6\uff09<\/strong><\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 tmp]# ansible clsn -m fetch -a \\\"dest=\/tmp\/backup\/ src=\/etc\/hosts flat=yes\\\"\n172.16.1.8 | SUCCESS =&gt; {\n    \\\"changed\\\": false,\n    \\\"checksum\\\": \\\"b3c1ab140a1265cd7f6de9175a962988d93c629b\\\",\n    \\\"dest\\\": \\\"\/tmp\/backup\/hosts\\\",\n    \\\"file\\\": \\\"\/etc\/hosts\\\",\n    \\\"md5sum\\\": \\\"8c2b120b4742a806dcfdc8cfff6b6308\\\"<\/pre>\n<\/div>\n<\/div>\n<h2><span id=\\\"38_mount\\\">3.8 mount\u6a21\u5757 \u914d\u7f6e\u6302\u8f7d\u70b9\u6a21\u5757<\/span><\/h2>\n<h3><span id=\\\"381_mount\\\">3.8.1 mount\u6a21\u5757\u5e38\u7528\u53c2\u6570<\/span><\/h3>\n<table border=\\\"1\\\" cellspacing=\\\"0\\\" cellpadding=\\\"0\\\">\n<tbody>\n<tr>\n<td width=\\\"236\\\">\n<p align=\\\"center\\\"><strong>\u53c2\u6570<\/strong><\/p>\n<\/td>\n<td colspan=\\\"2\\\" width=\\\"461\\\">\n<p align=\\\"center\\\"><strong>\u53c2\u6570\u8bf4\u660e<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td width=\\\"236\\\">fstype<\/td>\n<td colspan=\\\"2\\\" width=\\\"461\\\">\u6307\u5b9a\u6302\u8f7d\u6587\u4ef6\u7c7b\u578b -t nfs == fstype=nfs<\/td>\n<\/tr>\n<tr>\n<td width=\\\"236\\\">opts<\/td>\n<td colspan=\\\"2\\\" width=\\\"461\\\">\u8bbe\u5b9a\u6302\u8f7d\u7684\u53c2\u6570\u9009\u9879\u4fe1\u606f -o ro\u00a0 == opts=ro<\/td>\n<\/tr>\n<tr>\n<td width=\\\"236\\\">path<\/td>\n<td colspan=\\\"2\\\" width=\\\"461\\\">\u6302\u8f7d\u70b9\u8def\u5f84\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 path=\/mnt<\/td>\n<\/tr>\n<tr>\n<td width=\\\"236\\\">src<\/td>\n<td colspan=\\\"2\\\" width=\\\"461\\\">\u8981\u88ab\u6302\u8f7d\u7684\u76ee\u5f55\u4fe1\u606f\u00a0 src=172.16.1.31:\/data<\/td>\n<\/tr>\n<tr>\n<td rowspan=\\\"5\\\" width=\\\"236\\\">state<\/td>\n<td colspan=\\\"2\\\" width=\\\"461\\\">\n<p align=\\\"center\\\"><strong>state<\/strong><strong>\u72b6\u6001\u53c2\u6570<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\\\"top\\\" width=\\\"142\\\">unmounted<\/td>\n<td valign=\\\"top\\\" width=\\\"319\\\">\u52a0\u8f7d\/etc\/fstab\u6587\u4ef6 \u5b9e\u73b0\u5378\u8f7d<\/td>\n<\/tr>\n<tr>\n<td valign=\\\"top\\\" width=\\\"142\\\">absent<\/td>\n<td valign=\\\"top\\\" width=\\\"319\\\">\u5728fstab\u6587\u4ef6\u4e2d\u5220\u9664\u6302\u8f7d\u914d\u7f6e<\/td>\n<\/tr>\n<tr>\n<td valign=\\\"top\\\" width=\\\"142\\\">present<\/td>\n<td valign=\\\"top\\\" width=\\\"319\\\">\u5728fstab\u6587\u4ef6\u4e2d\u6dfb\u52a0\u6302\u8f7d\u914d\u7f6e<\/td>\n<\/tr>\n<tr>\n<td valign=\\\"top\\\" width=\\\"142\\\">mounted<\/td>\n<td valign=\\\"top\\\" width=\\\"319\\\">1.\u5c06\u6302\u8f7d\u4fe1\u606f\u6dfb\u52a0\u5230\/etc\/fstab\u6587\u4ef6\u4e2d<br \/>\n2.\u52a0\u8f7d\u914d\u7f6e\u6587\u4ef6\u6302\u8f7d<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3><span id=\\\"382_mount\\\">3.8.2 mount\u53c2\u6570\u5b9e\u4f8b<\/span><\/h3>\n<p>\u6302\u8f7d<\/p>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 tmp]# ansible 172.16.1.8 -m mount -a \\\"fstype=nfs opts=rw path=\/mnt\/  src=172.16.1.31:\/data\/ state=mounted\\\"\n172.16.1.8 | SUCCESS =&gt; {\n    \\\"changed\\\": true,\n    \\\"dump\\\": \\\"0\\\",\n    \\\"fstab\\\": \\\"\/etc\/fstab\\\",\n    \\\"fstype\\\": \\\"nfs\\\",\n    \\\"name\\\": \\\"\/mnt\/\\\",\n    \\\"opts\\\": \\\"rw\\\",\n \\\"passno\\\": \\\"0\\\",\n  \\\"src\\\": \\\"172.16.1.31:\/data\/\\\"\n}<\/pre>\n<\/div>\n<div><\/div>\n<p>\u5378\u8f7d<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 tmp]# ansible 172.16.1.8 -m mount -a \\\"fstype=nfs opts=rw path=\/mnt\/  src=172.16.1.31:\/data\/ state=unmounted\\\"\n172.16.1.8 | SUCCESS =&gt; {\n   \\\"changed\\\": true,\n    \\\"dump\\\": \\\"0\\\",\n    \\\"fstab\\\": \\\"\/etc\/fstab\\\",\n    \\\"fstype\\\": \\\"nfs\\\",\n    \\\"name\\\": \\\"\/mnt\/\\\",\n    \\\"opts\\\": \\\"rw\\\",\n    \\\"passno\\\": \\\"0\\\",\n    \\\"src\\\": \\\"172.16.1.31:\/data\/\\\"\n}<\/pre>\n<\/div>\n<\/div>\n<h2><span id=\\\"39_cron\\\">3.9 cron\u6a21\u5757 \u5b9a\u65f6\u4efb\u52a1<\/span><\/h2>\n<h3><span id=\\\"391_cron\\\">3.9.1 cron\u6a21\u5757\u5e38\u7528\u53c2\u6570<\/span><\/h3>\n<table border=\\\"1\\\" cellspacing=\\\"0\\\" cellpadding=\\\"0\\\">\n<tbody>\n<tr>\n<td width=\\\"141\\\">\n<p align=\\\"center\\\"><strong>\u53c2\u6570<\/strong><\/p>\n<\/td>\n<td colspan=\\\"2\\\" width=\\\"556\\\">\n<p align=\\\"center\\\"><strong>\u53c2\u6570\u8bf4\u660e<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td width=\\\"141\\\">minute\u00a0 \u5206<\/td>\n<td colspan=\\\"2\\\" width=\\\"556\\\">Minute when the job should run ( 0-59, *, *\/2, etc )<\/td>\n<\/tr>\n<tr>\n<td width=\\\"141\\\">hour\u00a0\u00a0\u00a0 \u65f6<\/td>\n<td colspan=\\\"2\\\" width=\\\"556\\\">Hour when the job should run ( 0-23, *, *\/2, etc )<\/td>\n<\/tr>\n<tr>\n<td width=\\\"141\\\">day\u00a0\u00a0\u00a0\u00a0 \u65e5<\/td>\n<td colspan=\\\"2\\\" width=\\\"556\\\">Day of the month the job should run ( 1-31, *, *\/2, etc )<\/td>\n<\/tr>\n<tr>\n<td width=\\\"141\\\">month\u00a0\u00a0 \u6708<\/td>\n<td colspan=\\\"2\\\" width=\\\"556\\\">Month of the year the job should run ( 1-12, *, *\/2, etc )<\/td>\n<\/tr>\n<tr>\n<td width=\\\"141\\\">weekday \u5468<\/td>\n<td colspan=\\\"2\\\" width=\\\"556\\\">Day of the week that the job should run ( 0-6 for Sunday-Saturday, *, etc )<\/td>\n<\/tr>\n<tr>\n<td width=\\\"141\\\">job<\/td>\n<td colspan=\\\"2\\\" width=\\\"556\\\">\u5de5\u4f5c ;\u8981\u505a\u7684\u4e8b\u60c5<\/td>\n<\/tr>\n<tr>\n<td width=\\\"141\\\">name<\/td>\n<td colspan=\\\"2\\\" width=\\\"556\\\">\u5b9a\u4e49\u5b9a\u65f6\u4efb\u52a1\u7684\u63cf\u8ff0\u4fe1\u606f<\/td>\n<\/tr>\n<tr>\n<td width=\\\"141\\\">disabled<\/td>\n<td colspan=\\\"2\\\" width=\\\"556\\\">\u6ce8\u91ca\u5b9a\u65f6\u4efb\u52a1<\/td>\n<\/tr>\n<tr>\n<td rowspan=\\\"4\\\" width=\\\"141\\\">state<\/td>\n<td colspan=\\\"2\\\" width=\\\"556\\\">\n<p align=\\\"center\\\"><strong>state\u00a0<\/strong><strong>\u72b6\u6001\u53c2\u6570<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\\\"top\\\" width=\\\"198\\\">absent<\/td>\n<td valign=\\\"top\\\" width=\\\"357\\\">\u5220\u9664\u5b9a\u65f6\u4efb\u52a1<\/td>\n<\/tr>\n<tr>\n<td valign=\\\"top\\\" width=\\\"198\\\">present<\/td>\n<td valign=\\\"top\\\" width=\\\"357\\\">\u521b\u5efa\u5b9a\u65f6\u4efb\u52a1<\/td>\n<\/tr>\n<tr>\n<td colspan=\\\"2\\\" width=\\\"556\\\">\u9ed8\u8ba4\u4e3apresent<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3><span id=\\\"392_cron\\\">3.9.2 cron\u6a21\u5757\u53c2\u6570\u5b9e\u8df5<\/span><\/h3>\n<p>\u6dfb\u52a0\u5b9a\u65f6\u4efb\u52a1<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# ansible clsn -m cron -a \\\"minute=0 hour=0 job=\\'\/bin\/sh  \/server\/scripts\/hostname.sh &amp;&gt;\/dev\/null\\' name=clsn01\\\"\n172.16.1.8 | SUCCESS =&gt; {\n    \\\"changed\\\": true,\n    \\\"envs\\\": [],\n    \\\"jobs\\\": [\n     \\\"clsn01\\\"\n    ]\n}<\/pre>\n<\/div>\n<\/div>\n<p>\u5220\u9664\u5b9a\u65f6\u4efb\u52a1<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# ansible clsn -m cron -a \\\"minute=00 hour=00 job=\\'\/bin\/sh  \/server\/scripts\/hostname.sh &amp;&gt;\/dev\/null\\' name=clsn01 state=absent\\\"\n172.16.1.8 | SUCCESS =&gt; {\n    \\\"changed\\\": true,\n    \\\"envs\\\": [],\n    \\\"jobs\\\": []\n}<\/pre>\n<\/div>\n<\/div>\n<p>\u53ea\u7528\u540d\u5b57\u5c31\u53ef\u4ee5\u5220\u9664<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# ansible clsn -m cron -a \\\"name=clsn01  state=absent\\\"\n172.16.1.31 | SUCCESS =&gt; {\n    \\\"changed\\\": true,\n    \\\"envs\\\": [],\n    \\\"jobs\\\": []\n}<\/pre>\n<\/div>\n<\/div>\n<p>\u6ce8\u91ca\u5b9a\u65f6\u4efb\u52a1<br \/>\n\u6ce8\u610f\uff1a \u6ce8\u91ca\u5b9a\u65f6\u4efb\u52a1\u7684\u65f6\u5019\u5fc5\u987b\u6709job\u7684\u53c2\u6570<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# ansible clsn -m cron -a \\\"name=clsn01 job=\\'\/bin\/sh  \/server\/scripts\/hostname.sh &amp;&gt;\/dev\/null\\'  disabled=yes\\\"\n172.16.1.31 | SUCCESS =&gt; {\n    \\\"changed\\\": true,\n    \\\"envs\\\": [],\n    \\\"jobs\\\": [\n    \\\"clsn01\\\"\n    ]\n}<\/pre>\n<\/div>\n<\/div>\n<p>\u53d6\u6d88\u6ce8\u91ca<\/p>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# ansible clsn -m cron -a \\\"name=clsn01 job=\\'\/bin\/sh  \/server\/scripts\/hostname.sh &amp;&gt;\/dev\/null\\'  disabled=no\\\"\n172.16.1.41 | SUCCESS =&gt; {\n    \\\"changed\\\": true,\n    \\\"envs\\\": [],\n   \\\"jobs\\\": [\n       \\\"clsn01\\\"\n    ]\n}<\/pre>\n<\/div>\n<div>\n<p class=\\\"ac\\\">3.10 \u00a0yum \u6a21\u5757<\/p>\n<\/div>\n<h3><span id=\\\"3101_yum\\\">3.10.1 yum \u6a21\u5757\u5e38\u7528\u53c2\u6570<\/span><\/h3>\n<table border=\\\"1\\\" cellspacing=\\\"0\\\" cellpadding=\\\"0\\\">\n<tbody>\n<tr>\n<td valign=\\\"top\\\" width=\\\"349\\\">\n<p align=\\\"center\\\"><strong>\u53c2\u6570<\/strong><\/p>\n<\/td>\n<td valign=\\\"top\\\" width=\\\"349\\\">\n<p align=\\\"center\\\"><strong>\u53c2\u6570\u8bf4\u660e<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\\\"top\\\" width=\\\"349\\\">name=<em>name<\/em><\/td>\n<td valign=\\\"top\\\" width=\\\"349\\\">\u6307\u5b9a\u5b89\u88c5\u7684\u8f6f\u4ef6<\/td>\n<\/tr>\n<tr>\n<td valign=\\\"top\\\" width=\\\"349\\\">state=installed<\/td>\n<td valign=\\\"top\\\" width=\\\"349\\\">\u5b89\u88c5<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3><span id=\\\"3102_yum\\\">3.10.2 yum\u6a21\u5757\u53c2\u6570\u5b9e\u8df5<\/span><\/h3>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# ansible clsn -m yum -a \\\"name=nmap state=installed  \\\"\n172.16.1.31 | SUCCESS =&gt; {\n    \\\"changed\\\": true,\n    \\\"msg\\\": \\\"\\\",\n    \\\"rc\\\": 0,\n    \\\"results\\\": [\n        \\\"Loaded plugins: fastestmirror, security\\\\nSetting up Install Process\\\\nLoading mirror speeds from cached hostfile\\\\n * base: mirrors.aliyun.com\\\\n * epel: mirrors.aliyun.com\\\\n * extras: mirrors.aliyun.com\\\\n * updates: mirrors.aliyun.com\\\\nResolving Dependencies\\\\n--&gt; Running transaction check\\\\n---&gt; Package nmap.x86_64 2:5.51-6.el6 will be installed\\\\n--&gt; Finished Dependency Resolution\\\\n\\\\nDependencies Resolved\\\\n\\\\n================================================================================\\\\n Package        Arch             Version                   Repository      Size\\\\n================================================================================\\\\nInstalling:\\\\n nmap           x86_64           2:5.51-6.el6              base           2.8 M\\\\n\\\\nTransaction Summary\\\\n================================================================================\\\\nInstall       1 Package(s)\\\\n\\\\nTotal download size: 2.8 M\\\\nInstalled size: 9.7 M\\\\nDownloading Packages:\\\\nRunning rpm_check_debug\\\\nRunning Transaction Test\\\\nTransaction Test Succeeded\\\\nRunning Transaction\\\\n\\\\r  Installing : 2:nmap-5.51-6.el6.x86_64                                     1\/1 \\\\n\\\\r  Verifying  : 2:nmap-5.51-6.el6.x86_64                                     1\/1 \\\\n\\\\nInstalled:\\\\n  nmap.x86_64 2:5.51-6.el6                                                      \\\\n\\\\nComplete!\\\\n\\\"\n    ]\n}<\/pre>\n<\/div>\n<\/div>\n<h2><span id=\\\"311_service\\\">3.11 service\u6a21\u5757 \u670d\u52a1\u7ba1\u7406<\/span><\/h2>\n<h3><span id=\\\"3111_service\\\">3.11.1 service\u6a21\u5757\u5e38\u7528\u53c2\u6570\u8bf4\u660e<\/span><\/h3>\n<table border=\\\"1\\\" cellspacing=\\\"0\\\" cellpadding=\\\"0\\\">\n<tbody>\n<tr>\n<td valign=\\\"top\\\" width=\\\"236\\\">\n<p align=\\\"center\\\"><strong>\u53c2\u6570<\/strong><\/p>\n<\/td>\n<td valign=\\\"top\\\" width=\\\"461\\\">\n<p align=\\\"center\\\"><strong>\u53c2\u6570\u8bf4\u660e<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\\\"top\\\" width=\\\"236\\\">name=<em>service name<\/em><\/td>\n<td valign=\\\"top\\\" width=\\\"461\\\">\u670d\u52a1\u7684\u540d\u79f0<\/td>\n<\/tr>\n<tr>\n<td valign=\\\"top\\\" width=\\\"236\\\">state=<em>\u53c2\u6570<\/em><\/td>\n<td valign=\\\"top\\\" width=\\\"461\\\">\u505c\u6b62\u670d\u52a1 \u670d\u52a1\u72b6\u6001\u4fe1\u606f\u4e3a\u8fc7\u53bb\u65f6<br \/>\nstared\/stoped\/restarted\/reloaded<\/td>\n<\/tr>\n<tr>\n<td valign=\\\"top\\\" width=\\\"236\\\">enabled=yes<\/td>\n<td valign=\\\"top\\\" width=\\\"461\\\">\u8bbe\u7f6e\u5f00\u673a\u81ea\u542f\u52a8<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>\u8bf4\u660e\u00a0<\/strong><strong>\uff1aservice\u00a0<\/strong><strong>\u7ba1\u7406\u7684\u670d\u52a1\u5fc5\u987b\u5b58\u5728\u5728\/etc\/init.d\/<\/strong><strong>\u4e0b\u6709<\/strong><strong>\u7684\u670d\u52a1\u811a\u672c<\/strong><\/p>\n<h3><span id=\\\"3112_service\\\">3.11.2 service \u6a21\u5757\u53c2\u6570\u5b9e\u8df5<\/span><\/h3>\n<p>\u91cd\u542f\u5b9a\u65f6\u4efb\u52a1<\/p>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# ansible clsn -m service -a \\\"name=crond state=restarted\\\"\n172.16.1.8 | SUCCESS =&gt; {\n    \\\"changed\\\": true,\n    \\\"name\\\": \\\"crond\\\",\n    \\\"state\\\": \\\"started\\\"\n}<\/pre>\n<\/div>\n<\/div>\n<h2><span id=\\\"312_ansible\\\">3.12 ansible\u4e2d\u7684\u5e38\u7528\u6a21\u5757<\/span><\/h2>\n<table border=\\\"1\\\" cellspacing=\\\"0\\\" cellpadding=\\\"0\\\">\n<tbody>\n<tr>\n<td width=\\\"189\\\">\n<p align=\\\"center\\\"><strong>\u5e38\u7528\u6a21\u5757<\/strong><\/p>\n<\/td>\n<td width=\\\"508\\\">\n<p align=\\\"center\\\"><strong>\u6a21\u5757\u8bf4\u660e<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td width=\\\"189\\\">command \u00a0(\u91cd\u8981\u6a21\u5757)<\/td>\n<td width=\\\"508\\\">\u6267\u884c\u547d\u4ee4\u6a21\u5757\uff0cansible\u547d\u4ee4\u6267\u884c\u9ed8\u8ba4\u6a21\u5757<\/td>\n<\/tr>\n<tr>\n<td width=\\\"189\\\">shell \u00a0\u00a0\u00a0(\u91cd\u8981\u6a21\u5757)<\/td>\n<td width=\\\"508\\\">\u884cshell\u811a\u672c\u6a21\u5757<\/td>\n<\/tr>\n<tr>\n<td width=\\\"189\\\">script \u00a0\u00a0(\u91cd\u8981\u6a21\u5757)<\/td>\n<td width=\\\"508\\\">\u628a\u811a\u672c\u53d1\u5230\u5ba2\u6237\u7aef\uff0c\u7136\u540e\u6267\u884c\uff1b\u6267\u884c\u811a\u672c\u547d\u4ee4\u5728\u8fdc\u7aef\u670d\u52a1\u5668\u4e0a<\/td>\n<\/tr>\n<tr>\n<td width=\\\"189\\\">copy \u00a0\u00a0\u00a0\u00a0\u00a0(\u91cd\u8981\u6a21\u5757)<\/td>\n<td width=\\\"508\\\">\u628a\u672c\u5730\u6587\u4ef6\u53d1\u9001\u5230\u8fdc\u7aef<\/td>\n<\/tr>\n<tr>\n<td width=\\\"189\\\">file<\/td>\n<td width=\\\"508\\\">\u8bbe\u5b9a\u6587\u4ef6\u5c5e\u6027\u6a21\u5757<\/td>\n<\/tr>\n<tr>\n<td width=\\\"189\\\">services<\/td>\n<td width=\\\"508\\\">\u7cfb\u7edf\u670d\u52a1\u7ba1\u7406\u6a21\u5757<\/td>\n<\/tr>\n<tr>\n<td width=\\\"189\\\">cron<\/td>\n<td width=\\\"508\\\">\u8ba1\u5212\u4efb\u52a1\u7ba1\u7406\u6a21\u5757<\/td>\n<\/tr>\n<tr>\n<td width=\\\"189\\\">yum<\/td>\n<td width=\\\"508\\\">yum\u8f6f\u4ef6\u5305\u5b89\u88c5\u7ba1\u7406\u6a21\u5757<\/td>\n<\/tr>\n<tr>\n<td width=\\\"189\\\">synchronize<\/td>\n<td width=\\\"508\\\">\u4f7f\u7528rsync\u540c\u6b65\u6587\u4ef6\u6a21\u5757<\/td>\n<\/tr>\n<tr>\n<td width=\\\"189\\\">mount<\/td>\n<td width=\\\"508\\\">\u6302\u8f7d\u6a21\u5757<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><span id=\\\"313\\\">3.13 \u5176\u4ed6\u6a21\u5757\u8865\u5145<\/span><\/h2>\n<h3><span id=\\\"3131_hostname\\\">3.13.1 hostname \u4fee\u6539\u4e3b\u673a\u540d\u6a21\u5757<\/span><\/h3>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# ansible 172.16.1.8 -m hostname -a \\\"name=web01\\\"\n172.16.1.8 | SUCCESS =&gt; {\n    \\\"ansible_facts\\\": {\n        \\\"ansible_domain\\\": \\\"etiantian.org\\\",\n        \\\"ansible_fqdn\\\": \\\"www.etiantian.org\\\",\n       \\\"ansible_hostname\\\": \\\"web01\\\",\n        \\\"ansible_nodename\\\": \\\"web01\\\"\n    },\n    \\\"changed\\\": false,\n    \\\"name\\\": \\\"web01\\\"\n}<\/pre>\n<\/div>\n<\/div>\n<h3><span id=\\\"3132_selinux\\\">3.13.2 selinux \u7ba1\u7406\u6a21\u5757<\/span><\/h3>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# ansible 172.16.1.8 -m selinux -a \\\"state=disabled\\\"\n172.16.1.8 | SUCCESS =&gt; {\n    \\\"changed\\\": false,\n    \\\"configfile\\\": \\\"\/etc\/selinux\/config\\\",\n    \\\"msg\\\": \\\"\\\",\n    \\\"policy\\\": \\\"targeted\\\",\n    \\\"state\\\": \\\"disabled\\\"\n}<\/pre>\n<\/div>\n<\/div>\n<h3><span id=\\\"3133_get_url__wget\\\">3.13.3 get_url \u6a21\u5757 == \u3010wget\u3011<\/span><\/h3>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ~]# ansible 172.16.1.8 -m get_url -a \\\"url=http:\/\/lan.znix.top\/RDPWrap-v1.6.1.zip dest=\/tmp\/\\\"\n172.16.1.8 | SUCCESS =&gt; {\n    \\\"changed\\\": true,\n    \\\"checksum_dest\\\": null,\n    \\\"checksum_src\\\": \\\"ad402705624d06a6ff4b5a6a98c55fc2453b3a70\\\",\n    \\\"dest\\\": \\\"\/tmp\/RDPWrap-v1.6.1.zip\\\",\n    \\\"gid\\\": 0,\n    \\\"group\\\": \\\"root\\\",\n    \\\"md5sum\\\": \\\"b04dde546293ade71287071d187ed92d\\\",\n    \\\"mode\\\": \\\"0644\\\",\n    \\\"msg\\\": \\\"OK (1567232 bytes)\\\",\n    \\\"owner\\\": \\\"root\\\",\n    \\\"size\\\": 1567232,\n    \\\"src\\\": \\\"\/tmp\/tmp4X4Von\\\",\n    \\\"state\\\": \\\"file\\\",\n    \\\"status_code\\\": 200,\n    \\\"uid\\\": 0,\n    \\\"url\\\": \\\"http:\/\/lan.znix.top\/RDPWrap-v1.6.1.zip\\\"\n}<\/pre>\n<\/div>\n<\/div>\n<p>url= \u4e0b\u8f7d\u6587\u4ef6\u7684\u5730\u5740 dest \u4e0b\u8f7d\u5230\u54ea\u91cc<br \/>\ntimeout \u8d85\u65f6\u65f6\u95f4<br \/>\nurl_password\u00a0 \u00a0\u5bc6\u7801<br \/>\nurl_username \u00a0\u7528\u6237\u540d<\/p>\n<h1><span id=\\\"4_ansible-playbook\\\">\u7b2c4\u7ae0 ansible-playbook \u5267\u672c<\/span><\/h1>\n<h2><span id=\\\"41_ansible\\\">4.1 ansible\u57fa\u7840\u77e5\u8bc6\u90e8\u5206\u8865\u5145<\/span><\/h2>\n<h3><span id=\\\"411_ansible\\\">4.1.1 ansible\u8f6f\u4ef6\u7279\u70b9\uff1a<\/span><\/h3>\n<p>\u00b7 \u53ef\u4ee5\u5b9e\u73b0\u6279\u91cf\u7ba1\u7406<br \/>\n\u00b7 \u53ef\u4ee5\u5b9e\u73b0\u6279\u91cf\u90e8\u7f72<br \/>\n\u00b7 ad-hoc(\u6279\u91cf\u6267\u884c\u547d\u4ee4)&#8212;\u9488\u5bf9\u4e34\u65f6\u6027\u7684\u64cd\u4f5c<\/p>\n<div>\n<p class=\\\"ac\\\">\u00a0 \u3000\u3000ansible clsn -m command -a \\&#8221;hostname\\&#8221;\u00a0\u00a0 &lt;- \u6279\u91cf\u6267\u884c\u547d\u4ee4\u4e3e\u4f8b<\/p>\n<\/div>\n<p>\u00b7 \u7f16\u5199\u5267\u672c-\u811a\u672c(playbook)&#8212;\u9488\u5bf9\u91cd\u590d\u6027\u7684\u64cd\u4f5c<\/p>\n<h3><span id=\\\"412_ansible\\\">4.1.2 ansible\u6838\u5fc3\u529f\u80fd\uff1a<\/span><\/h3>\n<p>pyYAML&#8212;&#8211;\u7528\u4e8eansible\u7f16\u5199\u5267\u672c\u6240\u4f7f\u7528\u7684\u8bed\u8a00\u683c\u5f0f\uff08saltstack&#8212;python\uff09<\/p>\n<div>\n<p class=\\\"a3\\\">rsync-ini\u8bed\u6cd5\u00a0 sersync-xml\u8bed\u6cd5 \u00a0ansible-pyYAML\u8bed\u6cd5<\/p>\n<\/div>\n<p>paramiko&#8212;\u8fdc\u7a0b\u8fde\u63a5\u4e0e\u6570\u636e\u4f20\u8f93<br \/>\nJinja2&#8212;&#8211;\u7528\u4e8e\u7f16\u5199ansible\u7684\u6a21\u677f\u4fe1\u606f<\/p>\n<h2><span id=\\\"42_ansible\\\">4.2 ansible\u5267\u672c\u7f16\u5199\u89c4\u5219\u8bf4\u660e<\/span><\/h2>\n<h3><span id=\\\"421_pyYAML\\\">4.2.1 pyYAML\u8bed\u6cd5\u89c4\u5219\uff1a<\/span><\/h3>\n<p>\u89c4\u5219\u4e00\uff1a\u7f29\u8fdb<\/p>\n<div>\n<p class=\\\"a3\\\">\u00a0\u00a0\u00a0 yaml\u4f7f\u7528\u4e00\u4e2a\u56fa\u5b9a\u7684\u7f29\u8fdb\u98ce\u683c\u8868\u793a\u6570\u636e\u5c42\u7ed3\u6784\u5173\u7cfb\uff0cSaltstack\u9700\u8981\u6bcf\u4e2a\u7f29\u8fdb\u7ea7\u522b\u7531\u4e24\u4e2a\u7a7a\u683c\u7ec4\u6210\u3002\u4e00\u5b9a\u4e0d\u80fd\u4f7f\u7528tab\u952e<\/p>\n<p class=\\\"a3\\\">\u00a0\u00a0\u00a0 \u6ce8\u610f\uff1a\u7f16\u5199yaml\u6587\u4ef6\uff0c\u5c31\u5fd8\u8bb0\u952e\u76d8\u6709tab<\/p>\n<\/div>\n<p>\u89c4\u5219\u4e8c\uff1a\u5192\u53f7<\/p>\n<div>\n<p class=\\\"a3\\\">\u00a0\u00a0\u00a0 CMD=\\&#8221;echo\\&#8221;<\/p>\n<p class=\\\"a3\\\">\u00a0\u00a0\u00a0 yaml:<\/p>\n<p class=\\\"a3\\\">\u00a0\u00a0\u00a0 mykey:<\/p>\n<p class=\\\"a3\\\">\u00a0\u00a0\u00a0 \u6bcf\u4e2a\u5192\u53f7\u540e\u9762\u4e00\u5b9a\u8981\u6709\u4e00\u4e2a\u7a7a\u683c\uff08\u4ee5\u5192\u53f7\u7ed3\u5c3e\u4e0d\u9700\u8981\u7a7a\u683c\uff0c\u8868\u793a\u6587\u4ef6\u8def\u5f84\u7684\u6a21\u7248\u53ef\u4ee5\u4e0d\u9700\u8981\u7a7a\u683c\uff09<\/p>\n<\/div>\n<p>\u89c4\u5219\u4e09\uff1a\u77ed\u6a2a\u7ebf<\/p>\n<div>\n<p class=\\\"a3\\\">\u00a0\u00a0\u00a0 \u60f3\u8981\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\u4e2a\u5217\u8868\u7684\u4e00\u90e8\u5206<\/p>\n<\/div>\n<p><strong>\u00a0<\/strong><strong>\u6838\u5fc3\u89c4\u5219\uff1a\u6709\u6548\u7684\u5229\u7528\u7a7a\u683c\u8fdb\u884c\u5267\u672c\u7684\u7f16\u5199\uff0c\u5267\u672c\u7f16\u5199\u662f\u4e0d\u652f\u6301tab<\/strong><strong>\u7684<\/strong><\/p>\n<h2><span id=\\\"43\\\">4.3 \u5267\u672c\u4e66\u5199\u683c\u5f0f<\/span><\/h2>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>### \u5267\u672c\u7684\u5f00\u5934\uff0c\u53ef\u4ee5\u4e0d\u5199\n- hosts: all         &lt;- \u5904\u7406\u6240\u6709\u670d\u52a1\u5668\uff0c\u627e\u5230\u6240\u6709\u670d\u52a1\u5668;  -(\u7a7a\u683c)hosts:(\u7a7a\u683c)all\ntasks:             &lt;- \u5267\u672c\u6240\u8981\u5e72\u7684\u4e8b\u60c5;                (\u7a7a\u683c)(\u7a7a\u683c)task:\n- command: echo hello clsn linux.\n  (\u7a7a\u683c)(\u7a7a\u683c)\u7a7a\u683c)(\u7a7a\u683c)-(\u7a7a\u683c)\u6a21\u5757\u540d\u79f0:(\u7a7a\u683c)\u6a21\u5757\u4e2d\u5bf9\u5e94\u7684\u529f\u80fd\n ansible all -m command -a \\\"echo hello clsn linux\\\"<\/pre>\n<\/div>\n<\/div>\n<div>\n<p class=\\\"ac\\\">\u00a0\u00a0\u00a0 \u5267\u672c\u7f16\u5199\u5185\u5bb9\u6269\u5c55\uff1a\u5267\u672c\u4efb\u52a1\u5b9a\u4e49\u540d\u79f0<\/p>\n<div class=\\\"cnblogs_code\\\">\n<pre>- hosts: 172.16.1.7  &lt;- \u5904\u7406\u6307\u5b9a\u670d\u52a1\u5668                   -(\u7a7a\u683c)hosts:(\u7a7a\u683c)all\ntask:                &lt;- \u5267\u672c\u6240\u8981\u5e72\u7684\u4e8b\u60c5;                (\u7a7a\u683c)(\u7a7a\u683c)task:\n- name:\ncommand: echo hello clsn linux.\n(\u7a7a\u683c)(\u7a7a\u683c)\u7a7a\u683c)(\u7a7a\u683c)-(\u7a7a\u683c)\u6a21\u5757\u540d\u79f0:(\u7a7a\u683c)\u6a21\u5757\u4e2d\u5bf9\u5e94\u7684\u529f\u80fd<\/pre>\n<\/div>\n<\/div>\n<h3><span id=\\\"431\\\">4.3.1 \u5267\u672c\u683c\u5f0f\u793a\u4f8b<\/span><\/h3>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ansible-playbook]# vim rsync_sever.yml\n- hosts: 172.16.1.41\n  tasks:\n    - name: install rsync\n      yum: name=rsync state=installed<\/pre>\n<\/div>\n<\/div>\n<h2><span id=\\\"44\\\">4.4 \u5267\u672c\u7f16\u5199\u540e\u68c0\u67e5\u65b9\u6cd5<\/span><\/h2>\n<div>\n<p class=\\\"ac\\\">01\uff1aansible-playbook<strong>\u00a0&#8211;syntax-check\u00a0<\/strong>01.yml<\/p>\n<\/div>\n<p>&#8212; \u8fdb\u884c\u5267\u672c\u914d\u7f6e\u4fe1\u606f\u8bed\u6cd5\u68c0\u67e5<\/p>\n<div>\n<p class=\\\"ac\\\">02\uff1aansible-playbook<strong>\u00a0-C<\/strong><strong>\u00a00<\/strong>1.yml<\/p>\n<\/div>\n<p>&#8212; \u6a21\u62df\u5267\u672c\u6267\u884c\uff08\u5f69\u6392\uff09<\/p>\n<h3><span id=\\\"441\\\">4.4.1 \u8bed\u6cd5\u68c0\u67e5<\/span><\/h3>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ansible-playbook]# ansible-playbook --syntax-check 01.yml\nplaybook: 01.yml<\/pre>\n<\/div>\n<\/div>\n<h3><span id=\\\"442\\\">4.4.2 \u6a21\u62df\u5267\u672c\u6267\u884c<\/span><\/h3>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@m01 ansible-playbook]# ansible-playbook -C 01.yml\nPLAY [all] ****************************************************************\nTASK [Gathering Facts] ****************************************************\nok: [172.16.1.41]\nok: [172.16.1.8]\nok: [172.16.1.31]\nTASK [cron] ***************************************************************\nok: [172.16.1.8]\nok: [172.16.1.41]\nok: [172.16.1.31]\nPLAY RECAP ****************************************************************\n172.16.1.31                : ok=2    changed=0    unreachable=0    failed=0\n172.16.1.41                : ok=2    changed=0    unreachable=0    failed=0\n172.16.1.8                 : ok=2    changed=0    unreachable=0    failed=0<\/pre>\n<\/div>\n<\/div>\n<h2><span id=\\\"45\\\">4.5 \u5267\u672c\u793a\u4f8b<\/span><\/h2>\n<h3><span id=\\\"451\\\">4.5.1 \u5267\u672c\u7f16\u5199\u5185\u5bb9\u6269\u5c55\uff1a\u5267\u672c\u4efb\u52a1\u7f16\u5199\u591a\u4e2a\u4efb\u52a1<\/span><\/h3>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>- hosts: all\n  tasks:\n    - name: restart-network\n      cron: name=\\'restart network\\' minute=00 hour=00 job=\\'\/usr\/sbin\/ntpdate time.nist.gov &gt;\/dev\/null 2&gt;&amp;1\\'\n    - name: sync time\n      cron: name=\\'sync time\\' minute=*\/5 job=\\\"\/usr\/sbin\/ntpdate pool.ntp.com &gt;\/dev\/null 2&gt;&amp;1\\\"<\/pre>\n<\/div>\n<\/div>\n<h3><span id=\\\"452\\\">4.5.2 \u5267\u672c\u7f16\u5199\u5185\u5bb9\u6269\u5c55\uff1a\u5267\u672c\u4efb\u52a1\u7f16\u5199\u591a\u4e2a\u4e3b\u673a<\/span><\/h3>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>- hosts: 172.16.1.7\n  tasks:\n    - name: restart-network\n      cron: name=\\'restart network\\' minute=00 hour=00 job=\\'\/usr\/sbin\/ntpdate time.nist.gov &gt;\/dev\/null 2&gt;&amp;1\\'\n    - name: sync time\n      cron: name=\\'sync time\\' minute=*\/5 job=\\\"\/usr\/sbin\/ntpdate pool.ntp.com &gt;\/dev\/null 2&gt;&amp;1\\\"\n- hosts: 172.16.1.31\n  tasks:\n    - name: show ip addr to file\n      shell: echo $(hostname -i) &gt;&gt; \/tmp\/ip.txt<\/pre>\n<\/div>\n<\/div>\n<h2><span id=\\\"46\\\">4.6 \u5267\u672c\u7f16\u5199\u65b9\u5f0f<\/span><\/h2>\n<p>01 \u591a\u4e3b\u673a\u5355\u4efb\u52a1\u7f16\u5199\u65b9\u5f0f<br \/>\n02 \u591a\u4e3b\u673a\u591a\u4efb\u52a1\u7f16\u5199\u65b9\u5f0f<br \/>\n03 \u4e0d\u540c\u4e3b\u673a\u591a\u4efb\u52a1\u7f16\u5199\u65b9\u5f0f<\/p>\n<h1><span id=\\\"5\\\">\u7b2c5\u7ae0 \u5e38\u89c1\u9519\u8bef<\/span><\/h1>\n<h2><span id=\\\"51_ansible\\\">5.1 ansible\u7f16\u5199\u5267\u672c\u6392\u9519\u601d\u8def<\/span><\/h2>\n<p>1. ansible-playbook\u7f16\u5199\u5b8c\uff0c\u68c0\u67fb\u8bed\u6cd5\u548c\u6a21\u62df\u6d4b\u8bd5\u8fd0\u884c<br \/>\n2. \u6253\u5f00\u5267\u672c\uff0c\u5b9a\u4f4d\u5f02\u5e38\u95ee\u984c\u539f\u56e0\uff0c\u5c06\u5267\u672c\u4e2d\u7684\u5185\u5bb9\u8f6c\u6362\u547d\u4ee4\u6267\u884c\u4e00\u6b21<\/p>\n<div>\n<div class=\\\"cnblogs_Highlighter\\\">\n<pre class=\\\"brush:bash;gutter:true;\\\">cron: name=clsn64 minute=ee hour=03 job=\\'\/bin\/sh \/server\/scripts\/test.sh &amp;&gt;\/dev\/null\\'\nansible clsn -m cron -a \\\"name=clsn64 minute=00 hour=03 job=\\'\/bin\/sh \/server\/scripts\/test.sh &amp;&gt;\/dev\/null<\/pre>\n<\/div>\n<\/div>\n<div><\/div>\n<p>3. \u5c06\u53c2\u6570\u4e2d\u7684\u811a\u672c\u6587\u4ef6\u63a8\u9001\u5230\u8fdc\u7a0b\u5c4e\u52a1\u5668\uff0c\u5728\u8fdc\u7a0b\u670d\u52a1\u5668\u672c\u5730\u6267\u884c\u811a\u672c sh -x test.sh<br \/>\n\u8bf4\u660e\uff1aansible\u6267\u884c\u65f6\uff0c\u52a01\u4e0a-vvvv\u663e\u793aansible\u8be6\u7ec6\u6267\u884c\u8fc7\u7a0b\uff0c\u4e5f\u53ef\u4ee5\u5b9a\u4f4d\u5f02\u5e38\u539f\u56e0\uff01<\/p>\n<h3><span id=\\\"511\\\">5.1.1 \u6392\u9519\u903b\u8f91<\/span><\/h3>\n<p>01. \u5267\u672c\u6267\u884c\u4e2d\u7684\u9519\u8bef<br \/>\n02. \u628a\u5267\u672c\u4e2d\u7684\u5185\u5bb9\u8f6c\u6362\u4e3aansible\u547d\u4ee4\u6267\u884c<\/p>\n<div>\n<p class=\\\"ac\\\">\u00a0\u00a0\u00a0 ansible clsn -m yum -a \\&#8221;name=rsync state=installed\\&#8221;<\/p>\n<\/div>\n<p>03. \u628aansible\u670d\u52a1\u5668\u4e0a\u6267\u884c\u7684\u547d\u4ee4\u653e\u5728\u88ab\u7ba1\u7406\u4e3b\u673a\u4e0a\u6267\u884c<\/p>\n<div>\n<p class=\\\"ac\\\">\u00a0\u00a0\u00a0 yum install -y rsync<\/p>\n<\/div>\n<h2><span id=\\\"52_ansible\\\">5.2 ansible \u65e0\u6cd5\u6b63\u5e38\u4f7f\u7528<\/span><\/h2>\n<h3><span id=\\\"521_rootnotty\\\">5.2.1 \u5728\u88ab\u63a7\u7aef\u4e0a root@notty \u8fdb\u7a0b\u4e00\u76f4\u5b58\u5728<\/span><\/h3>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>[root@backup ~]# ps -ef|grep sshd\nroot      35274      1  0 15:25 ?        00:00:00 \/usr\/sbin\/sshd\nroot      37004  35274  0 16:23 ?        00:00:00 sshd: root@pts\/2\nroot      37062  35274  0 16:55 ?        00:00:00 sshd: root@notty\nroot      37154  37006  0 16:55 pts\/2    00:00:00 grep --color=auto sshd<\/pre>\n<\/div>\n<\/div>\n<h3><span id=\\\"522\\\">5.2.2 \u89e3\u51b3\u529e\u6cd5<\/span><\/h3>\n<p>\u9996\u5148\uff0c\u5c06\u8be5\u8fdb\u7a0b\u5e72\u6389<\/p>\n<div>\n<p class=\\\"ac\\\">kill pid<\/p>\n<\/div>\n<h3><span id=\\\"523_ansible_-vvvv\\\">5.2.3 \u7136\u540e\u4f7f\u7528ansible\u7684 -vvvv \u53c2\u6570\u67e5\u770b\u6267\u884c\u7684\u9519\u8bef\u4fe1\u606f<\/span><\/h3>\n<div>\n<div class=\\\"cnblogs_code\\\">\n<pre>Loading callback plugin minimal of type stdout, v2.0 from \/usr\/lib\/python2.6\/site-packages\/ansible\/plugins\/callback\/__init__.pyc\nMETA: ran handlers\nUsing module file \/usr\/lib\/python2.6\/site-packages\/ansible\/modules\/system\/ping.py\n&lt;172.16.1.8&gt; ESTABLISH SSH CONNECTION FOR USER: None\n&lt;172.16.1.8&gt; SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=\/root\/.ansible\/cp\/923ebeb605 172.16.1.8 \\'\/bin\/sh -c \\'\\\"\\'\\\"\\'echo ~ &amp;&amp; sleep 0\\'\\\"\\'\\\"\\'\\'\n\u2026\u2026<\/pre>\n<\/div>\n<\/div>\n<p>\u627e\u5230\u5728\u54ea\u91cc\u51fa\u9519\u3002<\/p>\n<h3><span id=\\\"524\\\">5.2.4 \u53ef\u80fd\u7684\u9519\u8bef<\/span><\/h3>\n<p>\u5728 \/etc\/ssh\/sshd_config \u6587\u4ef6\u4e2d\u7684\u7b2c132\u884c\u4e3a\u7a7a\uff0c\u5bfc\u81f4sftp \u65e0\u6cd5\u8fde\u63a5\uff0c\u51fa\u9519~<\/p>\n<div>\n<div class=\\\"cnblogs_Highlighter\\\">\n<pre class=\\\"brush:bash;gutter:true;\\\">133 Subsystem       sftp    \/usr\/libexec\/openssh\/sftp-server<\/pre>\n<\/div>\n<\/div>\n<h2><span id=\\\"53_nbspnbsp\\\">5.3 \u5e38\u89c1\u95ee\u9898\u4e8c\uff1a\u00a0\u00a0<\/span><\/h2>\n<div>\n<div class=\\\"cnblogs_Highlighter\\\">\n<pre class=\\\"brush:bash;gutter:true;\\\">[root@m01 ~]# ansible  -k 172.16.1.51 -m ping\nSSH password:\n[WARNING]: No hosts matched, nothing to do<\/pre>\n<\/div>\n<\/div>\n<p>\u539f\u56e0\u5206\u6790\uff1a<br \/>\n\u5728ansible\u7684hosts\u6587\u4ef6\u4e2d\uff0c\u6ca1\u6709\u914d\u7f6e\u76f8\u5e94\u4e3b\u673a\u5730\u5740\u4fe1\u606f<\/p>\n<h3><span id=\\\"531_nbspnbspnbspnbspnbspnbspnbsp\\\">5.3.1 \u5e38\u89c1\u95ee\u9898\u4e09\uff1a\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><\/h3>\n<div>\n<div class=\\\"cnblogs_Highlighter\\\">\n<pre class=\\\"brush:bash;gutter:true;\\\"># ansible -k 172.16.1.51 -m ping\nSSH password:\n172.16.1.51|FAILED! =&gt; {\n\\\"failed\\\": true,\n\\\"msg\\\": \\\"Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this.  Please add this host\\'s fingerprint to your known_hosts file to manage this host.\\\"\n}<\/pre>\n<\/div>\n<\/div>\n<p>\u539f\u56e0\u5206\u6790\uff1a<br \/>\n\u56e0\u4e3a\u6ca1\u6709\u53d7\u63a7\u7aef\u7684\u6307\u7eb9\u4fe1\u606f\uff0c\u5728known_hosts\u6587\u4ef6\u4e2d\n<\/p><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u7b2c1\u7ae0 ssh+key\u5b9e\u73b0\u57fa\u4e8e\u5bc6\u94a5\u8fde\u63a5\uff08ansible\u4f7f\u7528\u524d\u63d0\uff09 \u8bf4\u660e\uff1a \u00a0\u00a0 ansible\u5176\u529f\u80fd\u5b9e\u73b0\u57fa\u4e8eS &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"\" href=\"http:\/\/www.weijing.co\/?p=5442\"> <span class=\"screen-reader-text\">ansible\u670d\u52a1\u90e8\u7f72\u4e0e\u4f7f\u7528<\/span> \u67e5\u770b\u5168\u6587 &raquo;<\/a><\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"default","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":""},"categories":[92,112],"tags":[],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false,"mailpoet_newsletter_max":false,"woocommerce_thumbnail":false,"woocommerce_single":false,"woocommerce_gallery_thumbnail":false,"shop_catalog":false,"shop_single":false,"shop_thumbnail":false},"uagb_author_info":{"display_name":"weijing","author_link":"http:\/\/www.weijing.co\/?author=4"},"uagb_comment_info":0,"uagb_excerpt":"\u7b2c1\u7ae0 ssh+key\u5b9e\u73b0\u57fa\u4e8e\u5bc6\u94a5\u8fde\u63a5\uff08ansible\u4f7f\u7528\u524d\u63d0\uff09 \u8bf4\u660e\uff1a \u00a0\u00a0 ansible\u5176\u529f\u80fd\u5b9e\u73b0\u57fa\u4e8eS&hellip;","_links":{"self":[{"href":"http:\/\/www.weijing.co\/index.php?rest_route=\/wp\/v2\/posts\/5442"}],"collection":[{"href":"http:\/\/www.weijing.co\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.weijing.co\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.weijing.co\/index.php?rest_route=\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"http:\/\/www.weijing.co\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5442"}],"version-history":[{"count":0,"href":"http:\/\/www.weijing.co\/index.php?rest_route=\/wp\/v2\/posts\/5442\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.weijing.co\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5442"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.weijing.co\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5442"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.weijing.co\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5442"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}