{"id":42510,"date":"2023-11-09T09:16:59","date_gmt":"2023-09-11T18:49:07","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8vagrant%e6%9e%84%e5%bb%ba%e4%b8%93%e9%97%a8%e7%94%a8%e4%ba%8eansible%e9%aa%8c%e8%af%81%e7%8e%af%e5%a2%83%e7%9a%84%e8%99%9a%e6%8b%9f%e6%9c%ba-%e5%8c%85%e6%8b%ac%e5%a4%9a%e4%b8%aa\/"},"modified":"2024-05-04T08:12:26","modified_gmt":"2024-05-04T00:12:26","slug":"%e4%bd%bf%e7%94%a8vagrant%e6%9e%84%e5%bb%ba%e4%b8%93%e9%97%a8%e7%94%a8%e4%ba%8eansible%e9%aa%8c%e8%af%81%e7%8e%af%e5%a2%83%e7%9a%84%e8%99%9a%e6%8b%9f%e6%9c%ba-%e5%8c%85%e6%8b%ac%e5%a4%9a%e4%b8%aa","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8vagrant%e6%9e%84%e5%bb%ba%e4%b8%93%e9%97%a8%e7%94%a8%e4%ba%8eansible%e9%aa%8c%e8%af%81%e7%8e%af%e5%a2%83%e7%9a%84%e8%99%9a%e6%8b%9f%e6%9c%ba-%e5%8c%85%e6%8b%ac%e5%a4%9a%e4%b8%aa\/","title":{"rendered":"\u4f7f\u7528Vagrant\u6784\u5efa\u4e13\u95e8\u7528\u4e8eAnsible\u9a8c\u8bc1\u73af\u5883\u7684\u865a\u62df\u673a &#8211; \u5305\u62ec\u591a\u4e2a\u865a\u62df\u673a\u3001\u865a\u62df\u673a\u4e4b\u95f4\u7684SSH\u516c\u94a5\u8ba4\u8bc1\u8bbe\u7f6e\u548c\u5171\u4eab\u6587\u4ef6\u5939"},"content":{"rendered":"<h1>\u9996\u5148<\/h1>\n<p>\u4f7f\u7528Vagrant\u5728\u6211\u7684VirtualBox\u4e0a\u6784\u5efaAnsible\u9a8c\u8bc1\u73af\u5883\u3002\u867d\u7136\u4f7f\u7528Vagrant\u53ef\u4ee5\u8f7b\u677e\u521b\u5efa\u865a\u62df\u673a\uff0c\u4f46\u8003\u8651\u5230Ansible\u7684\u9a8c\u8bc1\u73af\u5883\uff0c\u6211\u8fd8\u6dfb\u52a0\u4e86\u4ee5\u4e0b\u6761\u4ef6\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u4e00\u3064\u306eVagrantfile\u3067\u8907\u6570VM\u4f5c\u6210<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">VM\u9593\u3067\u56fa\u5b9aIP\u30a2\u30c9\u30ec\u30b9\u3067\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u304c\u3064\u306a\u304c\u308b<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">VM\u9593\u306essh\u30a2\u30af\u30bb\u30b9\u306e\u305f\u3081\u540c\u3058\u79d8\u5bc6\u9375\u30fb\u516c\u958b\u9375\u3092\u8a2d\u5b9a<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">Ansible\u306ePlaybook\u306a\u3069\u3092\u30db\u30b9\u30c8OS\u304b\u3089\u7c21\u5358\u306b\u7de8\u96c6\u3059\u308b\u305f\u3081\u306e\u5171\u6709\u30d5\u30a9\u30eb\u30c0\u8a2d\u5b9a<\/ul>\n<p>\u867d\u7136\u5305\u62ecAnsible\u7684\u5b89\u88c5\u4e5f\u53ef\u4ee5\uff0c\u4f46\u56e0\u4e3a\u53ea\u6709\u4e00\u53f0\u4e3b\u673a\uff0c\u6240\u4ee5\u53ef\u4ee5\u624b\u52a8\u5b89\u88c5\uff08\u4e5f\u53ef\u4ee5\u5728\u76ee\u6807\u865a\u62df\u673a\u4e2d\u4f7f\u7528shell\u5b89\u88c5\uff09\u3002<\/p>\n<ul class=\"post-ul\">Vagrant\u3068\u306f\uff1f\u306b\u3064\u3044\u3066\u306f\u3053\u3061\u3089<\/ul>\n<h1>Vagrantfile (\u865a\u62df\u673a\u914d\u7f6e\u6587\u4ef6)<\/h1>\n<p>\u4e3a\u4e86\u8fce\u5408\u6025\u4e8e\u9700\u8981\u7684\u4eba\uff0c\u9996\u5148\u63d0\u4f9b\u5b8c\u6574\u7684Vagrantfile\u3002<br \/>\n\u4e3b\u673aOS\u4e0a\u7684Ansible\u8d44\u6e90\u4f4d\u4e8e~\/src\/ansible\u76ee\u5f55\u4e0b\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"c1\"># -*- mode: ruby -*-<\/span>\r\n<span class=\"c1\"># vi: set ft=ruby :<\/span>\r\n\r\n<span class=\"no\">Vagrant<\/span><span class=\"p\">.<\/span><span class=\"nf\">configure<\/span><span class=\"p\">(<\/span><span class=\"s2\">\"2\"<\/span><span class=\"p\">)<\/span> <span class=\"k\">do<\/span> <span class=\"o\">|<\/span><span class=\"n\">config<\/span><span class=\"o\">|<\/span>\r\n  <span class=\"n\">config<\/span><span class=\"p\">.<\/span><span class=\"nf\">vm<\/span><span class=\"p\">.<\/span><span class=\"nf\">box<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"centos\/7\"<\/span>\r\n\r\n  <span class=\"c1\"># shared folder<\/span>\r\n  <span class=\"n\">config<\/span><span class=\"p\">.<\/span><span class=\"nf\">vm<\/span><span class=\"p\">.<\/span><span class=\"nf\">synced_folder<\/span> <span class=\"s2\">\"~\/src\/ansible\"<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"\/ansible\"<\/span><span class=\"p\">,<\/span> <span class=\"ss\">mount_options: <\/span><span class=\"p\">[<\/span><span class=\"s1\">'dmode=755'<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'fmode=644'<\/span><span class=\"p\">]<\/span>\r\n\r\n  <span class=\"c1\"># common ssh-private-key<\/span>\r\n  <span class=\"n\">config<\/span><span class=\"p\">.<\/span><span class=\"nf\">ssh<\/span><span class=\"p\">.<\/span><span class=\"nf\">insert_key<\/span> <span class=\"o\">=<\/span> <span class=\"kp\">false<\/span>\r\n  <span class=\"n\">config<\/span><span class=\"p\">.<\/span><span class=\"nf\">ssh<\/span><span class=\"p\">.<\/span><span class=\"nf\">private_key_path<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"~\/.vagrant.d\/insecure_private_key\"<\/span>\r\n\r\n  <span class=\"c1\"># copy to private-key<\/span>\r\n  <span class=\"n\">config<\/span><span class=\"p\">.<\/span><span class=\"nf\">vm<\/span><span class=\"p\">.<\/span><span class=\"nf\">provision<\/span> <span class=\"s2\">\"file\"<\/span><span class=\"p\">,<\/span> <span class=\"ss\">source: <\/span><span class=\"s2\">\"~\/.vagrant.d\/insecure_private_key\"<\/span><span class=\"p\">,<\/span> <span class=\"ss\">destination: <\/span><span class=\"s2\">\"\/home\/vagrant\/.ssh\/id_rsa\"<\/span>\r\n  <span class=\"n\">config<\/span><span class=\"p\">.<\/span><span class=\"nf\">vm<\/span><span class=\"p\">.<\/span><span class=\"nf\">provision<\/span> <span class=\"s2\">\"shell\"<\/span><span class=\"p\">,<\/span> <span class=\"ss\">privileged: <\/span><span class=\"kp\">false<\/span><span class=\"p\">,<\/span> <span class=\"ss\">inline: <\/span><span class=\"o\">&lt;&lt;-<\/span><span class=\"no\">SHELL<\/span><span class=\"sh\">\r\n    chmod 600 $HOME\/.ssh\/id_rsa\r\n<\/span><span class=\"no\">  SHELL<\/span>\r\n\r\n  <span class=\"n\">config<\/span><span class=\"p\">.<\/span><span class=\"nf\">vm<\/span><span class=\"p\">.<\/span><span class=\"nf\">define<\/span> <span class=\"s2\">\"ansible-controller\"<\/span> <span class=\"k\">do<\/span> <span class=\"o\">|<\/span><span class=\"n\">ansible_controller<\/span><span class=\"o\">|<\/span>\r\n    <span class=\"n\">ansible_controller<\/span><span class=\"p\">.<\/span><span class=\"nf\">vm<\/span><span class=\"p\">.<\/span><span class=\"nf\">network<\/span> <span class=\"s2\">\"private_network\"<\/span><span class=\"p\">,<\/span> <span class=\"ss\">ip: <\/span><span class=\"s2\">\"192.168.244.120\"<\/span>\r\n    <span class=\"c1\"># OS hostname<\/span>\r\n    <span class=\"n\">ansible_controller<\/span><span class=\"p\">.<\/span><span class=\"nf\">vm<\/span><span class=\"p\">.<\/span><span class=\"nf\">hostname<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"ansible-controller.localhost\"<\/span>\r\n    <span class=\"n\">ansible_controller<\/span><span class=\"p\">.<\/span><span class=\"nf\">vm<\/span><span class=\"p\">.<\/span><span class=\"nf\">provider<\/span> <span class=\"s2\">\"virtualbox\"<\/span> <span class=\"k\">do<\/span> <span class=\"o\">|<\/span><span class=\"n\">vb<\/span><span class=\"o\">|<\/span>\r\n      <span class=\"c1\"># Customize the amount of memory on the VM:<\/span>\r\n      <span class=\"n\">vb<\/span><span class=\"p\">.<\/span><span class=\"nf\">memory<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"1024\"<\/span>\r\n      <span class=\"c1\"># VM name<\/span>\r\n      <span class=\"n\">vb<\/span><span class=\"p\">.<\/span><span class=\"nf\">name<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"ansible-controller\"<\/span>\r\n    <span class=\"k\">end<\/span>\r\n  <span class=\"k\">end<\/span>\r\n\r\n  <span class=\"n\">config<\/span><span class=\"p\">.<\/span><span class=\"nf\">vm<\/span><span class=\"p\">.<\/span><span class=\"nf\">define<\/span> <span class=\"s2\">\"ansible-node01\"<\/span> <span class=\"k\">do<\/span> <span class=\"o\">|<\/span><span class=\"n\">ansible_node01<\/span><span class=\"o\">|<\/span>\r\n    <span class=\"n\">ansible_node01<\/span><span class=\"p\">.<\/span><span class=\"nf\">vm<\/span><span class=\"p\">.<\/span><span class=\"nf\">network<\/span> <span class=\"s2\">\"private_network\"<\/span><span class=\"p\">,<\/span> <span class=\"ss\">ip: <\/span><span class=\"s2\">\"192.168.244.121\"<\/span>\r\n    <span class=\"c1\"># OS hostname<\/span>\r\n    <span class=\"n\">ansible_node01<\/span><span class=\"p\">.<\/span><span class=\"nf\">vm<\/span><span class=\"p\">.<\/span><span class=\"nf\">hostname<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"ansible-node01.localhost\"<\/span>\r\n    <span class=\"n\">ansible_node01<\/span><span class=\"p\">.<\/span><span class=\"nf\">vm<\/span><span class=\"p\">.<\/span><span class=\"nf\">provider<\/span> <span class=\"s2\">\"virtualbox\"<\/span> <span class=\"k\">do<\/span> <span class=\"o\">|<\/span><span class=\"n\">vb<\/span><span class=\"o\">|<\/span>\r\n      <span class=\"c1\"># Customize the amount of memory on the VM:<\/span>\r\n      <span class=\"n\">vb<\/span><span class=\"p\">.<\/span><span class=\"nf\">memory<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"1024\"<\/span>\r\n      <span class=\"c1\"># VM name<\/span>\r\n      <span class=\"n\">vb<\/span><span class=\"p\">.<\/span><span class=\"nf\">name<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"ansible-node01\"<\/span>\r\n    <span class=\"k\">end<\/span>\r\n  <span class=\"k\">end<\/span>\r\n\r\n  <span class=\"n\">config<\/span><span class=\"p\">.<\/span><span class=\"nf\">vm<\/span><span class=\"p\">.<\/span><span class=\"nf\">define<\/span> <span class=\"s2\">\"ansible-node02\"<\/span> <span class=\"k\">do<\/span> <span class=\"o\">|<\/span><span class=\"n\">ansible_node01<\/span><span class=\"o\">|<\/span>\r\n    <span class=\"n\">ansible_node01<\/span><span class=\"p\">.<\/span><span class=\"nf\">vm<\/span><span class=\"p\">.<\/span><span class=\"nf\">network<\/span> <span class=\"s2\">\"private_network\"<\/span><span class=\"p\">,<\/span> <span class=\"ss\">ip: <\/span><span class=\"s2\">\"192.168.244.122\"<\/span>\r\n    <span class=\"c1\"># OS hostname<\/span>\r\n    <span class=\"n\">ansible_node01<\/span><span class=\"p\">.<\/span><span class=\"nf\">vm<\/span><span class=\"p\">.<\/span><span class=\"nf\">hostname<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"ansible-node02.localhost\"<\/span>\r\n    <span class=\"n\">ansible_node01<\/span><span class=\"p\">.<\/span><span class=\"nf\">vm<\/span><span class=\"p\">.<\/span><span class=\"nf\">provider<\/span> <span class=\"s2\">\"virtualbox\"<\/span> <span class=\"k\">do<\/span> <span class=\"o\">|<\/span><span class=\"n\">vb<\/span><span class=\"o\">|<\/span>\r\n      <span class=\"c1\"># Customize the amount of memory on the VM:<\/span>\r\n      <span class=\"n\">vb<\/span><span class=\"p\">.<\/span><span class=\"nf\">memory<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"1024\"<\/span>\r\n      <span class=\"c1\"># VM name<\/span>\r\n      <span class=\"n\">vb<\/span><span class=\"p\">.<\/span><span class=\"nf\">name<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"ansible-node02\"<\/span>\r\n    <span class=\"k\">end<\/span>\r\n  <span class=\"k\">end<\/span>\r\n<span class=\"k\">end<\/span>\r\n<\/code><\/pre>\n<div>\n<div class=\"post-table\">\u30b3\u30de\u30f3\u30c9\u52d5\u4f5c<code>vagrant up<\/code>\u5168VM\u8d77\u52d5<code>vagrant halt<\/code>\u5168VM\u505c\u6b62<code>vagrant destroy<\/code>\u5168VM\u524a\u9664<code>vagrant reload<\/code>\u5168VM Vagrantfile\u8aad\u307f\u306a\u304a\u3057<code>vagrant ssh ansible-controller<\/code>ansible-controller\u3078ssh\u30a2\u30af\u30bb\u30b9<code>vagrant up ansible-controller<\/code>ansible-controller\u306e\u307f\u8d77\u52d5<code>vagrant halt ansible-controller<\/code>ansible-controller\u306e\u307f\u505c\u6b62<\/div>\n<\/div>\n<p>\u7b80\u56fe<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d4cdb37434c4406cbc0e4\/10-0.png\" alt=\"vagrant for ansible.png\" \/><\/div>\n<hr \/>\n<p>\u4ee5\u4e0b\u662f\u5bf9\u8fd9\u4e2a\u95ee\u9898\u7684\u89e3\u91ca<\/p>\n<h1>\u914d\u7f6e\u591a\u4e2a\u865a\u62df\u673a\u7684\u6587\u4ef6<\/h1>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Multi-Machine &#8211; Vagrant by HashiCorp<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">[Vagrant] Vagrant \u3067\u8907\u6570\u306eVM \u3092\u7acb\u3061\u4e0a\u3052\u3066\u3001\u304a\u4e92\u3044\u306b\u901a\u4fe1\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u306b\u306f [VirtualBox] &#8211; Qiita<\/ul>\n<pre class=\"post-pre\"><code>  <span class=\"n\">config<\/span><span class=\"p\">.<\/span><span class=\"nf\">vm<\/span><span class=\"p\">.<\/span><span class=\"nf\">define<\/span> <span class=\"s2\">\"ansible-controller\"<\/span> <span class=\"k\">do<\/span> <span class=\"o\">|<\/span><span class=\"n\">ansible_controller<\/span><span class=\"o\">|<\/span>\r\n    <span class=\"n\">ansible_controller<\/span><span class=\"p\">.<\/span><span class=\"nf\">vm<\/span><span class=\"p\">.<\/span><span class=\"nf\">network<\/span> <span class=\"s2\">\"private_network\"<\/span><span class=\"p\">,<\/span> <span class=\"ss\">ip: <\/span><span class=\"s2\">\"192.168.244.120\"<\/span>\r\n    <span class=\"c1\"># OS hostname<\/span>\r\n    <span class=\"n\">ansible_controller<\/span><span class=\"p\">.<\/span><span class=\"nf\">vm<\/span><span class=\"p\">.<\/span><span class=\"nf\">hostname<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"ansible-controller.localhost\"<\/span>\r\n    <span class=\"n\">ansible_controller<\/span><span class=\"p\">.<\/span><span class=\"nf\">vm<\/span><span class=\"p\">.<\/span><span class=\"nf\">provider<\/span> <span class=\"s2\">\"virtualbox\"<\/span> <span class=\"k\">do<\/span> <span class=\"o\">|<\/span><span class=\"n\">vb<\/span><span class=\"o\">|<\/span>\r\n      <span class=\"c1\"># Customize the amount of memory on the VM:<\/span>\r\n      <span class=\"n\">vb<\/span><span class=\"p\">.<\/span><span class=\"nf\">memory<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"1024\"<\/span>\r\n      <span class=\"c1\"># VM name<\/span>\r\n      <span class=\"n\">vb<\/span><span class=\"p\">.<\/span><span class=\"nf\">name<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"ansible-controller\"<\/span>\r\n    <span class=\"k\">end<\/span>\r\n  <span class=\"k\">end<\/span>\r\n\r\n  <span class=\"n\">config<\/span><span class=\"p\">.<\/span><span class=\"nf\">vm<\/span><span class=\"p\">.<\/span><span class=\"nf\">define<\/span> <span class=\"s2\">\"ansible-node01\"<\/span> <span class=\"k\">do<\/span> <span class=\"o\">|<\/span><span class=\"n\">ansible_node01<\/span><span class=\"o\">|<\/span>\r\n    <span class=\"n\">ansible_node01<\/span><span class=\"p\">.<\/span><span class=\"nf\">vm<\/span><span class=\"p\">.<\/span><span class=\"nf\">network<\/span> <span class=\"s2\">\"private_network\"<\/span><span class=\"p\">,<\/span> <span class=\"ss\">ip: <\/span><span class=\"s2\">\"192.168.244.121\"<\/span>\r\n    <span class=\"c1\"># OS hostname<\/span>\r\n    <span class=\"n\">ansible_node01<\/span><span class=\"p\">.<\/span><span class=\"nf\">vm<\/span><span class=\"p\">.<\/span><span class=\"nf\">hostname<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"ansible-node01.localhost\"<\/span>\r\n    <span class=\"n\">ansible_node01<\/span><span class=\"p\">.<\/span><span class=\"nf\">vm<\/span><span class=\"p\">.<\/span><span class=\"nf\">provider<\/span> <span class=\"s2\">\"virtualbox\"<\/span> <span class=\"k\">do<\/span> <span class=\"o\">|<\/span><span class=\"n\">vb<\/span><span class=\"o\">|<\/span>\r\n      <span class=\"c1\"># Customize the amount of memory on the VM:<\/span>\r\n      <span class=\"n\">vb<\/span><span class=\"p\">.<\/span><span class=\"nf\">memory<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"1024\"<\/span>\r\n      <span class=\"c1\"># VM name<\/span>\r\n      <span class=\"n\">vb<\/span><span class=\"p\">.<\/span><span class=\"nf\">name<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"ansible-node01\"<\/span>\r\n    <span class=\"k\">end<\/span>\r\n  <span class=\"k\">end<\/span>\r\n<\/code><\/pre>\n<p>\u5927\u81f4\u4e0a\u9762\u7684\u90e8\u5206\u3002\uff08\u7701\u7565\u4e86node02\uff09<br \/>\n\u4e00\u5f00\u59cb\u56e0\u4e3a\u4e0d\u4f1aRuby\u7684\u8bfb\u5199\uff0c\u6240\u4ee5\u4ece\u73b0\u6709\u90e8\u5206\u590d\u5236\u7c98\u8d34\u6ca1\u6709\u6210\u529f\u3002<\/p>\n<pre class=\"post-pre\"><code>  <span class=\"n\">config<\/span><span class=\"p\">.<\/span><span class=\"nf\">vm<\/span><span class=\"p\">.<\/span><span class=\"nf\">define<\/span> <span class=\"s2\">\"ansible-controller\"<\/span> <span class=\"k\">do<\/span> <span class=\"o\">|<\/span><span class=\"n\">ansible_controller<\/span><span class=\"o\">|<\/span>\r\n<\/code><\/pre>\n<p>\u5bf9\u4e8e<\/p>\n<pre class=\"post-pre\"><code><span class=\"gd\">- config.vm.network\r\n<\/span><span class=\"gi\">+ ansible_controller.vm.network\r\n<\/span><\/code><\/pre>\n<p>\u6211\u5011\u9700\u8981\u5728\u6307\u5b9a\u7684Ansible\u63a7\u5236\u5668\u4e0a\u5b9a\u7fa9\u8a2d\u5b9a\u3002\u4e26\u4e14\u9700\u8981\u5c07\u9019\u500b\u8a2d\u5b9a\u91cd\u8907\u61c9\u7528\u65bc\u6bcf\u500b\u865b\u64ec\u6a5f\u5668\u4e0a (\u800c\u4e14\uff0c\u5c0d\u65bc\u6bcf\u500b\u865b\u64ec\u6a5f\u7684\u4e3b\u6a5f\u540d\u7a31\u548cIP\u5730\u5740\u7b49\u6709\u4e0d\u540c\u8a2d\u5b9a\u7684\u5167\u5bb9\uff0c\u4e5f\u9700\u8981\u91cd\u8907\u8a2d\u5b9a)\u3002<\/p>\n<p>\u5173\u4e8e\u5404\u4e2a\u865a\u62df\u673a\u5171\u4eab\u7684\u5b9a\u4e49\uff0c\u65e0\u9700\u5728\u6bcf\u4e2a\u865a\u62df\u673a\u7684\u8bbe\u7f6e\u4e2d\u4e66\u5199\uff0c\u53ef\u4ee5\u4fdd\u6301\u73b0\u6709\u7684\u5b9a\u4e49\u90e8\u5206\u4e0d\u53d8\u3002<\/p>\n<pre class=\"post-pre\"><code>  <span class=\"n\">config<\/span><span class=\"p\">.<\/span><span class=\"nf\">vm<\/span><span class=\"p\">.<\/span><span class=\"nf\">box<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"centos\/7\"<\/span>\r\n<\/code><\/pre>\n<p>\u57fa\u4e8e\u7684Box\u79cd\u7c7b\u4e4b\u7c7b\u7684\u5417\u3002<\/p>\n<h1>\u5728\u865a\u62df\u673a\u4e4b\u95f4\u901a\u8fc7\u56fa\u5b9aIP\u5730\u5740\u5efa\u7acb\u7f51\u7edc\u8fde\u63a5\u3002<\/h1>\n<p>\u4f7f\u7528\u9ed8\u8ba4\uff08\u5177\u6709\u4e92\u8054\u7f51\u8bbf\u95ee\u529f\u80fd\uff09\u7684NAT\u5730\u5740\uff0c\u865a\u62df\u673a\u4e4b\u95f4\u53ef\u4ee5\u4e92\u76f8ping\u901a\uff0c\u4f46\u7531\u4e8eIP\u5730\u5740\u4e0d\u56fa\u5b9a\uff0c\u4e0d\u9002\u5408\u8fdb\u884c\u9a8c\u8bc1\u5de5\u4f5c\u3002<br \/>\n\u53e6\u5916\uff0c\u4e5f\u65e0\u6cd5\u4ece\u4e3b\u673a\u64cd\u4f5c\u7cfb\u7edf\u8bbf\u95ee\u5b83\u3002<\/p>\n<p>\u56e0\u6b64\uff0c\u4f7f\u7528\u4e3b\u673a\u6a21\u5f0f\u9002\u914d\u5668\u6765\u8bbe\u7f6e\u540c\u4e00\u7f51\u6bb5\u7684\u56fa\u5b9aIP\u5730\u5740\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Vagrant\u3092\u4f7f\u3063\u305fVirtualBox\u3078\u306eVM\u69cb\u7bc9 &#8211; Qiita<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">Ubuntu 18.04(on VirtualBox) \u30db\u30b9\u30c8OS\u304b\u3089\u306e\u901a\u4fe1 &#8211; Qiita<\/ul>\n<p>\u6bcf\u4e2a\u865a\u62df\u673a\u90fd\u9700\u8981\u8bbe\u7f6e\u8fd9\u4e2a\u3002\u8fd9\u4e2a\u90e8\u5206\u3002<\/p>\n<pre class=\"post-pre\"><code>  <span class=\"n\">config<\/span><span class=\"p\">.<\/span><span class=\"nf\">vm<\/span><span class=\"p\">.<\/span><span class=\"nf\">define<\/span> <span class=\"s2\">\"ansible-controller\"<\/span> <span class=\"k\">do<\/span> <span class=\"o\">|<\/span><span class=\"n\">ansible_controller<\/span><span class=\"o\">|<\/span>\r\n    <span class=\"n\">ansible_controller<\/span><span class=\"p\">.<\/span><span class=\"nf\">vm<\/span><span class=\"p\">.<\/span><span class=\"nf\">network<\/span> <span class=\"s2\">\"private_network\"<\/span><span class=\"p\">,<\/span> <span class=\"ss\">ip: <\/span><span class=\"s2\">\"192.168.244.120\"<\/span>\r\n    <span class=\"c1\">#[...]<\/span>\r\n  <span class=\"k\">end<\/span>\r\n\r\n  <span class=\"n\">config<\/span><span class=\"p\">.<\/span><span class=\"nf\">vm<\/span><span class=\"p\">.<\/span><span class=\"nf\">define<\/span> <span class=\"s2\">\"ansible-node01\"<\/span> <span class=\"k\">do<\/span> <span class=\"o\">|<\/span><span class=\"n\">ansible_node01<\/span><span class=\"o\">|<\/span>\r\n    <span class=\"n\">ansible_node01<\/span><span class=\"p\">.<\/span><span class=\"nf\">vm<\/span><span class=\"p\">.<\/span><span class=\"nf\">network<\/span> <span class=\"s2\">\"private_network\"<\/span><span class=\"p\">,<\/span> <span class=\"ss\">ip: <\/span><span class=\"s2\">\"192.168.244.121\"<\/span>\r\n    <span class=\"c1\">#[...]<\/span>\r\n  <span class=\"k\">end<\/span>\r\n\r\n  <span class=\"n\">config<\/span><span class=\"p\">.<\/span><span class=\"nf\">vm<\/span><span class=\"p\">.<\/span><span class=\"nf\">define<\/span> <span class=\"s2\">\"ansible-node02\"<\/span> <span class=\"k\">do<\/span> <span class=\"o\">|<\/span><span class=\"n\">ansible_node01<\/span><span class=\"o\">|<\/span>\r\n    <span class=\"n\">ansible_node01<\/span><span class=\"p\">.<\/span><span class=\"nf\">vm<\/span><span class=\"p\">.<\/span><span class=\"nf\">network<\/span> <span class=\"s2\">\"private_network\"<\/span><span class=\"p\">,<\/span> <span class=\"ss\">ip: <\/span><span class=\"s2\">\"192.168.244.122\"<\/span>\r\n    <span class=\"c1\">#[...]<\/span>\r\n  <span class=\"k\">end<\/span>\r\n<\/code><\/pre>\n<h1>\u4e3a\u4e86\u5728VM\u4e4b\u95f4\u8fdb\u884cssh\u8bbf\u95ee\uff0c\u9700\u8981\u8bbe\u7f6e\u76f8\u540c\u7684\u79d8\u94a5\u548c\u516c\u94a5\u3002<\/h1>\n<p>\u653e\u5f03\u81ea\u52a8\u8bbe\u5b9a\u800c\u624b\u52a8\u8bbe\u7f6e\u662f\u6700\u8270\u8f9b\u7684\u90e8\u5206\u3002<\/p>\n<p>\u5982\u679c\u6ca1\u6709\u7279\u522b\u6307\u5b9a\u7684\u8bdd\uff0cVagrant\u7684SSH\u76f8\u5173\u64cd\u4f5c\u4f1a\u4e3a\u6bcf\u4e2a\u865a\u62df\u673a\u521b\u5efa\u4e00\u5bf9\u5bc6\u94a5\uff0c\u5176\u4e2d\u5305\u62ec\u79c1\u94a5\u548c\u516c\u94a5\u3002\u6765\u6e90\u4e8e\u4e3b\u673a\u64cd\u4f5c\u7cfb\u7edf\u7684vagrant ssh [hostname]\u547d\u4ee4\u5c06\u4f7f\u7528\u76f8\u5e94\u865a\u62df\u673a\u7684\u516c\u94a5\u8fdb\u884cSSH\u8bbf\u95ee\u3002<br \/>\n\u56e0\u6b64\uff0c\u8fd9\u4e2a\u516c\u94a5\u65e0\u6cd5\u7528\u4e8e\u865a\u62df\u673a\u4e4b\u95f4\u7684\u516c\u94a5\u8ba4\u8bc1\u3002<br \/>\n\u6b64\u5916\uff0c\u79c1\u94a5\u4e0d\u4f1a\u5b58\u50a8\u5728\u865a\u62df\u673a\u5185\u90e8\uff0c\u800c\u53ea\u4f1a\u653e\u7f6e\u5728\u4e3b\u673a\u64cd\u4f5c\u7cfb\u7edf\u4e0a\u3002<\/p>\n<p>\u53ef\u4ee5\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u6765\u786e\u8ba4\u5728VM\u8fd0\u884c\u65f6\u521b\u5efa\u548c\u4f7f\u7528\u7684SSH\u5bc6\u94a5\u3002<\/p>\n<pre class=\"post-pre\"><code>zaki@mascarpone% vagrant ssh-config\r\nHost ansible-controller\r\n  HostName 127.0.0.1\r\n  User vagrant\r\n  Port 2222\r\n  UserKnownHostsFile \/dev\/null\r\n  StrictHostKeyChecking no\r\n  PasswordAuthentication no\r\n  IdentityFile C:\/Users\/zaki\/src\/vagrant\/ansible\/.vagrant\/machines\/ansible-controller\/virtualbox\/private_key\r\n  IdentitiesOnly yes\r\n  LogLevel FATAL\r\n\r\nHost ansible-node01\r\n  HostName 127.0.0.1\r\n  User vagrant\r\n  Port 2200\r\n  UserKnownHostsFile \/dev\/null\r\n  StrictHostKeyChecking no\r\n  PasswordAuthentication no\r\n  IdentityFile C:\/Users\/zaki\/src\/vagrant\/ansible\/.vagrant\/machines\/ansible-node01\/virtualbox\/private_key\r\n  IdentitiesOnly yes\r\n  LogLevel FATAL\r\n\r\nzaki@mascarpone%\r\n<\/code><\/pre>\n<p>\u5728\u4f7f\u7528vagrant ssh\u65f6\uff0c\u4f1a\u663e\u793aIdentityFile\u4e2d\u4f7f\u7528\u7684\u79c1\u94a5\u8def\u5f84\uff0c\u5e76\u4e14\u53ef\u4ee5\u770b\u5230\u6bcf\u4e2a\u865a\u62df\u673a\u7684\u8def\u5f84\u662f\u4e0d\u540c\u7684\u3002<\/p>\n<p>\u9996\u5148\uff0c\u5728\u6bcf\u4e2a\u865a\u62df\u673a\u4e0a\u8fdb\u884c\u201c\u4f7f\u7528\u76f8\u540c\u7684\u79c1\u94a5\u548c\u516c\u94a5\u8bbe\u7f6e\u201d\u7684\u914d\u7f6e\u3002<\/p>\n<pre class=\"post-pre\"><code>  <span class=\"n\">config<\/span><span class=\"p\">.<\/span><span class=\"nf\">ssh<\/span><span class=\"p\">.<\/span><span class=\"nf\">insert_key<\/span> <span class=\"o\">=<\/span> <span class=\"kp\">false<\/span>\r\n<\/code><\/pre>\n<p>\u901a\u8fc7\u5c06config.ssh.insert_key\u8bbe\u7f6e\u4e3afalse\uff0c\u5c06\u4e0d\u518d\u9700\u8981\u201c\u4e3a\u6bcf\u4e2a\u865a\u62df\u673a\u521b\u5efa\u548c\u914d\u7f6eSSH\u7684\u5bc6\u94a5\u5bf9\u201d\u8fd9\u4e00\u64cd\u4f5c\u3002<\/p>\n<p>\u63a5\u4e0b\u6765\uff0c\u5728config.ssh.private_key_path\u4e2d\u6307\u5b9a\u9700\u8981\u66ff\u6362\u7684\u79c1\u94a5\u3002\uff08\u987a\u4fbf\u8bf4\u4e00\u4e0b\uff0c\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u4f1a\u4f7f\u7528~\/.vagrant.d\/insecure_private_key\u7684\u5bc6\u94a5\uff09<br \/>\n\u5b9e\u9645\u4e0a\uff0c\u5728\u5b89\u88c5Vagrant\u65f6\uff0c\u4f1a\u5728\u7528\u6237\u4e3b\u76ee\u5f55\u4e0b\u751f\u6210\u4e00\u4e2a~\/.vagrant.d\/insecure_private_key\u7684\u65e0\u5bc6\u7801\u5171\u4eab\u914d\u7f6e\u6587\u4ef6\u7528\u4e8e\u5bc6\u94a5\u3002\u672c\u6b21\u4f7f\u7528\u5b83\u3002<br \/>\n\u5f53\u7136\u4e5f\u53ef\u4ee5\u4f7f\u7528ssh-keygen\u521b\u5efa\u4e00\u4e2a\u65e0\u5bc6\u7801\u7684\u5bc6\u94a5\u6587\u4ef6\uff0c\u5e76\u4f7f\u7528\u6b64\u6587\u4ef6\u3002<\/p>\n<pre class=\"post-pre\"><code>  <span class=\"n\">config<\/span><span class=\"p\">.<\/span><span class=\"nf\">ssh<\/span><span class=\"p\">.<\/span><span class=\"nf\">private_key_path<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"~\/.vagrant.d\/insecure_private_key\"<\/span>\r\n<\/code><\/pre>\n<p>\u68c0\u67e5ssh-config\u65f6\uff0c\u6bcf\u4e2a\u865a\u62df\u673a\u90fd\u5c06\u4f7f\u7528\u76f8\u540c\u7684\u5bc6\u94a5\u5bf9\u3002<\/p>\n<pre class=\"post-pre\"><code>zaki@mascarpone% vagrant ssh-config\r\nHost ansible-controller\r\n  HostName 127.0.0.1\r\n  User vagrant\r\n  Port 2222\r\n  UserKnownHostsFile \/dev\/null\r\n  StrictHostKeyChecking no\r\n  PasswordAuthentication no\r\n  IdentityFile C:\/Users\/zaki\/.vagrant.d\/insecure_private_key\r\n  IdentitiesOnly yes\r\n  LogLevel FATAL\r\n\r\nHost ansible-node01\r\n  HostName 127.0.0.1\r\n  User vagrant\r\n  Port 2200\r\n  UserKnownHostsFile \/dev\/null\r\n  StrictHostKeyChecking no\r\n  PasswordAuthentication no\r\n  IdentityFile C:\/Users\/zaki\/.vagrant.d\/insecure_private_key\r\n  IdentitiesOnly yes\r\n  LogLevel FATAL\r\n\r\nzaki@mascarpone%\r\n<\/code><\/pre>\n<p>\u7136\u800c\uff0c\u5982\u679c\u4fdd\u6301\u73b0\u72b6\uff0c\u7528\u4e8e\u4e3b\u673a\u64cd\u4f5c\u7cfb\u7edf\u5230\u5ba2\u6237\u64cd\u4f5c\u7cfb\u7edf\u4e4b\u95f4\u7684ssh\u8bbf\u95ee\u7684ssh\u5bc6\u94a5\u5c06\u4ec5\u5728\u6bcf\u4e2a\u5ba2\u6237\u64cd\u4f5c\u7cfb\u7edf\u4e0a\u4fdd\u6301\u76f8\u540c\uff0c\u56e0\u6b64\uff0c\u7531\u4e8e\u6bcf\u4e2a\u5ba2\u6237\u64cd\u4f5c\u7cfb\u7edf\u4e0a\u5c1a\u672a\u5b58\u5728\u8be5\u79c1\u94a5\uff0c\u5ba2\u6237\u64cd\u4f5c\u7cfb\u7edf\u4e4b\u95f4\u5c06\u65e0\u6cd5\u8fdb\u884c\u516c\u94a5\u8ba4\u8bc1\u3002(\u7531\u4e8e\u79c1\u94a5\u4ec5\u5b58\u5728\u4e8e\u4e3b\u673a\u64cd\u4f5c\u7cfb\u7edf\u4e0a)<\/p>\n<p>\u56e0\u6b64\uff0c\u9700\u8981\u6dfb\u52a0\u5c06\u8be5\u4e3b\u673a\u64cd\u4f5c\u7cfb\u7edf\u4e0a\u7684\u5bc6\u94a5\u62f7\u8d1d\u5230\u521b\u5efa\u7684\u865a\u62df\u673a\u4e0a\u7684\u8fc7\u7a0b\u3002<\/p>\n<pre class=\"post-pre\"><code>  <span class=\"n\">config<\/span><span class=\"p\">.<\/span><span class=\"nf\">vm<\/span><span class=\"p\">.<\/span><span class=\"nf\">provision<\/span> <span class=\"s2\">\"file\"<\/span><span class=\"p\">,<\/span> <span class=\"ss\">source: <\/span><span class=\"s2\">\"~\/.vagrant.d\/insecure_private_key\"<\/span><span class=\"p\">,<\/span> <span class=\"ss\">destination: <\/span><span class=\"s2\">\"\/home\/vagrant\/.ssh\/id_rsa\"<\/span>\r\n<\/code><\/pre>\n<p>\u4f7f\u7528File Provisioner\u5c06\u4e3b\u673a\u64cd\u4f5c\u7cfb\u7edf\u4e0a\u7684\u6587\u4ef6\u590d\u5236\u5230\u5ba2\u6237\u64cd\u4f5c\u7cfb\u7edf\u4e2d\u3002<br \/>\n\uff08\u56e0\u4e3a\u6709\u63a8\u9001\u7b49\u5927\u9879\u76ee\uff0c\u6240\u4ee5\u6211\u8bef\u4ee5\u4e3a\u53ef\u4ee5\u4f7f\u7528\u8fd9\u4e2a\u529f\u80fd\uff0c\u505a\u4e86\u5f88\u591a\u5c1d\u8bd5\u4f46\u65e0\u6cd5\u6210\u529f\uff0c\u6240\u4ee5\u5dee\u70b9\u653e\u5f03\u4e86\uff0c\u4f46\u539f\u6765\u662f\u53e6\u5916\u4e00\u4e2a\u529f\u80fd&#8230;\uff09<br \/>\n\u73b0\u5728\u53ef\u4ee5\u4f7f\u7528\u8fd9\u4e2a\u529f\u80fd\u5c06\u4e3b\u673a\u64cd\u4f5c\u7cfb\u7edf\u4e0a\u7684\u6e90\u6587\u4ef6\uff1a&#8221;~\/.vagrant.d\/insecure_private_key&#8221;\u5206\u53d1\u5230\u5ba2\u6237\u64cd\u4f5c\u7cfb\u7edf\u7684\u76ee\u6807\u4f4d\u7f6e\uff1a&#8221;\/home\/vagrant\/.ssh\/id_rsa&#8221;\u3002<\/p>\n<p>\u7136\u800c\uff0c\u53ea\u6709\u8fd9\u6837\u7684\u8bdd\uff0c\u65e0\u6cd5\u7ef4\u6301mode\u8bbe\u7f6e\uff0c\u800c\u4e14\u5176\u4ed6\u4eba\u4e5f\u4f1a\u83b7\u5f97\u8bfb\u53d6\u6743\u9650\uff0c\u5bfc\u81f4\u5728\u6267\u884cssh\u65f6\u51fa\u73b0\u9519\u8bef\uff0c\u56e0\u6b64\u9700\u8981\u624b\u52a8\u6dfb\u52a0\u6743\u9650\u8bbe\u7f6e\u3002<br \/>\n\u5e0c\u671b\u53ef\u4ee5\u901a\u8fc7File Provision\u8fdb\u884c\u6307\u5b9a\uff0c\u4f46\u6211\u4e0d\u662f\u5f88\u6e05\u695a\uff0c\u6240\u4ee5\u4f7f\u7528\u4e86shell\u6765\u5904\u7406\u3002<\/p>\n<pre class=\"post-pre\"><code>  <span class=\"n\">config<\/span><span class=\"p\">.<\/span><span class=\"nf\">vm<\/span><span class=\"p\">.<\/span><span class=\"nf\">provision<\/span> <span class=\"s2\">\"shell\"<\/span><span class=\"p\">,<\/span> <span class=\"ss\">privileged: <\/span><span class=\"kp\">false<\/span><span class=\"p\">,<\/span> <span class=\"ss\">inline: <\/span><span class=\"o\">&lt;&lt;-<\/span><span class=\"no\">SHELL<\/span><span class=\"sh\">\r\n    chmod 600 $HOME\/.ssh\/id_rsa\r\n<\/span><span class=\"no\">  SHELL<\/span>\r\n<\/code><\/pre>\n<p>\u4f7f\u7528\u6b64\u65b9\u6cd5\uff0c\u5728\u6bcf\u4e2a\u865a\u62df\u673a\u4e0a\u4f7f\u7528\u76f8\u540c\u7684\u79c1\u94a5\u548c\u516c\u94a5\uff0c\u5e76\u5728\u865a\u62df\u673a\u5185\u8bbe\u7f6e\u79c1\u94a5\u5206\u53d1\u3002<\/p>\n<h1>\u4e3a\u4e86\u65b9\u4fbf\u4ece\u4e3b\u673a\u64cd\u4f5c\u7cfb\u7edf\u4e0a\u7f16\u8f91Ansible\u7684Playbook\u7b49\u6587\u4ef6\uff0c\u8bbe\u7f6e\u5171\u4eab\u6587\u4ef6\u5939\u3002<\/h1>\n<p>\u5047\u8bbeAnsible\u7684\u8d44\u6599\u5b58\u653e\u5728\u4e3b\u673a\u7684~\/src\/ansible\u76ee\u5f55\u4e0b\u3002<\/p>\n<pre class=\"post-pre\"><code>  <span class=\"c1\"># shared folder<\/span>\r\n  <span class=\"n\">config<\/span><span class=\"p\">.<\/span><span class=\"nf\">vm<\/span><span class=\"p\">.<\/span><span class=\"nf\">synced_folder<\/span> <span class=\"s2\">\"~\/src\/ansible\"<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"\/ansible\"<\/span><span class=\"p\">,<\/span> <span class=\"ss\">mount_options: <\/span><span class=\"p\">[<\/span><span class=\"s1\">'dmode=755'<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'fmode=644'<\/span><span class=\"p\">]<\/span>\r\n<\/code><\/pre>\n<p>\u5982\u679c\u6ca1\u6709\u6dfb\u52a0\u4efb\u4f55\u9009\u9879\uff0c\u5c06\u4e3b\u673a\u64cd\u4f5c\u7cfb\u7edf\u7684~\/src\/ansible\u6302\u8f7d\u5230\u5ba2\u6237\u64cd\u4f5c\u7cfb\u7edf\u7684\/ansible\u3002<br \/>\n\u8fd9\u6837\u4f1a\u4f7f\u6587\u4ef6\u548c\u76ee\u5f55\u5904\u4e8e777\u7684\u5b8c\u5168\u6253\u5f00\u72b6\u6001\uff0c\u4f1a\u5bf9\u9a8c\u8bc1\u9020\u6210\u5f71\u54cd\uff0c\u4f1a\u51fa\u73b0Ansible\u6267\u884c\u65f6\u8f93\u51fa\u8b66\u544a\u4fe1\u606f\u3002<\/p>\n<pre class=\"post-pre\"><code> [WARNING] Ansible is being run in a world writable directory (\/ansible\/practice), ignoring it as an ansible.cfg source. For more information see https:\/\/docs.ansible.com\/ansible\/devel\/reference_appendices\/config.html#cfg-in-world-writable-dir\r\n<\/code><\/pre>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">vagrant \u3067 synced_folder \u306e\u6a29\u9650\u5909\u66f4 &#8211; Qiita<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">Basic Usage &#8211; Synced Folders &#8211; Vagrant by HashiCorp<\/ul>\n<p>\u6240\u4ee5\uff0c\u5171\u4eab\u6587\u4ef6\u5939\u7684\u8bbe\u7f6e\u672c\u8eab\u5e76\u4e0d\u987a\u5229\uff0c\u4f46\u662f\u5728\u8fd9\u65b9\u9762\u901a\u8fc7\u9519\u8bef\u4fe1\u606f\u641c\u7d22\u5f88\u5feb\u627e\u5230\u4e86\u7b54\u6848\uff0c\u6240\u4ee5\u6ca1\u6709\u95ee\u9898\u3002<br \/>\n\u5728\u9996\u6b21\u8fd0\u884c\u65f6\uff0c\u8f93\u51fa\u4e86\u8fd9\u6837\u7684\u9519\u8bef\u3002<\/p>\n<pre class=\"post-pre\"><code>==&gt; default: Mounting shared folders...\r\n    default: \/vagrant_data =&gt; C:\/Users\/zaki\/src\/vagrant\/data\r\nVagrant was unable to mount VirtualBox shared folders. This is usually\r\nbecause the filesystem \"vboxsf\" is not available. This filesystem is\r\nmade available via the VirtualBox Guest Additions and kernel module.\r\nPlease verify that these guest additions are properly installed in the\r\nguest. This is not a bug in Vagrant and is usually caused by a faulty\r\nVagrant box. For context, the command attempted was:\r\n\r\nmount -t vboxsf -o uid=1000,gid=1000 vagrant_data \/vagrant_data\r\n\r\nThe error output from the command was:\r\n\r\nmount: unknown filesystem type 'vboxsf'\r\n<\/code><\/pre>\n<p>\u6839\u636e\u6211\u7684\u8c03\u67e5\uff0c\u95ee\u9898\u4f3c\u4e4e\u662f\u56e0\u4e3aGuest Additions\u592a\u65e7\u800c\u5bfc\u81f4\u65e0\u6cd5\u4f7f\u7528vboxsf\u8fdb\u884c\u6302\u8f7d\u3002\u5982\u679c\u5b89\u88c5\u4e86Vagrant\u63d2\u4ef6vagrant-vbguest\uff0c\u5728\u542f\u52a8\u865a\u62df\u673a\u65f6\u4f1a\u81ea\u52a8\u505a\u4e00\u4e9b\u5904\u7406\u3002<\/p>\n<p>\u5f53Vagrant\u65e0\u6cd5\u6302\u8f7d\u5171\u4eab\u6587\u4ef6\u5939\u65f6\u7684\u89e3\u51b3\u65b9\u6cd5 &#8211; Qiita<\/p>\n<p>\u56e0\u6b64\uff0c\u8fdb\u884c\u8bbe\u7f6e\u3002<\/p>\n<h2>\u5b89\u88c5\u63d2\u4ef6<\/h2>\n<pre class=\"post-pre\"><code>zaki@mascarpone% vagrant plugin install vagrant-vbguest\r\nInstalling the 'vagrant-vbguest' plugin. This can take a few minutes...\r\nInstalled the plugin 'vagrant-vbguest (0.18.0)'!\r\nzaki@mascarpone% vagrant plugin list\r\nvagrant-disksize (0.1.3, global)\r\nvagrant-vbguest (0.18.0, global)\r\n<\/code><\/pre>\n<h2>\u786e\u8ba4\u5f53\u524d\u7684Guest Additions\u7248\u672c<\/h2>\n<pre class=\"post-pre\"><code>zaki@mascarpone% vagrant vbguest --status\r\n[default] No Virtualbox Guest Additions installation found.\r\n<\/code><\/pre>\n<p>\u771f\u6c92\u60f3\u5230\u3002<\/p>\n<h2>\u5b89\u88c5(\u66f4\u65b0)Guest Additions<\/h2>\n<p>\u4e0d\u4f7f\u7528\u53c2\u6570\u6216\u9009\u9879\u6765\u6267\u884cVagrant VBGuest\u3002<\/p>\n<pre class=\"post-pre\"><code>zaki@mascarpone% vagrant vbguest\r\n[default] No Virtualbox Guest Additions installation found.\r\nLoaded plugins: fastestmirror\r\nLoading mirror speeds from cached hostfile\r\n * base: ty1.mirror.newmediaexpress.com\r\n * extras: ty1.mirror.newmediaexpress.com\r\n * updates: ty1.mirror.newmediaexpress.com\r\n :\r\n :\r\nDependencies Resolved\r\n\r\n================================================================================\r\n Package                   Arch      Version                   Repository  Size\r\n================================================================================\r\nInstalling:\r\n gcc                       x86_64    4.8.5-36.el7_6.2          updates     16 M\r\n kernel-devel              x86_64    3.10.0-957.5.1.el7        updates     17 M\r\n kernel-devel              x86_64    3.10.0-957.21.3.el7       updates     17 M\r\n perl                      x86_64    4:5.16.3-294.el7_6        updates    8.0 M\r\n:\r\n:\r\n<\/code><\/pre>\n<p>\u5b89\u88c5\u8fc7\u7a0b\u5f00\u59cb\u4e86\u3002<\/p>\n<pre class=\"post-pre\"><code>:\r\nDependency Updated:\r\n  glibc.x86_64 0:2.17-260.el7_6.5     glibc-common.x86_64 0:2.17-260.el7_6.5\r\n  libgcc.x86_64 0:4.8.5-36.el7_6.2    libgomp.x86_64 0:4.8.5-36.el7_6.2\r\n\r\nComplete!\r\nCopy iso file C:\\Program Files\\Oracle\\VirtualBox\\VBoxGuestAdditions.iso into the box \/tmp\/VBoxGuestAdditions.iso\r\nMounting Virtualbox Guest Additions ISO to: \/mnt\r\nmount: \/dev\/loop0 is write-protected, mounting read-only\r\nInstalling Virtualbox Guest Additions 5.2.26 - guest version is unknown\r\nVerifying archive integrity... All good.\r\nUncompressing VirtualBox 5.2.26 Guest Additions for Linux........\r\nVirtualBox Guest Additions installer\r\nCopying additional installer modules ...\r\nInstalling additional modules ...\r\nVirtualBox Guest Additions: Building the VirtualBox Guest Additions kernel\r\nmodules.  This may take a while.\r\nVirtualBox Guest Additions: To build modules for other installed kernels, run\r\nVirtualBox Guest Additions:   \/sbin\/rcvboxadd quicksetup &lt;version&gt;\r\nVirtualBox Guest Additions: Building the modules for kernel\r\n3.10.0-957.5.1.el7.x86_64.\r\nVirtualBox Guest Additions: Starting.\r\nRedirecting to \/bin\/systemctl start vboxadd.service\r\nRedirecting to \/bin\/systemctl start vboxadd-service.service\r\nUnmounting Virtualbox Guest Additions ISO from: \/mnt\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>zaki@mascarpone% vagrant vbguest --status\r\n[default] GuestAdditions 5.2.26 running --- OK.\r\nzaki@mascarpone%\r\n<\/code><\/pre>\n<p>\u5982\u679c\u4f60\u4f7f\u7528vagrant reload\u547d\u4ee4\uff0c\u5171\u4eab\u6587\u4ef6\u5939\u8bbe\u7f6e\u5c06\u4f1a\u751f\u6548\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u9996\u5148 \u4f7f\u7528Vagrant\u5728\u6211\u7684VirtualBox\u4e0a\u6784\u5efaAnsible\u9a8c\u8bc1\u73af\u5883\u3002\u867d\u7136\u4f7f\u7528Vagrant\u53ef\u4ee5\u8f7b\u677e [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-42510","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>\u4f7f\u7528Vagrant\u6784\u5efa\u4e13\u95e8\u7528\u4e8eAnsible\u9a8c\u8bc1\u73af\u5883\u7684\u865a\u62df\u673a - \u5305\u62ec\u591a\u4e2a\u865a\u62df\u673a\u3001\u865a\u62df\u673a\u4e4b\u95f4\u7684SSH\u516c\u94a5\u8ba4\u8bc1\u8bbe\u7f6e\u548c\u5171\u4eab\u6587\u4ef6\u5939 - 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\/\u4f7f\u7528vagrant\u6784\u5efa\u4e13\u95e8\u7528\u4e8eansible\u9a8c\u8bc1\u73af\u5883\u7684\u865a\u62df\u673a-\u5305\u62ec\u591a\u4e2a\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u4f7f\u7528Vagrant\u6784\u5efa\u4e13\u95e8\u7528\u4e8eAnsible\u9a8c\u8bc1\u73af\u5883\u7684\u865a\u62df\u673a - \u5305\u62ec\u591a\u4e2a\u865a\u62df\u673a\u3001\u865a\u62df\u673a\u4e4b\u95f4\u7684SSH\u516c\u94a5\u8ba4\u8bc1\u8bbe\u7f6e\u548c\u5171\u4eab\u6587\u4ef6\u5939\" \/>\n<meta property=\"og:description\" content=\"\u9996\u5148 \u4f7f\u7528Vagrant\u5728\u6211\u7684VirtualBox\u4e0a\u6784\u5efaAnsible\u9a8c\u8bc1\u73af\u5883\u3002\u867d\u7136\u4f7f\u7528Vagrant\u53ef\u4ee5\u8f7b\u677e [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528vagrant\u6784\u5efa\u4e13\u95e8\u7528\u4e8eansible\u9a8c\u8bc1\u73af\u5883\u7684\u865a\u62df\u673a-\u5305\u62ec\u591a\u4e2a\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-09-11T18:49:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-04T00:12:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d4cdb37434c4406cbc0e4\/10-0.png\" \/>\n<meta name=\"author\" content=\"\u79d1, \u9896\" \/>\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, \u9896\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 \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\/%e4%bd%bf%e7%94%a8vagrant%e6%9e%84%e5%bb%ba%e4%b8%93%e9%97%a8%e7%94%a8%e4%ba%8eansible%e9%aa%8c%e8%af%81%e7%8e%af%e5%a2%83%e7%9a%84%e8%99%9a%e6%8b%9f%e6%9c%ba-%e5%8c%85%e6%8b%ac%e5%a4%9a%e4%b8%aa\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8vagrant%e6%9e%84%e5%bb%ba%e4%b8%93%e9%97%a8%e7%94%a8%e4%ba%8eansible%e9%aa%8c%e8%af%81%e7%8e%af%e5%a2%83%e7%9a%84%e8%99%9a%e6%8b%9f%e6%9c%ba-%e5%8c%85%e6%8b%ac%e5%a4%9a%e4%b8%aa\/\",\"name\":\"\u4f7f\u7528Vagrant\u6784\u5efa\u4e13\u95e8\u7528\u4e8eAnsible\u9a8c\u8bc1\u73af\u5883\u7684\u865a\u62df\u673a - \u5305\u62ec\u591a\u4e2a\u865a\u62df\u673a\u3001\u865a\u62df\u673a\u4e4b\u95f4\u7684SSH\u516c\u94a5\u8ba4\u8bc1\u8bbe\u7f6e\u548c\u5171\u4eab\u6587\u4ef6\u5939 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-09-11T18:49:07+00:00\",\"dateModified\":\"2024-05-04T00:12:26+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/8ca01ba7f7362ad4edb7da206a12f29e\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8vagrant%e6%9e%84%e5%bb%ba%e4%b8%93%e9%97%a8%e7%94%a8%e4%ba%8eansible%e9%aa%8c%e8%af%81%e7%8e%af%e5%a2%83%e7%9a%84%e8%99%9a%e6%8b%9f%e6%9c%ba-%e5%8c%85%e6%8b%ac%e5%a4%9a%e4%b8%aa\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8vagrant%e6%9e%84%e5%bb%ba%e4%b8%93%e9%97%a8%e7%94%a8%e4%ba%8eansible%e9%aa%8c%e8%af%81%e7%8e%af%e5%a2%83%e7%9a%84%e8%99%9a%e6%8b%9f%e6%9c%ba-%e5%8c%85%e6%8b%ac%e5%a4%9a%e4%b8%aa\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8vagrant%e6%9e%84%e5%bb%ba%e4%b8%93%e9%97%a8%e7%94%a8%e4%ba%8eansible%e9%aa%8c%e8%af%81%e7%8e%af%e5%a2%83%e7%9a%84%e8%99%9a%e6%8b%9f%e6%9c%ba-%e5%8c%85%e6%8b%ac%e5%a4%9a%e4%b8%aa\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u4f7f\u7528Vagrant\u6784\u5efa\u4e13\u95e8\u7528\u4e8eAnsible\u9a8c\u8bc1\u73af\u5883\u7684\u865a\u62df\u673a &#8211; \u5305\u62ec\u591a\u4e2a\u865a\u62df\u673a\u3001\u865a\u62df\u673a\u4e4b\u95f4\u7684SSH\u516c\u94a5\u8ba4\u8bc1\u8bbe\u7f6e\u548c\u5171\u4eab\u6587\u4ef6\u5939\"}]},{\"@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\/8ca01ba7f7362ad4edb7da206a12f29e\",\"name\":\"\u79d1, \u9896\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8a6fb3cc7ba2f69d2189ba532aec4633ea7ed75ac0af162ec367cb3abc0fb2af?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8a6fb3cc7ba2f69d2189ba532aec4633ea7ed75ac0af162ec367cb3abc0fb2af?s=96&d=mm&r=g\",\"caption\":\"\u79d1, \u9896\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/keying\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8vagrant%e6%9e%84%e5%bb%ba%e4%b8%93%e9%97%a8%e7%94%a8%e4%ba%8eansible%e9%aa%8c%e8%af%81%e7%8e%af%e5%a2%83%e7%9a%84%e8%99%9a%e6%8b%9f%e6%9c%ba-%e5%8c%85%e6%8b%ac%e5%a4%9a%e4%b8%aa\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u4f7f\u7528Vagrant\u6784\u5efa\u4e13\u95e8\u7528\u4e8eAnsible\u9a8c\u8bc1\u73af\u5883\u7684\u865a\u62df\u673a - \u5305\u62ec\u591a\u4e2a\u865a\u62df\u673a\u3001\u865a\u62df\u673a\u4e4b\u95f4\u7684SSH\u516c\u94a5\u8ba4\u8bc1\u8bbe\u7f6e\u548c\u5171\u4eab\u6587\u4ef6\u5939 - 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\/\u4f7f\u7528vagrant\u6784\u5efa\u4e13\u95e8\u7528\u4e8eansible\u9a8c\u8bc1\u73af\u5883\u7684\u865a\u62df\u673a-\u5305\u62ec\u591a\u4e2a\/","og_locale":"zh_CN","og_type":"article","og_title":"\u4f7f\u7528Vagrant\u6784\u5efa\u4e13\u95e8\u7528\u4e8eAnsible\u9a8c\u8bc1\u73af\u5883\u7684\u865a\u62df\u673a - \u5305\u62ec\u591a\u4e2a\u865a\u62df\u673a\u3001\u865a\u62df\u673a\u4e4b\u95f4\u7684SSH\u516c\u94a5\u8ba4\u8bc1\u8bbe\u7f6e\u548c\u5171\u4eab\u6587\u4ef6\u5939","og_description":"\u9996\u5148 \u4f7f\u7528Vagrant\u5728\u6211\u7684VirtualBox\u4e0a\u6784\u5efaAnsible\u9a8c\u8bc1\u73af\u5883\u3002\u867d\u7136\u4f7f\u7528Vagrant\u53ef\u4ee5\u8f7b\u677e [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528vagrant\u6784\u5efa\u4e13\u95e8\u7528\u4e8eansible\u9a8c\u8bc1\u73af\u5883\u7684\u865a\u62df\u673a-\u5305\u62ec\u591a\u4e2a\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-09-11T18:49:07+00:00","article_modified_time":"2024-05-04T00:12:26+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d4cdb37434c4406cbc0e4\/10-0.png"}],"author":"\u79d1, \u9896","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u79d1, \u9896","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"6 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8vagrant%e6%9e%84%e5%bb%ba%e4%b8%93%e9%97%a8%e7%94%a8%e4%ba%8eansible%e9%aa%8c%e8%af%81%e7%8e%af%e5%a2%83%e7%9a%84%e8%99%9a%e6%8b%9f%e6%9c%ba-%e5%8c%85%e6%8b%ac%e5%a4%9a%e4%b8%aa\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8vagrant%e6%9e%84%e5%bb%ba%e4%b8%93%e9%97%a8%e7%94%a8%e4%ba%8eansible%e9%aa%8c%e8%af%81%e7%8e%af%e5%a2%83%e7%9a%84%e8%99%9a%e6%8b%9f%e6%9c%ba-%e5%8c%85%e6%8b%ac%e5%a4%9a%e4%b8%aa\/","name":"\u4f7f\u7528Vagrant\u6784\u5efa\u4e13\u95e8\u7528\u4e8eAnsible\u9a8c\u8bc1\u73af\u5883\u7684\u865a\u62df\u673a - \u5305\u62ec\u591a\u4e2a\u865a\u62df\u673a\u3001\u865a\u62df\u673a\u4e4b\u95f4\u7684SSH\u516c\u94a5\u8ba4\u8bc1\u8bbe\u7f6e\u548c\u5171\u4eab\u6587\u4ef6\u5939 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-09-11T18:49:07+00:00","dateModified":"2024-05-04T00:12:26+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/8ca01ba7f7362ad4edb7da206a12f29e"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8vagrant%e6%9e%84%e5%bb%ba%e4%b8%93%e9%97%a8%e7%94%a8%e4%ba%8eansible%e9%aa%8c%e8%af%81%e7%8e%af%e5%a2%83%e7%9a%84%e8%99%9a%e6%8b%9f%e6%9c%ba-%e5%8c%85%e6%8b%ac%e5%a4%9a%e4%b8%aa\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8vagrant%e6%9e%84%e5%bb%ba%e4%b8%93%e9%97%a8%e7%94%a8%e4%ba%8eansible%e9%aa%8c%e8%af%81%e7%8e%af%e5%a2%83%e7%9a%84%e8%99%9a%e6%8b%9f%e6%9c%ba-%e5%8c%85%e6%8b%ac%e5%a4%9a%e4%b8%aa\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8vagrant%e6%9e%84%e5%bb%ba%e4%b8%93%e9%97%a8%e7%94%a8%e4%ba%8eansible%e9%aa%8c%e8%af%81%e7%8e%af%e5%a2%83%e7%9a%84%e8%99%9a%e6%8b%9f%e6%9c%ba-%e5%8c%85%e6%8b%ac%e5%a4%9a%e4%b8%aa\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u4f7f\u7528Vagrant\u6784\u5efa\u4e13\u95e8\u7528\u4e8eAnsible\u9a8c\u8bc1\u73af\u5883\u7684\u865a\u62df\u673a &#8211; \u5305\u62ec\u591a\u4e2a\u865a\u62df\u673a\u3001\u865a\u62df\u673a\u4e4b\u95f4\u7684SSH\u516c\u94a5\u8ba4\u8bc1\u8bbe\u7f6e\u548c\u5171\u4eab\u6587\u4ef6\u5939"}]},{"@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\/8ca01ba7f7362ad4edb7da206a12f29e","name":"\u79d1, \u9896","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/8a6fb3cc7ba2f69d2189ba532aec4633ea7ed75ac0af162ec367cb3abc0fb2af?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8a6fb3cc7ba2f69d2189ba532aec4633ea7ed75ac0af162ec367cb3abc0fb2af?s=96&d=mm&r=g","caption":"\u79d1, \u9896"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/keying\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8vagrant%e6%9e%84%e5%bb%ba%e4%b8%93%e9%97%a8%e7%94%a8%e4%ba%8eansible%e9%aa%8c%e8%af%81%e7%8e%af%e5%a2%83%e7%9a%84%e8%99%9a%e6%8b%9f%e6%9c%ba-%e5%8c%85%e6%8b%ac%e5%a4%9a%e4%b8%aa\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/42510","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\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=42510"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/42510\/revisions"}],"predecessor-version":[{"id":97162,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/42510\/revisions\/97162"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=42510"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=42510"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=42510"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}