{"id":42782,"date":"2023-07-22T00:07:15","date_gmt":"2023-10-17T11:30:54","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8docker%e5%ae%b9%e5%99%a8%e4%b8%ad%e6%89%a7%e8%a1%8cansible\/"},"modified":"2024-04-30T14:45:14","modified_gmt":"2024-04-30T06:45:14","slug":"%e5%9c%a8docker%e5%ae%b9%e5%99%a8%e4%b8%ad%e6%89%a7%e8%a1%8cansible","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8docker%e5%ae%b9%e5%99%a8%e4%b8%ad%e6%89%a7%e8%a1%8cansible\/","title":{"rendered":"\u5728Docker\u5bb9\u5668\u4e2d\u6267\u884cAnsible"},"content":{"rendered":"<h3>\u25a0\u9996\u5148<\/h3>\n<p>\u8fd9\u662f\u4e0a\u4e00\u7bc7\u6587\u7ae0\u7684\u7eed\u7bc7\u3002\u4e0a\u4e00\u7bc7\u6211\u4eec\u5728Azure\u865a\u62df\u673a\u4e2d\u5b89\u88c5\u4e86Docker\uff0c\u5e76\u521b\u5efa\u4e86\u201cJenkins\u201d\u7684Dokerfile\u6765\u8fdb\u884c\u6784\u5efa\uff0c\u5e76\u76f4\u63a5\u901a\u8fc7SSH\u8fde\u63a5\u5230\u4e86\u6bcf\u4e2a\u5bb9\u5668\u3002\u8fd9\u6b21\u6211\u4eec\u5c06\u5728Docker\u4e3b\u673a\u4e0a\u521b\u5efaAnsible\u7684Dockerfile\uff0c\u5e76\u5728\u5bb9\u5668\u548c\u4e3b\u673a\u4e0a\u5206\u522b\u6267\u884cplaybook\u3002<br \/>\n\u53e6\u5916\uff0c\u6839\u636e\u4ee5\u4e0b\u73af\u5883\uff0c\u6700\u7ec8\u6211\u4eec\u5c06\u8bbf\u95eeAzure\u73af\u5883\uff0c\u56e0\u6b64\u6211\u4eec\u4e5f\u5c06\u5728Ansible\u5bb9\u5668\u4e2d\u8fdb\u884c\u8fde\u63a5\u8bbe\u7f6e\uff0c\u4f7f\u5176\u80fd\u591f\u8fde\u63a5\u5230Azure\u73af\u5883\u3002<\/p>\n<p>\u25a0\u8ba1\u5212 (y\u01d4<\/p>\n<p>V1\uff1a\u4eceDocker\u5b89\u88c5\u3001Dockerfile\uff08\u4f7f\u7528Jenkins\uff09\u521b\u5efa\u5230\u542f\u52a8\u955c\u50cf\uff0c\u76f4\u63a5SSH\u8fdb\u5165\u5bb9\u5668<br \/>\nURL\uff1aDocker\u7684\u5b89\u88c5\u548cDockerFile<\/p>\n<p>V2\uff1a\u542f\u52a8Ansible\u955c\u50cf\uff0c\u8bbe\u7f6e\u5bb9\u5668\u95f4SSH\u8fde\u63a5\uff0c\u786e\u8ba4Ansible\u7684\u8fd0\u884c\u72b6\u6001<br \/>\nURL\uff1a\u5728\u5bb9\u5668\u95f4\u4f7f\u7528Ansible\u8fdb\u884c\u8fde\u63a5\u548c\u8fd0\u884c<\/p>\n<p>V3\uff1a\u914d\u7f6eJenkins\uff08\u901a\u8fc7Jenkins\u8fdb\u884cSSH\u8fde\u63a5\uff09\uff0c\u6267\u884c\u4efb\u52a1\u5230\u8fdc\u7a0b\u4e3b\u673a<br \/>\nURL\uff1a\u901a\u8fc7Jenkins\u5728\u5bb9\u5668\u95f4\u8fdb\u884c\u8fde\u63a5\u548c\u4efb\u52a1\u6267\u884c<\/p>\n<p>V4\uff1a\u4f7f\u7528AnsiblePlaybook\uff08\u521b\u5efaAZVM\u548c\u76f8\u5173\u8d44\u6e90\uff09\uff0c\u786e\u8ba4\u8fd0\u884c\u72b6\u6001\uff08\u4eceJenkins\u6267\u884c\uff09<br \/>\nURL\uff1a\u4f7f\u7528Ansible\u8fdb\u884c\u4e91\u8bbe\u65bd\u6784\u5efa\uff08Azure\uff09<\/p>\n<h3>\u25a0\u5f62\u8c61<\/h3>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d4eab37434c4406cc14dd\/5-0.png\" alt=\"DOC02.png\" \/><\/div>\n<h3>\u25a0\u73af\u5883<\/h3>\n<p>\u3010Docker\u4e3b\u673a\u3011<br \/>\nAzureVM\uff1aCentOS<br \/>\n\u4e3b\u673a\u540d\uff1aVMDO01<br \/>\n\u7aef\u53e3\uff1assh,7033,8033<br \/>\n\u3010\u5bb9\u5668 1\uff08jenkins \u5bb9\u5668\uff09\u3011<br \/>\n\u5bb9\u5668\u89d2\u8272\uff1ajenkins<br \/>\n\u203b\u8fd9\u662f\u5728\u524d\u4e00\u7bc7\u6587\u7ae0\u4e2d\u521b\u5efa\u7684\u5bb9\u5668\u3002<\/p>\n<p>\u8bf7\u6ce8\u610f\u4ee5\u4e0b\u8981\u6c42\uff1a<br \/>\n&#8211; \u5fc5\u987b\u62e5\u6709Azure\u8d26\u6237\u3002<br \/>\n&#8211; \u673a\u5668\u9700\u8981\u53ef\u4ee5\u767b\u5f55Azure\u3002<\/p>\n<p>\u25a0\u8981\u505a\u7684\u4e8b\u60c5<br \/>\n\u30101\u3011\u521b\u5efaAnsible\u5bb9\u5668<br \/>\n\u30102\u3011\u5efa\u7acbSSH\u8fde\u63a5<br \/>\n\u30103\u3011\u786e\u8ba4Ansible\u8fd0\u884c<\/p>\n<hr \/>\n<h3>\u25a0\u6b65\u9aa4<\/h3>\n<h4>\u30101\u3011\u521b\u5efaAnsible\u5bb9\u5668<\/h4>\n<hr \/>\n<p>\uff08\uff11\uff09 \u767b\u5f55\u5230Docker\u4e3b\u673a<br \/>\n\uff08\uff12\uff09 \u521b\u5efa\u7528\u4e8e\u5b58\u50a8Dockerfile\u7684\u76ee\u5f55<\/p>\n<pre class=\"post-pre\"><code><span class=\"n\">mkdir<\/span> <span class=\"o\">-<\/span><span class=\"nb\">p<\/span> <span class=\"sr\">\/doc.file\/<\/span><span class=\"n\">docansible<\/span>\r\n<\/code><\/pre>\n<p>\uff08\uff13\uff09. \u521b\u5efaDockerfile\uff08Ansible\uff09<br \/>\n\u203b \u4f7f\u7528\u8fd9\u4e2a\u6b65\u9aa4\u53ef\u4ee5\u5728[Ansible\u5bb9\u5668]\u4e2d\u6279\u91cf\u5b89\u88c5\u548c\u914d\u7f6e\u6240\u9700\u7684\u8f6f\u4ef6\u5305\u3002\u901a\u8fc7\u521b\u5efaDockerfile\uff0c\u53ea\u8981\u6709Docker\u5728\u4efb\u4f55\u73af\u5883\u4e2d\u90fd\u53ef\u4ee5\u4f7f\u7528\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"n\">vi<\/span> <span class=\"sr\">\/doc.file\/<\/span><span class=\"n\">docansible<\/span><span class=\"o\">\/<\/span><span class=\"n\">dockerfile<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"c1\"># OS<\/span>\r\n<span class=\"no\">FROM<\/span> <span class=\"n\">centos<\/span>\r\n\r\n<span class=\"c1\"># SSH,Python,PIP\u7b49 pkg install<\/span>\r\n<span class=\"no\">RUN<\/span> <span class=\"n\">yum<\/span> <span class=\"n\">install<\/span> <span class=\"o\">-<\/span><span class=\"n\">y<\/span> <span class=\"n\">gcc<\/span> <span class=\"n\">libffi<\/span><span class=\"o\">-<\/span><span class=\"n\">devel<\/span> <span class=\"n\">python<\/span><span class=\"o\">-<\/span><span class=\"n\">devel<\/span> <span class=\"n\">openssl<\/span><span class=\"o\">-<\/span><span class=\"n\">devel<\/span> <span class=\"n\">epel<\/span><span class=\"o\">-<\/span><span class=\"n\">release<\/span>\r\n<span class=\"no\">RUN<\/span> <span class=\"n\">yum<\/span> <span class=\"n\">install<\/span> <span class=\"o\">-<\/span><span class=\"n\">y<\/span> <span class=\"n\">openssh<\/span><span class=\"o\">-<\/span><span class=\"n\">server<\/span> <span class=\"n\">openssh<\/span><span class=\"o\">-<\/span><span class=\"n\">clients<\/span> <span class=\"n\">sshpass<\/span>\r\n<span class=\"no\">RUN<\/span> <span class=\"n\">curl<\/span> <span class=\"o\">-<\/span><span class=\"n\">kL<\/span> <span class=\"n\">https<\/span><span class=\"ss\">:\/<\/span><span class=\"o\">\/<\/span><span class=\"n\">bootstrap<\/span><span class=\"p\">.<\/span><span class=\"nf\">pypa<\/span><span class=\"p\">.<\/span><span class=\"nf\">io<\/span><span class=\"o\">\/<\/span><span class=\"n\">get<\/span><span class=\"o\">-<\/span><span class=\"n\">pip<\/span><span class=\"p\">.<\/span><span class=\"nf\">py<\/span> <span class=\"o\">|<\/span> <span class=\"n\">python<\/span>\r\n\r\n<span class=\"c1\"># Ansible Install<\/span>\r\n<span class=\"no\">RUN<\/span> <span class=\"n\">pip<\/span> <span class=\"n\">install<\/span> <span class=\"n\">ansible<\/span><span class=\"p\">[<\/span><span class=\"n\">azure<\/span><span class=\"p\">]<\/span>\r\n\r\n<span class=\"c1\"># ms azurecli 2.0 public key import<\/span>\r\n<span class=\"no\">RUN<\/span> <span class=\"n\">rpm<\/span> <span class=\"o\">--<\/span><span class=\"n\">import<\/span> <span class=\"n\">https<\/span><span class=\"ss\">:\/<\/span><span class=\"o\">\/<\/span><span class=\"n\">packages<\/span><span class=\"p\">.<\/span><span class=\"nf\">microsoft<\/span><span class=\"p\">.<\/span><span class=\"nf\">com<\/span><span class=\"o\">\/<\/span><span class=\"n\">keys<\/span><span class=\"o\">\/<\/span><span class=\"n\">microsoft<\/span><span class=\"p\">.<\/span><span class=\"nf\">asc<\/span>\r\n\r\n<span class=\"c1\"># azurecli repogistory <\/span>\r\n<span class=\"no\">RUN<\/span> <span class=\"n\">sh<\/span> <span class=\"o\">-<\/span><span class=\"n\">c<\/span> <span class=\"s1\">'echo -e \"[azure-cli]\\nname=Azure CLI\\nbaseurl=https:\/\/packages.microsoft.com\/yumrepos\/azure-cli\\nenabled=1\\ngpgcheck=1\\ngpgkey=https:\/\/packages.microsoft.com\/keys\/microsoft.asc\" &gt; \/etc\/yum.repos.d\/azure-cli.repo'<\/span>\r\n\r\n<span class=\"c1\"># ms azurecli 2.0 install<\/span>\r\n<span class=\"no\">RUN<\/span> <span class=\"n\">yum<\/span> <span class=\"n\">install<\/span> <span class=\"o\">-<\/span><span class=\"n\">y<\/span> <span class=\"n\">azure<\/span><span class=\"o\">-<\/span><span class=\"n\">cli<\/span>\r\n\r\n<span class=\"c1\"># root password<\/span>\r\n<span class=\"no\">RUN<\/span> <span class=\"n\">echo<\/span> <span class=\"nb\">p<\/span><span class=\"vi\">@ssw0rd<\/span> <span class=\"o\">|<\/span> <span class=\"n\">passwd<\/span> <span class=\"o\">--<\/span><span class=\"n\">stdin<\/span> <span class=\"n\">root<\/span>\r\n\r\n<span class=\"c1\"># ssh root login (\u975e\u63a8\u5968)<\/span>\r\n<span class=\"no\">RUN<\/span> <span class=\"n\">sed<\/span> <span class=\"o\">-<\/span><span class=\"n\">ri<\/span> <span class=\"s2\">\"s\/#PermitRootLogin yes\/PermitRootLogin yes\/g\"<\/span> <span class=\"o\">\/<\/span><span class=\"n\">etc<\/span><span class=\"o\">\/<\/span><span class=\"n\">ssh<\/span><span class=\"o\">\/<\/span><span class=\"n\">sshd_config<\/span>\r\n<\/code><\/pre>\n<p>\uff08\uff14\uff09. \u5efa\u7acb Dockerfile\uff08Ansible \u5bb9\u5668\uff09\u7684\u6784\u5efa<\/p>\n<pre class=\"post-pre\"><code><span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"vi\">@VMDO001<\/span> <span class=\"n\">docansible<\/span><span class=\"p\">]<\/span><span class=\"c1\"># docker images<\/span>\r\n<span class=\"no\">REPOSITORY<\/span>            <span class=\"no\">TAG<\/span>                 <span class=\"no\">IMAGE<\/span> <span class=\"no\">ID<\/span>            <span class=\"no\">CREATED<\/span>             <span class=\"no\">SIZE<\/span>\r\n<span class=\"n\">centos<\/span><span class=\"o\">\/<\/span><span class=\"n\">jenkinsbuild<\/span>   <span class=\"n\">latest<\/span>              <span class=\"mo\">06401<\/span><span class=\"mi\">97<\/span><span class=\"n\">d6307<\/span>        <span class=\"mi\">17<\/span> <span class=\"n\">hours<\/span> <span class=\"n\">ago<\/span>        <span class=\"mf\">728.7<\/span> <span class=\"no\">MB<\/span>\r\n<span class=\"n\">docker<\/span><span class=\"p\">.<\/span><span class=\"nf\">io<\/span><span class=\"o\">\/<\/span><span class=\"n\">centos<\/span>      <span class=\"n\">latest<\/span>              <span class=\"n\">ff426288ea90<\/span>        <span class=\"mi\">6<\/span> <span class=\"n\">weeks<\/span> <span class=\"n\">ago<\/span>         <span class=\"mf\">207.2<\/span> <span class=\"no\">MB<\/span>\r\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"vi\">@VMDO001<\/span> <span class=\"n\">docansible<\/span><span class=\"p\">]<\/span><span class=\"c1\">#<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"n\">docker<\/span> <span class=\"n\">build<\/span> <span class=\"o\">-<\/span><span class=\"n\">t<\/span> <span class=\"n\">centos<\/span><span class=\"o\">\/<\/span><span class=\"n\">ansiblebuild<\/span> <span class=\"o\">.<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"vi\">@VMDO001<\/span> <span class=\"n\">docansible<\/span><span class=\"p\">]<\/span><span class=\"c1\"># docker images<\/span>\r\n<span class=\"no\">REPOSITORY<\/span>            <span class=\"no\">TAG<\/span>                 <span class=\"no\">IMAGE<\/span> <span class=\"no\">ID<\/span>            <span class=\"no\">CREATED<\/span>             <span class=\"no\">SIZE<\/span>\r\n<span class=\"n\">centos<\/span><span class=\"o\">\/<\/span><span class=\"n\">ansiblebuild<\/span>   <span class=\"n\">latest<\/span>              <span class=\"n\">d76b6362598e<\/span>        <span class=\"mi\">5<\/span> <span class=\"n\">minutes<\/span> <span class=\"n\">ago<\/span>       <span class=\"mf\">713.7<\/span> <span class=\"no\">MB<\/span>\r\n<span class=\"n\">centos<\/span><span class=\"o\">\/<\/span><span class=\"n\">jenkinsbuild<\/span>   <span class=\"n\">latest<\/span>              <span class=\"mo\">06401<\/span><span class=\"mi\">97<\/span><span class=\"n\">d6307<\/span>        <span class=\"mi\">17<\/span> <span class=\"n\">hours<\/span> <span class=\"n\">ago<\/span>        <span class=\"mf\">728.7<\/span> <span class=\"no\">MB<\/span>\r\n<span class=\"n\">docker<\/span><span class=\"p\">.<\/span><span class=\"nf\">io<\/span><span class=\"o\">\/<\/span><span class=\"n\">centos<\/span>      <span class=\"n\">latest<\/span>              <span class=\"n\">ff426288ea90<\/span>        <span class=\"mi\">6<\/span> <span class=\"n\">weeks<\/span> <span class=\"n\">ago<\/span>         <span class=\"mf\">207.2<\/span> <span class=\"no\">MB<\/span>\r\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"vi\">@VMDO001<\/span> <span class=\"n\">docansible<\/span><span class=\"p\">]<\/span><span class=\"c1\">#<\/span>\r\n<\/code><\/pre>\n<p>\uff08\uff15\uff09\uff0e\u542f\u52a8\u5bb9\u5668\uff08Ansible\u5bb9\u5668\uff09<\/p>\n<pre class=\"post-pre\"><code><span class=\"n\">docker<\/span> <span class=\"n\">ps<\/span> <span class=\"o\">-<\/span><span class=\"n\">a<\/span>\r\n<span class=\"n\">docker<\/span> <span class=\"nb\">exec<\/span> <span class=\"o\">-<\/span><span class=\"n\">it<\/span> <span class=\"o\">&lt;<\/span><span class=\"n\">containerID<\/span><span class=\"o\">&gt;<\/span> <span class=\"sr\">\/bin\/<\/span><span class=\"n\">bash<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"vi\">@VMDO001<\/span> <span class=\"n\">docansible<\/span><span class=\"p\">]<\/span><span class=\"c1\"># docker ps -a<\/span>\r\n<span class=\"no\">CONTAINER<\/span> <span class=\"no\">ID<\/span>        <span class=\"no\">IMAGE<\/span>                        <span class=\"no\">COMMAND<\/span>             <span class=\"no\">CREATED<\/span>             <span class=\"no\">STATUS<\/span>              <span class=\"no\">PORTS<\/span>                                          <span class=\"no\">NAMES<\/span>\r\n<span class=\"mi\">1<\/span><span class=\"n\">f04c65ff3b0<\/span>        <span class=\"n\">centos<\/span><span class=\"o\">\/<\/span><span class=\"n\">ansiblebuild<\/span><span class=\"ss\">:latest<\/span>   <span class=\"s2\">\"\/sbin\/init\"<\/span>        <span class=\"mi\">14<\/span> <span class=\"n\">seconds<\/span> <span class=\"n\">ago<\/span>      <span class=\"no\">Up<\/span> <span class=\"mi\">12<\/span> <span class=\"n\">seconds<\/span>                                                      <span class=\"n\">tiny_aryabhata<\/span>\r\n<span class=\"mi\">30<\/span><span class=\"n\">aaa962d65f<\/span>        <span class=\"n\">centos<\/span><span class=\"o\">\/<\/span><span class=\"n\">jenkinsbuild<\/span>          <span class=\"s2\">\"\/sbin\/init\"<\/span>        <span class=\"mi\">17<\/span> <span class=\"n\">hours<\/span> <span class=\"n\">ago<\/span>        <span class=\"no\">Up<\/span> <span class=\"mi\">17<\/span> <span class=\"n\">hours<\/span>         <span class=\"mf\">0.0<\/span><span class=\"o\">.<\/span><span class=\"mf\">0.0<\/span><span class=\"p\">:<\/span><span class=\"mi\">7033<\/span><span class=\"o\">-&gt;<\/span><span class=\"mi\">22<\/span><span class=\"o\">\/<\/span><span class=\"n\">tcp<\/span><span class=\"p\">,<\/span> <span class=\"mf\">0.0<\/span><span class=\"o\">.<\/span><span class=\"mf\">0.0<\/span><span class=\"p\">:<\/span><span class=\"mi\">8033<\/span><span class=\"o\">-&gt;<\/span><span class=\"mi\">8080<\/span><span class=\"o\">\/<\/span><span class=\"n\">tcp<\/span>   <span class=\"n\">elated_hawking<\/span>\r\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"vi\">@VMDO001<\/span> <span class=\"n\">docansible<\/span><span class=\"p\">]<\/span><span class=\"c1\"># docker exec -it 1f04c65ff3b0 \/bin\/bash<\/span>\r\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"mi\">1<\/span><span class=\"n\">f04c65ff3b0<\/span> <span class=\"sr\">\/]#\r\n\r\n<\/span><\/code><\/pre>\n<p>\u786e\u8ba4\u5b89\u88c5\u4e86 Ansible \u548c Azure cli\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"c1\"># Ansible Version check<\/span>\r\n<span class=\"n\">ansible<\/span> <span class=\"o\">--<\/span><span class=\"n\">version<\/span>\r\n\r\n<span class=\"c1\"># AzureCLI<\/span>\r\n<span class=\"n\">az<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"mi\">1<\/span><span class=\"n\">f04c65ff3b0<\/span> <span class=\"sr\">\/]# ansible --version\r\nansible 2.4.3.0\r\n  config file = None\r\n  configured module search path = [u'\/<\/span><span class=\"n\">root<\/span><span class=\"o\">\/<\/span><span class=\"p\">.<\/span><span class=\"nf\">ansible<\/span><span class=\"o\">\/<\/span><span class=\"n\">plugins<\/span><span class=\"o\">\/<\/span><span class=\"n\">modules<\/span><span class=\"s1\">', u'<\/span><span class=\"o\">\/<\/span><span class=\"n\">usr<\/span><span class=\"o\">\/<\/span><span class=\"n\">share<\/span><span class=\"o\">\/<\/span><span class=\"n\">ansible<\/span><span class=\"o\">\/<\/span><span class=\"n\">plugins<\/span><span class=\"o\">\/<\/span><span class=\"n\">modules<\/span><span class=\"s1\">']\r\n  ansible python module location = \/usr\/lib\/python2.7\/site-packages\/ansible\r\n  executable location = \/usr\/bin\/ansible\r\n  python version = 2.7.5 (default, Aug  4 2017, 00:39:18) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)]\r\n[root@1f04c65ff3b0 \/]# az\r\n\r\nWelcome to Azure CLI!\r\n---------------------\r\nUse `az -h` to see available commands or go to https:\/\/aka.ms\/cli.\r\n\r\nTelemetry\r\n---------\r\nThe Azure CLI collects usage data in order to improve your experience.\r\nThe data is anonymous and does not include commandline argument values.\r\nThe data is collected by Microsoft.\r\n\r\nYou can change your telemetry settings with `az configure`.\r\n\r\n\r\n     \/\\\r\n    \/  \\    _____   _ _  ___ _\r\n   \/ \/\\ \\  |_  \/ | | | \\'<\/span><span class=\"n\">__<\/span><span class=\"o\">\/<\/span> <span class=\"n\">_<\/span><span class=\"p\">\\<\/span>\r\n  <span class=\"sr\">\/ ____ \\  \/<\/span> <span class=\"o\">\/|<\/span> <span class=\"o\">|<\/span><span class=\"n\">_<\/span><span class=\"o\">|<\/span> <span class=\"o\">|<\/span> <span class=\"o\">|<\/span> <span class=\"o\">|<\/span>  <span class=\"n\">__<\/span><span class=\"o\">\/<\/span>\r\n <span class=\"sr\">\/_\/<\/span>    <span class=\"p\">\\<\/span><span class=\"n\">_<\/span><span class=\"p\">\\<\/span><span class=\"sr\">\/___|\\__,_|_|  \\___|\r\n\r\n\r\nWelcome to the cool new Azure CLI!\r\n&lt;\u2026&gt;\r\n\r\n[root@1f04c65ff3b0 \/<\/span><span class=\"p\">]<\/span><span class=\"c1\">#<\/span>\r\n<\/code><\/pre>\n<h4>\u30102\u3011SSH\u8fde\u63a5<\/h4>\n<p>\u68c0\u67e5[Jenkins\u5bb9\u5668]\u662f\u5426\u53ef\u4ee5\u4ee5root\u8eab\u4efd\u901a\u8fc7SSH\u8fde\u63a5\u5230[\u4e3b\u673a]\u3002\u524d\u63d0\u6761\u4ef6\u662f\u53cc\u65b9\u90fd\u5b89\u88c5\u4e86SSH\u670d\u52a1\u5668\u548c\u5ba2\u6237\u7aef\u5305\uff0c\u5e76\u4e14\u53ef\u4ee5\u4f7f\u7528[root]\u8fdb\u884c\u767b\u5f55\u3002<\/p>\n<p>\u7531\u4e8e\u6b64\u5904\u5df2\u7ecf\u5728Dockerfile\u4e2d\u8fdb\u884c\u4e86\u5b89\u88c5\u548c\u914d\u7f6e\uff0c\u56e0\u6b64\u53ea\u9700\u8981\u786e\u8ba4\u8bbe\u7f6e\u5e76\u8fdb\u884c\u8fde\u63a5\u6d4b\u8bd5\u5373\u53ef\u3002<\/p>\n<p>\u786e\u5b9a\u8bbe\u7f6e<\/p>\n<pre class=\"post-pre\"><code><span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"mi\">1<\/span><span class=\"n\">f04c65ff3b0<\/span> <span class=\"sr\">\/]# cat \/e<\/span><span class=\"n\">tc<\/span><span class=\"o\">\/<\/span><span class=\"n\">ssh<\/span><span class=\"o\">\/<\/span><span class=\"n\">sshd_config<\/span> <span class=\"o\">|<\/span> <span class=\"n\">grep<\/span> <span class=\"no\">PermitRootLogin<\/span>\r\n<span class=\"no\">PermitRootLogin<\/span> <span class=\"n\">yes<\/span>\r\n<span class=\"c1\"># the setting of \"PermitRootLogin without-password\".<\/span>\r\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"mi\">1<\/span><span class=\"n\">f04c65ff3b0<\/span> <span class=\"sr\">\/]#\r\n<\/span><\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"mi\">30<\/span><span class=\"n\">aaa962d65f<\/span> <span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># cat \/etc\/ssh\/sshd_config | grep PermitRootLogin<\/span>\r\n<span class=\"no\">PermitRootLogin<\/span> <span class=\"n\">yes<\/span>\r\n<span class=\"c1\"># the setting of \"PermitRootLogin without-password\".<\/span>\r\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"mi\">30<\/span><span class=\"n\">aaa962d65f<\/span> <span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\">#<\/span>\r\n<\/code><\/pre>\n<p>\uff08\uff12\uff09\u8fde\u63a5\u786e\u8ba4<br \/>\n\u203b\u8981\u6c42\u540c\u65f6\u53ef\u4ee5\u4eceAnsible\u5bb9\u5668\u548cJenkins\u5bb9\u5668\u4e2d\u6267\u884c\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"n\">ssh<\/span> <span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">hostIP<\/span><span class=\"o\">&gt;<\/span>\r\n<span class=\"n\">ssh<\/span> <span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"o\">&lt;<\/span><span class=\"no\">Container1<\/span><span class=\"o\">-<\/span><span class=\"no\">IP<\/span><span class=\"o\">&gt;<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"mi\">1<\/span><span class=\"n\">f04c65ff3b0<\/span> <span class=\"sr\">\/]# ssh root@&lt;hostIP&gt;\r\nThe authenticity of host '&lt;hostIP&gt; (&lt;hostIP&gt;)' can't be established.\r\nECDSA key fingerprint is SHA256:olqZGuW0g+q2EwXoM5bBidy9b1CiEbGMcylPDjuR\/<\/span><span class=\"no\">Lc<\/span><span class=\"o\">.<\/span>\r\n<span class=\"no\">ECDSA<\/span> <span class=\"n\">key<\/span> <span class=\"n\">fingerprint<\/span> <span class=\"n\">is<\/span> <span class=\"no\">MD5<\/span><span class=\"p\">:<\/span><span class=\"mi\">4<\/span><span class=\"n\">f<\/span><span class=\"ss\">:ea:fc<\/span><span class=\"p\">:<\/span><span class=\"mi\">31<\/span><span class=\"p\">:<\/span><span class=\"mi\">3<\/span><span class=\"n\">e<\/span><span class=\"ss\">:b9<\/span><span class=\"p\">:<\/span><span class=\"mi\">35<\/span><span class=\"ss\">:e8:c0:b0<\/span><span class=\"p\">:<\/span><span class=\"mi\">23<\/span><span class=\"p\">:<\/span><span class=\"mo\">04<\/span><span class=\"p\">:<\/span><span class=\"mi\">76<\/span><span class=\"p\">:<\/span><span class=\"mi\">1<\/span><span class=\"n\">c<\/span><span class=\"p\">:<\/span><span class=\"mi\">59<\/span><span class=\"p\">:<\/span><span class=\"mi\">66<\/span><span class=\"o\">.<\/span>\r\n<span class=\"no\">Are<\/span> <span class=\"n\">you<\/span> <span class=\"n\">sure<\/span> <span class=\"n\">you<\/span> <span class=\"n\">want<\/span> <span class=\"n\">to<\/span> <span class=\"n\">continue<\/span> <span class=\"n\">connecting<\/span> <span class=\"p\">(<\/span><span class=\"n\">yes<\/span><span class=\"o\">\/<\/span><span class=\"n\">no<\/span><span class=\"p\">)?<\/span> <span class=\"n\">yes<\/span>\r\n<span class=\"no\">Warning<\/span><span class=\"p\">:<\/span> <span class=\"no\">Permanently<\/span> <span class=\"n\">added<\/span> <span class=\"s1\">'&lt;hostIP&gt;'<\/span> <span class=\"p\">(<\/span><span class=\"no\">ECDSA<\/span><span class=\"p\">)<\/span> <span class=\"n\">to<\/span> <span class=\"n\">the<\/span> <span class=\"n\">list<\/span> <span class=\"n\">of<\/span> <span class=\"n\">known<\/span> <span class=\"n\">hosts<\/span><span class=\"o\">.<\/span>\r\n<span class=\"no\">Password<\/span><span class=\"p\">:<\/span><span class=\"err\">\u3000<\/span><span class=\"o\">&lt;<\/span><span class=\"no\">Password<\/span><span class=\"o\">&gt;<\/span>\r\n<span class=\"no\">Last<\/span> <span class=\"ss\">login: <\/span><span class=\"no\">Thu<\/span> <span class=\"no\">Feb<\/span> <span class=\"mi\">22<\/span> <span class=\"mo\">02<\/span><span class=\"p\">:<\/span><span class=\"mi\">15<\/span><span class=\"p\">:<\/span><span class=\"mi\">46<\/span> <span class=\"mi\">2018<\/span> <span class=\"n\">from<\/span> <span class=\"o\">&lt;<\/span><span class=\"err\">\u63a5\u7d9a\u5148<\/span><span class=\"p\">(<\/span><span class=\"err\">\u4f5c\u696d\u7aef\u672b<\/span><span class=\"p\">)<\/span><span class=\"no\">IP<\/span><span class=\"o\">&gt;<\/span>\r\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"vi\">@VMDO001<\/span> <span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\">#exit<\/span>\r\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"mi\">1<\/span><span class=\"n\">f04c65ff3b0<\/span> <span class=\"sr\">\/]#\r\n[root@1f04c65ff3b0 \/<\/span><span class=\"p\">]<\/span><span class=\"c1\">#<\/span>\r\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"mi\">1<\/span><span class=\"n\">f04c65ff3b0<\/span> <span class=\"sr\">\/]# ssh root@&lt;Jenkins\u30b3\u30f3\u30c6\u30ca-IP&gt;\r\nThe authenticity of host '&lt;Jenkins\u30b3\u30f3\u30c6\u30ca-IP&gt; (&lt;Jenkins\u30b3\u30f3\u30c6\u30ca-IP&gt;)' can't be established.\r\nECDSA key fingerprint is SHA256:olqZGuW0g+q2EwXoM5bBidy9b1CiEbGMcylPDjuR\/<\/span><span class=\"no\">Lc<\/span><span class=\"o\">.<\/span>\r\n<span class=\"no\">ECDSA<\/span> <span class=\"n\">key<\/span> <span class=\"n\">fingerprint<\/span> <span class=\"n\">is<\/span> <span class=\"no\">MD5<\/span><span class=\"p\">:<\/span><span class=\"mi\">4<\/span><span class=\"n\">f<\/span><span class=\"ss\">:ea:fc<\/span><span class=\"p\">:<\/span><span class=\"mi\">31<\/span><span class=\"p\">:<\/span><span class=\"mi\">3<\/span><span class=\"n\">e<\/span><span class=\"ss\">:b9<\/span><span class=\"p\">:<\/span><span class=\"mi\">35<\/span><span class=\"ss\">:e8:c0:b0<\/span><span class=\"p\">:<\/span><span class=\"mi\">23<\/span><span class=\"p\">:<\/span><span class=\"mo\">04<\/span><span class=\"p\">:<\/span><span class=\"mi\">76<\/span><span class=\"p\">:<\/span><span class=\"mi\">1<\/span><span class=\"n\">c<\/span><span class=\"p\">:<\/span><span class=\"mi\">59<\/span><span class=\"p\">:<\/span><span class=\"mi\">66<\/span><span class=\"o\">.<\/span>\r\n<span class=\"no\">Are<\/span> <span class=\"n\">you<\/span> <span class=\"n\">sure<\/span> <span class=\"n\">you<\/span> <span class=\"n\">want<\/span> <span class=\"n\">to<\/span> <span class=\"n\">continue<\/span> <span class=\"n\">connecting<\/span> <span class=\"p\">(<\/span><span class=\"n\">yes<\/span><span class=\"o\">\/<\/span><span class=\"n\">no<\/span><span class=\"p\">)?<\/span> <span class=\"n\">yes<\/span>\r\n<span class=\"no\">Warning<\/span><span class=\"p\">:<\/span> <span class=\"no\">Permanently<\/span> <span class=\"n\">added<\/span> <span class=\"s1\">'&lt;Jenkins\u30b3\u30f3\u30c6\u30ca-IP&gt;'<\/span> <span class=\"p\">(<\/span><span class=\"no\">ECDSA<\/span><span class=\"p\">)<\/span> <span class=\"n\">to<\/span> <span class=\"n\">the<\/span> <span class=\"n\">list<\/span> <span class=\"n\">of<\/span> <span class=\"n\">known<\/span> <span class=\"n\">hosts<\/span><span class=\"o\">.<\/span>\r\n<span class=\"no\">Password<\/span><span class=\"p\">:<\/span><span class=\"err\">\u3000<\/span><span class=\"o\">&lt;<\/span><span class=\"no\">Password<\/span><span class=\"o\">&gt;<\/span>\r\n<span class=\"no\">Last<\/span> <span class=\"ss\">login: <\/span><span class=\"no\">Thu<\/span> <span class=\"no\">Feb<\/span> <span class=\"mi\">22<\/span> <span class=\"mo\">02<\/span><span class=\"p\">:<\/span><span class=\"mi\">15<\/span><span class=\"p\">:<\/span><span class=\"mi\">46<\/span> <span class=\"mi\">2018<\/span> <span class=\"n\">from<\/span> <span class=\"o\">&lt;<\/span><span class=\"err\">\u63a5\u7d9a\u5148<\/span><span class=\"p\">(<\/span><span class=\"err\">\u4f5c\u696d\u7aef\u672b<\/span><span class=\"p\">)<\/span><span class=\"no\">IP<\/span><span class=\"o\">&gt;<\/span>\r\n<\/code><\/pre>\n<h4>\u30103\u3011. \u786e\u8ba4Ansible\u662f\u5426\u6b63\u5e38\u8fd0\u884c<\/h4>\n<p>\u5728\u4e4b\u524d\u7684\u6587\u7ae0\u4e2d\uff0c\u6211\u5011\u6703\u4f7f\u7528\u300cansible\u5bb9\u5668\u300d\u4f86\u5c0d\u4e4b\u524d\u5efa\u7acb\u7684\u300cjenkins\u5bb9\u5668\u300d\u548c\u300cDocker\u4e3b\u6a5f(VMDO01)\u300d\u57f7\u884c\u300cansible\u300d\u3002\u900f\u904e\u6210\u529f\u57f7\u884c\u6b64\u6b65\u9a5f\uff0c\u6211\u5011\u53ef\u4ee5\u78ba\u8a8dAnsible\u7684\u904b\u4f5c\u72c0\u614b\u3002<\/p>\n<p>\u3010\u6ce8\u610f\u3011<br \/>\n\u8bf7\u6ce8\u610f\uff0c\u5bf9\u4e8eansible\uff0c\u8fde\u63a5\u81f3Linux\u65f6\u9700\u8981\u4f7f\u7528SSH\u3002\u5982\u679c\u5728\u6e05\u5355\u6587\u4ef6\u4e2d\u672a\u8fdb\u884c\u914d\u7f6e\uff0c\u5c06\u9700\u8981\u63d0\u4f9b\u5bc6\u7801\u3002\u6b64\u5916\uff0c\u5728\u5bf9ansible\u5bb9\u5668\u8fdb\u884c\u8fde\u63a5\u65f6\uff0c\u9700\u8981\u786e\u4fddsshpath\uff08\u5df2\u5728Dockerfile\u4e2d\u5b89\u88c5\uff09\u5df2\u7ecf\u5b89\u88c5\uff0c\u5426\u5219\u4f1a\u51fa\u73b0\u9519\u8bef\u3002<br \/>\n\u6b64\u5916\uff0c\u5728\u521b\u5efa\u7684\u6e05\u5355\u6587\u4ef6\u4e2d\uff0c\u53ef\u4ee5\u901a\u8fc7\u6307\u5b9a\u53d8\u91cf\u6765\u963b\u6b62\u5728\u6267\u884c\u547d\u4ee4\u65f6\u8981\u6c42\u5bc6\u7801\u7684\u8bbe\u7f6e\u3002\u7136\u800c\uff0c\u7531\u4e8e\u8be5\u8bbe\u7f6e\u8ba1\u5212\u5728\u201cV3\u201d\u7248\u672c\u4e2d\u5b9e\u65bd\uff0c\u6240\u4ee5\u672c\u6b21\u5c06\u5728\u6e05\u5355\u6587\u4ef6\u4e2d\u4e0d\u6307\u5b9a\u53d8\u91cf\u8fdb\u884c\u8fde\u63a5\u786e\u8ba4\u3002<\/p>\n<p>\uff08\uff11\uff09\u521b\u5efa\u6e05\u5355\u6587\u4ef6<\/p>\n<pre class=\"post-pre\"><code><span class=\"n\">mkdir<\/span> <span class=\"sr\">\/playbook\r\nvi \/<\/span><span class=\"n\">playbook<\/span><span class=\"o\">\/<\/span><span class=\"n\">hosts<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"p\">[<\/span><span class=\"n\">con<\/span><span class=\"p\">]<\/span>\r\n<span class=\"o\">&lt;<\/span><span class=\"no\">Jenkins<\/span><span class=\"err\">\u30b3\u30f3\u30c6\u30ca<\/span><span class=\"o\">-<\/span><span class=\"no\">IP<\/span><span class=\"o\">&gt;<\/span>\r\n\r\n<span class=\"p\">[<\/span><span class=\"n\">hostmachine<\/span><span class=\"p\">]<\/span>\r\n<span class=\"o\">&lt;<\/span><span class=\"n\">hostIP<\/span><span class=\"o\">&gt;<\/span>\r\n<\/code><\/pre>\n<p>\uff08\uff12\uff09\u6267\u884cPing\uff08ansible\uff09\u64cd\u4f5c<\/p>\n<pre class=\"post-pre\"><code><span class=\"c1\"># for container<\/span>\r\n<span class=\"c1\"># -u &lt;user&gt; : &lt;user&gt;\u3067\u306eAnsible\u306e\u5b9f\u884c<\/span>\r\n<span class=\"c1\"># -k : SSH\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u81ea\u5206\u3067\u5165\u529b\u3059\u308b<\/span>\r\n<span class=\"n\">ansible<\/span> <span class=\"n\">con<\/span> <span class=\"o\">-<\/span><span class=\"n\">i<\/span> <span class=\"sr\">\/playbook\/<\/span><span class=\"n\">hosts<\/span> <span class=\"o\">-<\/span><span class=\"n\">m<\/span> <span class=\"n\">ping<\/span> <span class=\"o\">-<\/span><span class=\"n\">u<\/span> <span class=\"n\">root<\/span> <span class=\"o\">-<\/span><span class=\"n\">k<\/span>\r\n<span class=\"c1\"># for hostserver<\/span>\r\n<span class=\"n\">ansible<\/span> <span class=\"n\">hostmachine<\/span> <span class=\"o\">-<\/span><span class=\"n\">i<\/span> <span class=\"sr\">\/playbook\/<\/span><span class=\"n\">hosts<\/span> <span class=\"o\">-<\/span><span class=\"n\">m<\/span> <span class=\"n\">ping<\/span> <span class=\"o\">-<\/span><span class=\"n\">u<\/span> <span class=\"n\">root<\/span> <span class=\"o\">-<\/span><span class=\"n\">k<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"mi\">1<\/span><span class=\"n\">f04c65ff3b0<\/span> <span class=\"sr\">\/]# ansible con -i \/<\/span><span class=\"n\">playbook<\/span><span class=\"o\">\/<\/span><span class=\"n\">hosts<\/span> <span class=\"o\">-<\/span><span class=\"n\">m<\/span> <span class=\"n\">ping<\/span> <span class=\"o\">-<\/span><span class=\"n\">u<\/span> <span class=\"n\">root<\/span> <span class=\"o\">-<\/span><span class=\"n\">k<\/span>\r\n<span class=\"no\">SSH<\/span> <span class=\"ss\">password:\r\n<\/span><span class=\"o\">&lt;<\/span><span class=\"no\">Jenkins<\/span><span class=\"err\">\u30b3\u30f3\u30c6\u30ca<\/span><span class=\"o\">-<\/span><span class=\"no\">IP<\/span><span class=\"o\">&gt;<\/span> <span class=\"o\">|<\/span> <span class=\"no\">SUCCESS<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"s2\">\"changed\"<\/span><span class=\"p\">:<\/span> <span class=\"kp\">false<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"s2\">\"ping\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"pong\"<\/span>\r\n<span class=\"p\">}<\/span>\r\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"mi\">1<\/span><span class=\"n\">f04c65ff3b0<\/span> <span class=\"sr\">\/]# ansible hostmachine -i \/<\/span><span class=\"n\">playbook<\/span><span class=\"o\">\/<\/span><span class=\"n\">hosts<\/span> <span class=\"o\">-<\/span><span class=\"n\">m<\/span> <span class=\"n\">ping<\/span> <span class=\"o\">-<\/span><span class=\"n\">u<\/span> <span class=\"n\">root<\/span> <span class=\"o\">-<\/span><span class=\"n\">k<\/span>\r\n<span class=\"no\">SSH<\/span> <span class=\"ss\">password:\r\n<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">hostIP<\/span><span class=\"o\">&gt;<\/span> <span class=\"o\">|<\/span> <span class=\"no\">SUCCESS<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"s2\">\"changed\"<\/span><span class=\"p\">:<\/span> <span class=\"kp\">false<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"s2\">\"ping\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"pong\"<\/span>\r\n<span class=\"p\">}<\/span>\r\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"mi\">1<\/span><span class=\"n\">f04c65ff3b0<\/span> <span class=\"sr\">\/]#\r\n<\/span><\/code><\/pre>\n<hr \/>\n<h2>\u603b\u7ed3<\/h2>\n<p>\u8fd9\u6b21\u6211\u5728Docker\u5bb9\u5668\u4e2d\u5b89\u88c5\u5e76\u8fd0\u884c\u4e86Ansible\u3002\u4f5c\u4e3a\u611f\u60f3\uff0c\u6211\u89c9\u5f97\u5728\u5bb9\u5668\u673a\u5668\u4e0a\u6784\u5efaAnsible\u65f6\u9700\u8981\u6ce8\u610fSSH\u65b9\u9762\u7684\u95ee\u9898\u3002\u5b9e\u9645\u4e0a\uff0c\u521d\u59cb\u542f\u52a8\u65f6\u5bb9\u5668\u4e2d\u5e76\u6ca1\u6709\u5b89\u88c5SSH\u3002\u6240\u4ee5\u6211\u5728\u8fd9\u6b21\u64cd\u4f5c\u4e2d\u4f7f\u7528\u4e86Dockerfile\u8fdb\u884c\u5b89\u88c5\u3002<br \/>\n\u53e6\u5916\uff0c\u4e3a\u4e86\u8fd0\u884cAnsible\uff0c\u9664\u4e86\u9700\u8981\u5b89\u88c5&#8221;Open-ssh&#8221;\u7684\u670d\u52a1\u5668\u548c\u5ba2\u6237\u7aef\uff0c\u8fd8\u9700\u8981\u5b89\u88c5&#8221;sshpath&#8221;\u3002\u5982\u679c\u6ca1\u6709\u5b89\u88c5&#8221;sshpath&#8221;\uff0c\u5373\u4f7f\u6210\u529f\u8fde\u63a5\uff0cAnsible\u4e5f\u4f1a\u5931\u8d25\u3002<\/p>\n<p>\u7531\u4e8e\u6211\u4eec\u5df2\u7ecf\u6210\u529f\u521b\u5efa\u4e86Jenkins\u548cAnsible\u7684\u73af\u5883\uff0c\u63a5\u4e0b\u6765\u6211\u4eec\u5e0c\u671b\u4e13\u6ce8\u4e8eJenkins\u7684\u914d\u7f6e\u548cplaybook\uff08\u7528\u4e8e\u521b\u5efaAzure\u8d44\u6e90\uff09\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u25a0\u9996\u5148 \u8fd9\u662f\u4e0a\u4e00\u7bc7\u6587\u7ae0\u7684\u7eed\u7bc7\u3002\u4e0a\u4e00\u7bc7\u6211\u4eec\u5728Azure\u865a\u62df\u673a\u4e2d\u5b89\u88c5\u4e86Docker\uff0c\u5e76\u521b\u5efa\u4e86\u201cJenkins\u201d\u7684D [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-42782","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u5728Docker\u5bb9\u5668\u4e2d\u6267\u884cAnsible - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u5728docker\u5bb9\u5668\u4e2d\u6267\u884cansible\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u5728Docker\u5bb9\u5668\u4e2d\u6267\u884cAnsible\" \/>\n<meta property=\"og:description\" content=\"\u25a0\u9996\u5148 \u8fd9\u662f\u4e0a\u4e00\u7bc7\u6587\u7ae0\u7684\u7eed\u7bc7\u3002\u4e0a\u4e00\u7bc7\u6211\u4eec\u5728Azure\u865a\u62df\u673a\u4e2d\u5b89\u88c5\u4e86Docker\uff0c\u5e76\u521b\u5efa\u4e86\u201cJenkins\u201d\u7684D [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u5728docker\u5bb9\u5668\u4e2d\u6267\u884cansible\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-10-17T11:30:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-30T06:45:14+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d4eab37434c4406cc14dd\/5-0.png\" \/>\n<meta name=\"author\" content=\"\u79d1, \u96c5\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u79d1, \u96c5\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8docker%e5%ae%b9%e5%99%a8%e4%b8%ad%e6%89%a7%e8%a1%8cansible\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8docker%e5%ae%b9%e5%99%a8%e4%b8%ad%e6%89%a7%e8%a1%8cansible\/\",\"name\":\"\u5728Docker\u5bb9\u5668\u4e2d\u6267\u884cAnsible - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-10-17T11:30:54+00:00\",\"dateModified\":\"2024-04-30T06:45:14+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/41e222757cdd2a3365361328bd79970a\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8docker%e5%ae%b9%e5%99%a8%e4%b8%ad%e6%89%a7%e8%a1%8cansible\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8docker%e5%ae%b9%e5%99%a8%e4%b8%ad%e6%89%a7%e8%a1%8cansible\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8docker%e5%ae%b9%e5%99%a8%e4%b8%ad%e6%89%a7%e8%a1%8cansible\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u5728Docker\u5bb9\u5668\u4e2d\u6267\u884cAnsible\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/41e222757cdd2a3365361328bd79970a\",\"name\":\"\u79d1, \u96c5\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1b2d3e00a7df03689797ebd4af8c5827ba5af936849a71050ec331f4cf902c5d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1b2d3e00a7df03689797ebd4af8c5827ba5af936849a71050ec331f4cf902c5d?s=96&d=mm&r=g\",\"caption\":\"\u79d1, \u96c5\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/keya\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8docker%e5%ae%b9%e5%99%a8%e4%b8%ad%e6%89%a7%e8%a1%8cansible\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u5728Docker\u5bb9\u5668\u4e2d\u6267\u884cAnsible - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u5728docker\u5bb9\u5668\u4e2d\u6267\u884cansible\/","og_locale":"zh_CN","og_type":"article","og_title":"\u5728Docker\u5bb9\u5668\u4e2d\u6267\u884cAnsible","og_description":"\u25a0\u9996\u5148 \u8fd9\u662f\u4e0a\u4e00\u7bc7\u6587\u7ae0\u7684\u7eed\u7bc7\u3002\u4e0a\u4e00\u7bc7\u6211\u4eec\u5728Azure\u865a\u62df\u673a\u4e2d\u5b89\u88c5\u4e86Docker\uff0c\u5e76\u521b\u5efa\u4e86\u201cJenkins\u201d\u7684D [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u5728docker\u5bb9\u5668\u4e2d\u6267\u884cansible\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-10-17T11:30:54+00:00","article_modified_time":"2024-04-30T06:45:14+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d4eab37434c4406cc14dd\/5-0.png"}],"author":"\u79d1, \u96c5","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u79d1, \u96c5","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"4 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8docker%e5%ae%b9%e5%99%a8%e4%b8%ad%e6%89%a7%e8%a1%8cansible\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8docker%e5%ae%b9%e5%99%a8%e4%b8%ad%e6%89%a7%e8%a1%8cansible\/","name":"\u5728Docker\u5bb9\u5668\u4e2d\u6267\u884cAnsible - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-10-17T11:30:54+00:00","dateModified":"2024-04-30T06:45:14+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/41e222757cdd2a3365361328bd79970a"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8docker%e5%ae%b9%e5%99%a8%e4%b8%ad%e6%89%a7%e8%a1%8cansible\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8docker%e5%ae%b9%e5%99%a8%e4%b8%ad%e6%89%a7%e8%a1%8cansible\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8docker%e5%ae%b9%e5%99%a8%e4%b8%ad%e6%89%a7%e8%a1%8cansible\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u5728Docker\u5bb9\u5668\u4e2d\u6267\u884cAnsible"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/41e222757cdd2a3365361328bd79970a","name":"\u79d1, \u96c5","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/1b2d3e00a7df03689797ebd4af8c5827ba5af936849a71050ec331f4cf902c5d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b2d3e00a7df03689797ebd4af8c5827ba5af936849a71050ec331f4cf902c5d?s=96&d=mm&r=g","caption":"\u79d1, \u96c5"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/keya\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8docker%e5%ae%b9%e5%99%a8%e4%b8%ad%e6%89%a7%e8%a1%8cansible\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/42782","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=42782"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/42782\/revisions"}],"predecessor-version":[{"id":92536,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/42782\/revisions\/92536"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=42782"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=42782"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=42782"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}