หมายเหตุ ทดสอบกับ Ubuntu เวอร์ชั่น 14.04 Vagrant เวอร์ชั่น 1.5.3 และ Puppet เวอร์ชั่น 3.7.3
อย่างน้อยเราต้องมีเครื่องสัก 2 เครื่อง เครื่องหนึ่งติดตั้ง Puppet Master และอีกเครื่องหนึ่งติดตั้ง Puppet Agent วิธีที่ง่ายที่สุด และถูกที่สุดคือสร้าง Virtual Machine (VM) ขึ้นมาใช้งาน ถ้า Geek หน่อยก็ใช้ Vagrant สร้าง Multi-Machine สร้าง VM บล็อกนี้จะขอแนะนำให้ใช้ Vagrant นะครับ ชีวิตสบายขึ้นเยอะ
ข้างล่างนี้เป็นไฟล์ Vagrantfile
ที่จะใช้
# -*- mode: ruby -*- # vi: set ft=ruby : VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "trusty64" config.vm.define "puppet" do |master| master.vm.host_name = "puppet" master.vm.network :private_network, ip: "192.168.33.10" end config.vm.define "web1" do |agent| agent.vm.host_name = "web1" agent.vm.network :private_network, ip: "192.168.33.11" end end
โดยผมจะเอาเครื่อง puppet
(ใข้ IP 192.168.33.10) ทำเป็นเครื่อง Master ส่วน web1
(ใช้ IP 192.168.33.11) ทำเป็นเครื่อง Agent เมื่อเซตอัพ Vagrant Box กันเรียบร้อยแล้ว (ขอข้ามขั้นตอนการสร้าง Box ไปนะครับ) ก็สั่ง vagrant up
โลด
พอเราได้เครื่องมา 2 เครื่องเรียบร้อย อย่างแรกที่เราควรจะต้องทำคือทำให้ทั้ง 2 เครื่องคุยกันแบบปกติได้ก่อน เราไม่จำเป็นต้องไปเซต DNS อะไรให้วุ่นวาย เราทำแค่เซต Hosts ก็พอ
อย่างที่สองคือเราต้องเซตเวลาของระบบให้ตรงกัน ซึ่งถ้าเวลาไม่ตรงกันแล้วอาจจะมีปัญหาเกี่ยวกับ Certificate ตามมาได้ (ตัว Master กับ Agent เวลาคุยกัน จำเป็นต้องมี Certificate เหมือนเป็นการยืนยันตัวตน) ในที่นี้ผมใช้ Network Time Protocol (NTP) เพื่อช่วยในการเซตเวลา ให้รันคำสั่งข้างล่างนี้ทั้งเครื่อง Master และ Agent เลยครับ
sudo ntpdate pool.ntp.org; sudo apt-get update && sudo apt-get -y install ntp; sudo service ntp restart
เสร็จแล้วเราก็จะเอา Debian Package จาก Puppet Labs มาติดตั้งบนเครื่องเราก่อน (ทั้ง Master และ Agent) ใช้คำสั่งข้างล่างนี้
cd ~; wget https://apt.puppetlabs.com/puppetlabs-release-trusty.deb; sudo dpkg -i puppetlabs-release-trusty.deb; sudo apt-get update
ต่อไปเราจะดูไปทีละเครื่องนะครับ
ติดตั้ง Puppet Master เริ่มด้วยคำสั่งนี้
sudo apt-get install puppetmaster
หลังจากติดตั้งเสร็จ ให้เข้าไปแก้ไฟล์ /etc/puppet/puppet.conf
โดยแค่ลบบรรทัด templatedir=$confdir/templates
ออกไป เพราะว่ามัน Deprecated ไปแล้ว.. ไม่เข้าใจเหมือนกันทำไมเวอร์ชั่นใหม่ๆ ไม่เอาบรรทัดนี้ออกไป
ทีนี้จะลองสร้างไฟล์ site.pp
ไว้ที่ /etc/puppet/manifests/
ข้างในไฟล์ก็แค่บอกว่าเราจะติดตั้ง Git บนเครื่อง Agent ตามนี้
package { "git-core":
ensure => "installed"
}
ต่อมาให้เรา Restart ตัว Puppet Master
sudo service puppetmaster restart
เสร็จเรียบร้อยสำหรับตัว Master ถ้าใครอยากดูพวกข้อความต่างๆ บน Master แบบ Real-Time ให้รันแบบนี้แทน
sudo puppet master --verbose --no-daemonize
ต่อไป ติดตั้ง Puppet Agent ให้รันคำสั่งนี้
sudo apt-get install puppet
เสร็จแล้วให้เข้าไปแก้ไฟล์ /etc/puppet/puppet.conf
โดยให้ลบบรรทัด templatedir=$confdir/templates
ออกเหมือนเดิม แล้วก็ลบส่วน [master]
ออกไปด้วย
จากนั้นไปที่ไฟล์ /etc/default/puppet
แล้วเปลี่ยนค่า START
ให้เป็น yes
ซะ เพื่อบอกว่าเครื่องนี้เป็น Agent นะ เสร็จแล้วก็ Restart
sudo service puppet restart
ทีนี้ให้เรากลับไปดูที่ตัว Master ครับ จะมีการส่งคำร้องขอ Certificate จาก Agent มา วิธีดู? รันคำสั่งตามนี้ครับ
sudo puppet cert list
เราจะเห็น web1
อยู่ในลิสต์ ประมาณนี้
"web1" (SHA256) 31:CF:6D:5D:9A:20:05:99:87:59:29:BD:4B:59:47:22:70:4F:89:0D:DB:38:1C:5F:D3:50:E0:6F:05:C7:35:36
ให้เรา Sign Certificate นี้ครับ ใช้คำสั่ง
sudo puppet cert sign web1
ถ้าเราลิสต์ดู Certificate อีกครั้ง จะเห็นว่า web1
หายไปแล้ว ให้ลองใส่ -all
ดูครับ แล้วจะเห็นประมาณนี้
+ "puppet" (SHA256) 04:4C:EB:9A:6D:F1:F6:3E:8D:28:68:0A:63:CF:DF:3C:CD:EC:47:63:F7:F3:6F:8D:FC:37:33:F1:24:22:F0:55 + "web1" (SHA256) 3D:96:2E:97:28:85:FD:20:DF:0B:E3:4D:3A:97:6A:AF:98:0E:E4:36:F9:08:98:7E:15:D1:F5:9E:61:D2:AB:F7
เครื่องหมาย + ข้างหน้าหมายความว่าเราได้ Sign ตัว Certificate นั้นๆ ไปเรียบร้อยแล้ว
แล้ว Agent จะใช้งาน Git ได้เลยหรือเปล่า? ยังครับ ให้เรา Enable มันก่อน มันจะได้ไป Poll หา Master สั่ง
sudo puppet agent --enable
ค่า Default ในการ Poll แต่ละทีจะประมาณ 30 นาทีครับ เวลาเราทดสอบให้ตั้งค่าให้น้อยลงกว่านี้ก็ได้ โดยไปแก้ที่ไฟล์ /etc/puppet/puppet.conf
แล้วเพิ่มบรรทัดข้างล่างนี้ไปในส่วนของ [main]
runinterval=10
หลังจาก Restart ตัว Agent แล้วทุกๆ 10 วินาที Agent จะ Poll หา Master ครับ ถ้าติดตั้งถูกต้องมาตั้งแต่แรก เครื่อง Agent น่าจะใช้ Git ได้แล้วครับ ลองดู
หรือถ้าใครใจร้อนไม่อยากรอเวลาให้รันเทสตามนี้ (ต้อง Enable มาก่อนนะ ถึงจะรันเทสได้)
sudo puppet agent --test
ทีนี้ถ้าแก้ Configuration อะไรบน Master ก็อย่าลืม Restart มันด้วยนะ
สุดท้าย สังเกตดูว่าไฟล์ Configuration ทั้งหมดเก็บไว้ที่เดียวคือที่ Puppet Master ของเรา พวก Agent จะคอยมาเช็คจาก Master เองว่ามีอะไรเปลี่ยนแปลงไหมเทียบกับสถานะที่มันเป็นอยู่ ถ้ามีอะไรเปลี่ยนแปลงมันก็จะอัพเดทสถานะมันให้ตรงกับ Configuration ที่อยู่บน Master เองแบบอัตโนมัติ!
เอาล่ะ บอกลา Manual Infrastructure Management ได้เลย ยุคต่อจากนี้คือยุค Automated Infrastructure Management 😀
Credit: How to Install Puppet To Manage Your Server Infrastructure
I have noticed you don't monetize your site, don't waste your traffic, you can earn additional bucks every month because you've got hi quality content.
If you want to know how to make extra money, search for: Ercannou's essential
adsense alternative
I often visit your website and have noticed that you don't update it often. More frequent updates will give your
page higher rank & authority in google. I know that writing articles takes a
lot of time, but you can always help yourself with miftolo's tools which will shorten the
time of creating an article to a few seconds.