如何使用 Puppet Master 佈署 Vagrant
什麼是 Vagrant ?
HashiCorp
出品的 HashiCorp 產品必屬佳作 Vagrant
,簡單介紹一下 Vagrant
是一款用於構建及配置虛擬開發環境的軟體,基於 Ruby
開發,主要使用 Oracle
的開源 VirtualBox
虛擬化系統。
Vagrant
支援 Chef、Puppet、Ansible .. 等快速的方式構建環境。
Requires
在開始之前,要先安裝 Vagrant
和 Virtualbox
。
Virtualbox 安裝
Virtualbox
的官方 Download 找到適合自己的環境安裝。
Vagrent 安裝
Vagrant
的安裝也很簡單,以 Ubuntu
為例
$ wget https://releases.hashicorp.com/vagrant/2.0.4/vagrant_2.0.4_x86_64.deb
$ dpkg -i vagrant_2.0.4_x86_64.deb
$ vagrant version
Installed Version: 2.0.4
Latest Version: 2.0.4
用 Puppet Master 來 build Vagrant
使用 Puppet Master
的話就單純許多,你只要有 puppet agent
就可以搞定
├── Vagrantfile
└── scripts
└── puppet_install.sh
Vagrantfile
用來定義這個Vagrent box
要做的主要設定檔
假設環境:
- Puppet Server:puppet.master.com
- Puppet Node:puppet.node.com
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/xenial64"
config.vm.provision "shell", path: 'scripts/puppet_install.sh'
config.vm.provision "puppet_server" do |puppet|
puppet.puppet_server = 'puppet.master.com'
puppet.puppet_node = 'puppet.node.com'
puppet.options = "--verbose --debug"
end
config.vm.network "forwarded_port", guest: 80, host: 8080, protocol: "tcp"
config.vm.network "forwarded_port", guest: 443, host: 8443, protocol: "tcp"
end
然後 puppet_install.sh 裡面寫 puppet-agent 的安裝方式
#!/bin/bash
wget https://apt.puppetlabs.com/puppet5-release-xenial.deb
sudo dpkg -i puppet5-release-xenial.deb
sudo apt update && sudo apt install puppet-agent -y
sudo tee /etc/puppetlabs/puppet/puppet.conf <<EOF
[main]
environment = production
EOF
如果該 node 已經有授權過的話則可以用 client_cert_path
和 client_private_key_path
來指定 cert / key。
Build
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'ubuntu/xenial64'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'ubuntu/xenial64' is up to date...
...
...
==> default: Notice: Applied catalog in 168.25 seconds
完成後就用 vagrant ssh
來登入虛擬機吧!