尝试使用Vagrant和Ansible

我在职场上有了学习Ansible的机会,并打算把我所做的事情记录下来。由于我刚刚开始学习,所以希望能够得到更多指导和支持。

The environment.

    • ホスト PC: Mac

 

    • Ubuntu ver: 16.04.4

 

    • 仮想環境: VirtualBox

 

    • Vagrant: 2.0.3

 

    ansible: 2.5.0

Ansible是什么?

    構成管理ツール

这个工具的目的是通过定义服务器的操作系统和中间件的应有形态,登记定期工作,以使工作高效且时间短,减少人为错误的风险。

[官方文档]
请参考以下链接获取Ansible的安装指南:
http://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html

试着使用Vagrant创建虚拟环境。

    vagrantとは?

将创建虚拟机并配置环境的工具整合在一起,使其能够一次性运行。

【公式文档】
https://www.vagrantup.com/docs/

下载Ubuntu 16.04的Box盒子。

我在尋找下載Box的時候參考過的網站是這個:http://www.vagrantbox.es/

# Boxを取得する
$vagrant box add ubuntu-16.04 https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-vagrant.box

我会确认是否已经取得了。

$vagrant box list
ubuntu-16.04     (virtualbox, 0)

可以了吗?

接下来,我们要初始化Vagrant。
通过执行该命令,将会创建一个名为Vagrantfile的配置文件。

$vagrant init ubuntu-16.04
# ubuntu-16.04はBoxの名前になります
    vagrantを実行
$vagrant up
    vagrantで立てたサーバーに対して sshで接続
$vagrant ssh
Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.4.0-116-generic x86_64)

我可以通过SSH连接到使用Vagrant创建的服务器!

尝试使用Ansible

我希望能够利用Vagrant创建虚拟环境,并通过实际使用Ansible来完成。

修改Vagrantfile,在虚拟环境中创建两台服务器。

    vagrantfileを以下のように設定し、仮想環境上にサーバーを2つたてます
VAGRANTFILE_API_VERSION = '2'

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "ubuntu-16.04"

  # VM
  config.vm.define :'host1' do |host|
    host.vm.hostname = 'host1'
    host.vm.network :forwarded_port, guest: 22, host: 2001, id: "ssh"
    host.vm.network :private_network, ip: "192.168.100.11"
  end

  config.vm.define :'host2' do |host|
    host.vm.hostname = 'host2'
    host.vm.network :forwarded_port, guest: 22, host: 2002, id: "ssh"
    host.vm.network :forwarded_port, guest: 80, host: 8000, id: "http"
    host.vm.network :private_network, ip: "192.168.100.12"
  end

  config.vbguest.auto_update = false
end

编辑完Vagrantfile之后

$vagrant up

将Ansible服务器标记为host1,受Ansible控制的服务器标记为host2。由于Ansible不需要安装代理程序,只要能通过SSH登录的环境就可以将其作为配置管理的目标。

在启动后,为了使用Ansible从host1连接到host2的ssh,需要复制密钥。

$ vagrant ssh-config host1 > ssh_config
$ scp -F ssh_config .vagrant/machines/host2/virtualbox/private_key host1:.ssh/id_rsa

我将使用SSH连接来确认host1是否能够连接到host2。

$vagrant ssh host1
$vagrant ssh host2

终于要安装Ansible了

在host1上安装Ansible

# host1にsshで接続
$vagrant ssh host1

# 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


vagrant@host1:~$ ansible --version
ansible 2.5.0

我成功安装了Ansible!

为了安全起见, Ansible已经设置了只能连接到事先指定的服务器, 所以我们需要在/etc/ansible/hosts文件中添加目标IP进行连接。

/etc/ansible/hosts

192.168.100.12:

我会进行连通性确认。

$ansible 192.168.100.12 -m ping
192.168.100.12 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

一切顺利成功了!

我已经总结到一旦确认了沟通的成功。下次,我打算整理关于playbook的内容!非常感谢!

广告
将在 10 秒后关闭
bannerAds