使用VirtualBox+Vagrant在Windows10上创建的虚拟Linux环境,并使用Ansible进行最简单的配置管理方法

得出结论

在Windows的Shell中启动虚拟环境,然后在Windows上的Bash中运行ansible。

验证环境

    • Windows10

 

    • vagrant 1.9.4

 

    • virtual-box 5.1.20

 

    ansible 2.4.0.0

操作步骤

在Windows上准备使用Bash

在Windows上安装Bash

非常抱歉突然给您添麻烦,由于这项工作已经太久远,没有日志也没有记忆,无法提供详细的信息。
请参考这篇文章进行安装。

家的变更

在后续工作中,bash和Windows终端将在同一目录下进行操作,因此需要更改bash端的home目录。
只要目录对两者都可访问即可,但本次将创建一个名为c:\User\[user_name]\bow的目录,
并将其设为今后的工作目录。
由于Windows的C盘已挂载到路径/mnt/c,因此可以利用此信息更新/etc/passwd的内容。


user-name:x:1000:1000:"",,,:/mnt/c/Users/user-name/bow:/bin/bash

如果能够重新启动Bash,并且确认能够从Windows端访问由bash创建的文件等内容,那么这个过程就完成了。

Ansible的安装

ansible 可以通过 apt 命令进行安装。但是,标准软件仓库中只提供了 1.x 版本(大约是 1.6),因此需要添加 ansible 的官方软件仓库,并从官方软件仓库中安装。

$ sudo apt-get update
$ sudo apt-get install software-properties-common
$ sudo apt-add-repository ppa:ansible/ansible
$ sudo apt-get update
$ sudo apt-get install ansible
$ ansible --version
ansible 2.4.0.0

如果已经安装或者不需要的话,初始安装的software-properties-common软件包就不需要安装,因为它是用来启用apt的仓库管理命令apt-add-repository的。

现在,您可以在bash上使用ansible了。

准备虚拟Linux环境

安装VirtualBox + Vagrant

没有什么特别要说的。
请从官方网站下载安装程序并进行安装。

启动虚拟环境

请先切换到之前创建的工作目录,然后创建一个类似以下的Vagrant文件。

Vagrant.configure("2") do |config|
    config.vm.box = "bento/centos-7.2"

    config.vm.provider :virtualbox do |v|
        v.name = "centos72"
        v.customize ["modifyvm", :id, "--memory", 4096]
    end

    config.vm.network :private_network, ip: "192.168.33.100" 
    config.ssh.forward_agent = true

end

对于要使用的盒子镜像,除了希望使用CentOS外,没有特别的偏好,因此我们使用了Bento项目的镜像(由Chef开发团队维护的镜像)。

只要使用vagrant启动虚拟环境,并通过ssh登录,就算完成了。

> vagrant up
...
> vagrant ssh
[vagrant@localhost ~]$

测试连通性

PING 能通吗?

首先,我們從bash控制台測試ping是否能夠連通。

$ ping 192.168.33.100
PING 192.168.33.100 (192.168.33.100) 56(84) bytes of data.
64 bytes from 192.168.33.100: icmp_seq=1 ttl=64 time=0.688 ms
64 bytes from 192.168.33.100: icmp_seq=2 ttl=64 time=1.44 ms
64 bytes from 192.168.33.100: icmp_seq=3 ttl=64 time=1.36 ms
64 bytes from 192.168.33.100: icmp_seq=4 ttl=64 time=1.35 ms
64 bytes from 192.168.33.100: icmp_seq=5 ttl=64 time=1.23 ms
64 bytes from 192.168.33.100: icmp_seq=6 ttl=64 time=1.43 ms
^C
--- 192.168.33.100 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5004ms
rtt min/avg/max/mdev = 0.688/1.254/1.448/0.261 ms

Ping似乎没有问题,可以通行。

能否通过ssh登录

接下来,我将尝试通过ssh访问。
通过vagrant创建的环境可以使用以下配置进行ssh登录:
– 用户名:vagrant
– ssh密钥:[工作目录]/.vagrant/machines/default/virtualbox/private_key

~$ ssh vagrant@192.168.33.100 -i .vagrant/machines/default/virtualbox/private_key
The authenticity of host '192.168.33.100 (192.168.33.100)' can't be established.
ECDSA key fingerprint is SHA256:DrnHAeFdOksJ55bMSmPERVhLTW2ft2gWxXloYREdYbY.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.33.100' (ECDSA) to the list of known hosts.
Last login: Sat Oct 14 08:44:32 2017 from 10.0.2.2

[vagrant@localhost ~]$

确认已成功登录且一切安好。

借助ansible能够访问吗?

最后,我会尝试用ansible发送ping。

在以下的工作目录中,尝试执行以下的连通性测试命令…

$ ansible 192.168.33.100 -m ping -u vagrant --private-key=./.vagrant/machines/default/virtualbox/private_key
 [WARNING]: Could not match supplied host pattern, ignoring: all

 [WARNING]: provided hosts list is empty, only localhost is available

 [WARNING]: Could not match supplied host pattern, ignoring: 192.168.33.100

 [WARNING]: No hosts matched, nothing to do

无法找到主机错误…
根据调查,需要在执行目录中创建ansible.cfg文件,并指定执行清单文件,按照指示创建文件。

从Github上获取官方的ansible.cfg, 并将同目录下的hosts文件编辑为使用的清单文件。

#inventory      = /etc/ansible/hosts
inventory      = hosts
[web]
192.168.33.100

编辑文件后,重新执行命令…

$ ansible 192.168.33.100 -m ping -u vagrant --private-key=./.vagrant/machines/default/virtualbox/private_key
192.168.33.100 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh: bind: Operation not permitted\r\nunix_listener: cannot bind to path: ... ",
    "unreachable": true
}

任务执行了,但是出现了一个使用SSH连接失败的错误。

我不知道这个错误的原因,

#ssh_args = -C -o ControlMaster=auto -o ControlPersist=60s
ssh_args =

相信空白的ssh_args可以解决ansible.cfg文件的问题,尝试验证一下…

$ ansible 192.168.33.100 -m ping -u vagrant --private-key=./.vagrant/machines/default/virtualbox/private_key
192.168.33.100 | SUCCESS => {
    "changed": false,
    "failed": false,
    "ping": "pong"
}

我成功地完成了无事故疏通测试。

总结

通过在Windows上启动的虚拟环境, 已确认可以从bash上运行的ansible访问。从这里开始我们终于可以讨论实际的配置了, 但是现在先结束这个话题。

请提供更多上下文。

尝试安装Bash on Ubuntu on Windows吧!

更改Bash on Windows的主目录

直到连接到VPS并成功通过Ansible进行ping测试

Ansible在OpenSSH更新后无法连接到任何服务器。

广告
将在 10 秒后关闭
bannerAds