尝试使用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的内容!非常感谢!