20 分钟建立一个 Ansible 实验室( 二 )

这些是你需要注意的重要文件 。

  • inventory-test.yaml:连接到节点的清单文件
  • playbook.yaml:Vagrant 供应者调用的用于配置节点的剧本文件
  • `Vagrantfile':Vagrant 用来部署环境的文件
  • Vagrant 密钥文件:连接实验室环境中各节点的 Vagrant 密钥
你可以根据你的需要调整这些文件 。Ansible 的灵活性使你有能力根据你的需要声明性地改变你的环境 。
部署你的实验室环境首先,克隆这个 GitHub 仓库 中的代码:
$ git clone https://github.com/mikecali/ansible-labs-101.gitCloning into 'ansible-labs-101'...remote: Enumerating objects: 15, done.remote: Counting objects: 100% (15/15), done.remote: Compressing objects: 100% (13/13), done.remote: Total 15 (delta 2), reused 10 (delta 0), pack-reused 0Unpacking objects: 100% (15/15), 6.82 KiB | 634.00 KiB/s, done.接下来,将你的目录改为 vagrant-session-2,并查看其内容:
$ lsBootstrap-node.sh   inventory   keys   playbook.yml   README.md Vagrantfile现在你已经拥有了实验室环境所需的所有工件和配置文件 。要部署环境,请运行:
$ vagrant up只要有一个像样的网络连接,只需要 20 分钟左右就可以得到一个运行环境:
$ vagrant upBringing machine 'web1.demo.com' up with 'virtualbox' provider...Bringing machine 'web2.demo.com' up with 'virtualbox' provider...Bringing machine 'ansible-host' up with 'virtualbox' provider...==> web1.demo.com: Importing base box 'centos/8'...==> web1.demo.com: Matching MAC address for NAT networking...==> web1.demo.com: Checking if box 'centos/8' version '1905.1' is up to date...==> web1.demo.com: Setting the name of the VM: ansible-labs_web1democom_1606434176593_70913==> web1.demo.com: Clearing any previously set network interfaces...==> web1.demo.com: Preparing network interfaces based on configuration...    web1.demo.com: Adapter 1: nat    web1.demo.com: Adapter 2: hostonly==> web1.demo.com: Forwarding ports...    web1.demo.com: 22 (guest) => 2222 (host) (adapter 1)==> web1.demo.com: Running 'pre-boot' VM customizations...==> web1.demo.com: Booting VM...==> web1.demo.com: Waiting for machine to boot. This may take a few minutes...    web1.demo.com: SSH address: 127.0.0.1:2222    web1.demo.com: SSH username: vagrant    web1.demo.com: SSH auth method: private key[...]一旦该剧本执行完成,你会看到这样的输出:
PLAY RECAP *********************************Ansible-host     : ok=20 changed=11 unreachable=0 failed=0 skipped=0 rescued=0 ignored=3Real 18m14.288sUser 2m26.978sSys 0m26.849s确认所有虚拟机都在运行:
$ vagrant statusCurrent machine states:Web1.demo.com    running (virtualbox)Web2.demo.com    running (virtualbox)ansible-host     running (virtualbox)[...]你可以通过登录其中一个虚拟机进一步调查 。访问 ansible-host:
> vagrant ssh ansible-hostActivate the web console with: systemctl enable --now cockpit.socketLast login: Thu Nov 26 12:21:23 2020 from 10.0.2.2[vagrant@ansible-host ~] uptime16:46:42 up 1:24, 1 user, load average: 0.00, 0.01, 0.04最后,你可以使用 Ansible 模块来 ping 你创建的其他节点:
[vagrant@ansible-host]$ ansible -i inventory-test.yaml webservers -m ping -u vagrant192.168.29.2 | SUCCESS => {  "Ansible-facts": {      "Discovered_interpreter_Python": "/usr/libexec/platform-python"    },    "Changed": false;    "Ping": "pong"}[...]清理运行如下命令来清理环境:
$ vagrant destroy [vagrant machine name]你的输出会像这样:
20 分钟建立一个 Ansible 实验室

文章插图
Output from cleaning up environment
有创意的学习在自己的实验室里利用自己的时间学习 Ansible 这样的软件是一个好习惯,但由于受到无法控制的限制,可能会很困难 。
有时候,你需要发挥创意,找到另一种方法 。在开源社区中,你可以选择很多方案;我们选择这些工具的主要原因之一是,它们是许多人常用和熟悉的 。
另外,请注意,这些剧本并没有按照我的要求进行优化 。请随时改进它们,并在评论中分享你的工作 。


推荐阅读