在前一篇,我們透過了 Vagrant + VirtualBox + Ansible 處理了
首先,什麼是 Ad-hoc 指令?
它的英文定義可以參考=>連結
綜上所述,它就是一種針對特定問題的一種即時指令
以上提到的任務或多或少都可以半自動化,但某種程度上還是需要人為介入,尤其是即時發現問題
在目前微服務架構盛行的情況下,一台台登入似乎不是一個好辦法
Ansible 的誕生讓網管或是開發人員可以一次性針對上百台的機器同時下達指令
比方說在安裝篇的時候,我們曾經下過一條指令:
ansible all -m ping
除了上述指令外,我們也可以下以下指令:
ansible all -a "free -m"
#-*- mode: ruby -*-
#vi: set ft=ruby :
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.ssh.insert_key = false config.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", "256"]
end
#Application server 1. config.vm.define "app1" do |app|
app.vm.hostname = "orc-app1.dev"
app.vm.box = "geerlingguy/centos7"
app.vm.network :private_network, ip: "192.168.60.4"
end
#Application server 2. config.vm.define "app2" do |app|
app.vm.hostname = "orc-app2.dev"
app.vm.box = "geerlingguy/centos7"
app.vm.network :private_network, ip: "192.168.60.5"
end
#Database server. config.vm.define "db" do |db|
db.vm.hostname = "orc-db.dev"
db.vm.box = "geerlingguy/centos7"
db.vm.network :private_network, ip: "192.168.60.6"
end end
- 是不是覺得看起來很複雜?
- 其實有更好的作法,不過先這樣吧!
- 針對這個 Vagrantfile 有幾點要說明的:
- 我們定義了三台 VM Server
- 每一台 Server 都有它的獨特名稱及網路
- 3 台 Server 都跑 CentOS 7
- 其餘的部份各位有興趣再去查吧
- 接著我們要針對這三台 VM 定義 **inventory** 了
```shell=
#Application servers
[app]
192.168.60.4
192.168.60.5
#Database server
[db]
192.168.60.6
#Group 'multi' with all servers
[multi:children]
app
db
#Variables that will be applied to all servers
[multi:vars]
ansible_ssh_user=vagrant
ansible_ssh_private_key_file=~/.vagrant.d/insecure_private_key
ansible multi -m ping -i hosts -u vagrant
這篇主要是為了之後幾乎所有的內容建好環境