Bài viết này giới thiệu rất ngắn gọn về Vagrant. Tại sao lại ngắn gọn như vậy? Bởi vì Vagrant rất đơn giản và tài liệu hướng dẫn của Vagrant đã cung cấp đầy đủ thông tin chi tiết.
- Điều kiện tiên quyết
- Hộp
- Vagrantfile
- Kết nối với máy ảo
- Thư mục /vagrant
- Chạy các tập lệnh xây dựng
- Các bước tiếp theo
Các bài viết liên quan.
- Vagrant : Hướng dẫn dành cho người mới bắt đầu
- Tạo một Vagrant Base Box (VirtualBox)
Điều kiện tiên quyết
Bạn cần cài đặt phần mềm sau.
Vagrant hỗ trợ các công cụ ảo hóa khác, nhưng VirtualBox là nhà cung cấp mặc định, và nó hoạt động trên Linux, Windows và Mac, vì vậy nó rất tiện dụng vì tôi sử dụng cả ba hệ điều hành này.
Hộp
Vagrant boxes là các ảnh máy ảo được xây dựng sẵn. Hãy coi chúng như ảnh nền hoặc ảnh mẫu. Chúng có thể là một bản cài đặt hệ điều hành tối giản hoặc đã được cài đặt toàn bộ môi trường. Có rất nhiều Vagrant boxes trực tuyến , vì vậy bạn có thể tìm kiếm thứ gì đó trông thú vị. Trong phần còn lại của bài viết này, chúng ta sẽ giả định bạn chỉ cần một máy ảo Oracle Linux cơ bản, vì vậy chúng ta sẽ sử dụng box "bento/oracle-7.6". Bạn không cần phải tải xuống thủ công. Sau khi chúng ta tham chiếu đến nó, Vagrant sẽ tự động tải xuống và thêm nó vào danh sách các box đã tải xuống cục bộ. Bạn chỉ cần tải xuống lại nếu có phiên bản mới hơn của cùng một box hoặc nếu bạn xóa box đó khỏi danh sách các box hiện có.
Chúng ta có thể liệt kê các hộp có sẵn mà chúng ta đã tải xuống bằng vagrant box listlệnh này.
C:\> vagrant box list bento/fedora-28 (hộp ảo, 201812.15.0) bento/fedora-29 (hộp ảo, 201812.15.0) bento/oracle-6.9 (virtualbox, 201806.08.0) bento/oracle-7.5 (virtualbox, 201808.24.0) C:\>
Chúng ta có thể tải xuống thủ công một box mới bằng lệnh vagrant box add. Việc này diễn ra tự động khi bạn tham chiếu một box mới trong Vagrantfile, nhưng bạn có thể muốn thêm một box từ kho lưu trữ không chuẩn. Trong ví dụ sau, chúng ta tải xuống box "bento/oracle-7.6" từ Vagrant Cloud mặc định và box "ol76" do Oracle cung cấp từ yum.oracle.com.
C:\>vagrant box add bento/oracle-7.6 --provider virtualbox
==> box: Loading metadata for box 'bento/oracle-7.6'
box: URL: https://vagrantcloud.com/bento/oracle-7.6
==> box: Adding box 'bento/oracle-7.6' (v201812.27.0) for provider: virtualbox
box: Downloading: https://vagrantcloud.com/bento/boxes/oracle-7.6/versions/201812.27.0/providers/virtualbox.box
box: Download redirected to host: vagrantcloud-files-production.s3.amazonaws.com
box: Progress: 100% (Rate: 6237k/s, Estimated time remaining: --:--:--)
==> box: Successfully added box 'bento/oracle-7.6' (v201812.27.0) for 'virtualbox'!
C:\>
C:\>vagrant box add --name ol76 https://yum.oracle.com/boxes/oraclelinux/ol76/ol76.box
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'ol76' (v0) for provider:
box: Downloading: https://yum.oracle.com/boxes/oraclelinux/ol76/ol76.box
box: Progress: 100% (Rate: 715k/s, Estimated time remaining: --:--:--)
==> box: Successfully added box 'ol76' (v0) for 'virtualbox'!
C:\>Chúng ta xóa một hộp cũ mà chúng ta không còn sử dụng nữa bằng vagrant box removelệnh này.
C:\> vagrant box remove bento/fedora-28 Removing box 'bento/fedora-28' (v201812.15.0) with provider 'virtualbox'... C:\>
Vagrantfile
Vagrantfile mô tả máy ảo mà bạn muốn xây dựng. Việc tạo ra một Vagrantfile rất đơn giản. Chỉ cần tạo một thư mục mới, chuyển đến thư mục đó và chạy lệnh vagrant init.
mkdir test1 cd test1 vagrant init
Giờ đây sẽ có một tệp tin tên là "Vagrantfile" trong thư mục. Nếu bạn mở nó ra, nó trông khá lớn, nhưng chủ yếu là các bình luận. Đây là hình ảnh của nó sau khi bạn xóa các bình luận.
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = "base"
endChúng ta muốn sử dụng hộp "bento/oracle-7.6", vậy hãy thiết lập điều đó.
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = "bento/oracle-7.6"
endGiờ đây chúng ta đã có thể tạo và khởi động máy ảo. Giả sử chúng ta đang ở trong thư mục chứa tệp Vagrantfile, chúng ta có thể sử dụng lệnh vagrant up. Hãy nhớ rằng, nếu hộp "bento/oracle-7.6" chưa có trên máy của bạn, nó sẽ được tải xuống trước. Nếu bạn đã tải xuống trước đó, hộp hiện có sẽ được sử dụng.
C:\test1>vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'bento/oracle-7.6'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'bento/oracle-7.6' is up to date...
==> default: Setting the name of the VM: test1_default_1546588309131_89558
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
==> default: Forwarding ports...
default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
default:
default: Vagrant insecure key detected. Vagrant will automatically replace
default: this with a newly generated keypair for better security.
default:
default: Inserting generated public key within guest...
default: Removing insecure key from the guest if it's present...
default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
default: The guest additions on this VM do not match the installed version of
default: VirtualBox! In most cases this is fine, but in rare cases it can
default: prevent things such as shared folders from working properly. If you see
default: shared folder errors, please make sure the guest additions within the
default: virtual machine match the version of VirtualBox you have installed on
default: your host and reload your VM.
default:
default: Guest Additions Version: 5.2.22
default: VirtualBox Version: 6.0
==> default: Mounting shared folders...
default: /vagrant => C:/test1
C:\test1>Sau khi lấy lại quyền điều khiển từ dấu nhắc lệnh, hãy kiểm tra giao diện VirtualBox. Bạn sẽ thấy một máy ảo mới ở đó, với một cái tên khá xấu xí, bao gồm cả tên thư mục.
Bạn có thể dừng, khởi động, khởi động lại và xóa máy ảo bằng các lệnh sau.
vagrant halt
vagrant up
vagrant reload
vagrant destroy -fChúng ta có thể thay đổi một số thuộc tính của máy ảo, bao gồm cả cái tên máy ảo khó coi đó, bằng cách chỉnh sửa tệp Vagrantfile.
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = "bento/oracle-7.6"
config.vm.provider "virtualbox" do |vb|
vb.memory = 2048 # Memory size in M.
vb.cpus = 1 # Number of vCPUs
vb.name = "test1" # VM name.
# Tell VirtualBox this VM is running on an SSD.
vb.customize ['storageattach', :id, '--storagectl', 'SATA Controller', '--port', '0', '--nonrotational', 'on']
end
endNếu bạn chưa làm vậy, hãy xóa máy ảo và tạo lại nó.
vagrant destroy -f
vagrant upKiểm tra giao diện VirtualBox, bạn sẽ thấy bộ nhớ, vCPU và tên máy ảo đã được thiết lập theo yêu cầu.
Trước khi làm bất cứ điều gì khác, hãy xem cách kết nối với máy ảo.
Kết nối với máy ảo
Nếu chúng ta đang ở trong thư mục chứa tệp Vagrantfile, chúng ta có thể kết nối với máy ảo bằng vagrant sshlệnh sau.
vagrant sshChúng ta đang kết nối với người dùng "vagrant". Người dùng này có quyền sudo, vì vậy chúng ta có thể thực hiện bất kỳ thao tác quản trị nào từ đây, hoặc chuyển sang người dùng khác, bao gồm cả "root".
Vagrant tự động cấu hình chuyển tiếp cổng, cho phép chúng ta kết nối với máy ảo từ một ứng dụng SSH. Nếu xem kết quả khởi động, chúng ta sẽ thấy các dòng như sau.
==> default: Forwarding ports...
default: 22 (guest) => 2222 (host) (adapter 1)Điều này có nghĩa là chúng ta có thể kết nối với máy ảo bằng người dùng "vagrant" với mật khẩu "vagrant" như sau.
ssh vagrant@localhost -p 2222Thư mục /vagrant
Vagrant cấu hình một thư mục dùng chung có tên "/vagrant", thư mục này có quyền truy cập vào thư mục chứa Vagrantfile trên máy chủ. Sau khi kết nối với máy ảo đang chạy, hãy liệt kê nội dung của thư mục "/vagrant".
[vagrant@localhost ~]$ ls /vagrant Vagrantfile [vagrant@localhost ~]$
Tạo một thư mục mới, thêm một tập lệnh vào thư mục đó và chạy nó.
[vagrant@localhost ~]$ mkdir /vagrant/scripts
[vagrant@localhost ~]$ echo "echo **** hello ****" > /vagrant/scripts/my_script.sh
[vagrant@localhost ~]$ sh /vagrant/scripts/my_script.sh
**** hello ****
[vagrant@localhost ~]$ ls /vagrant
scripts Vagrantfile
[vagrant@localhost ~]$ ls /vagrant/scripts
my_script.sh
[vagrant@localhost ~]$Không có gì ngạc nhiên khi bạn có thể thấy thư mục và tập tin này trên máy chủ. Chúng ta hoàn toàn có thể tạo chúng trực tiếp trên máy chủ và tham chiếu chúng từ bên trong máy ảo.
Chạy các tập lệnh xây dựng
Giờ chúng ta đã biết cách đặt các tệp vào thư mục chính và tham chiếu chúng từ bên trong máy ảo, điều này giúp việc tạo các tập lệnh xây dựng và khởi chạy chúng trong quá trình tạo máy ảo trở nên dễ dàng hơn nhiều. Chúng tôi đã thêm một phần cung cấp bổ sung ở cuối để chạy tập lệnh shell mà chúng ta đã tạo ở phần trước.
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = "bento/oracle-7.6"
config.vm.provider "virtualbox" do |vb|
vb.memory = 2048 # Memory size in M.
vb.cpus = 1 # Number of vCPUs
vb.name = "test1" # VM name.
# Tell VirtualBox this VM is running on an SSD.
vb.customize ['storageattach', :id, '--storagectl', 'SATA Controller', '--port', '0', '--nonrotational', 'on']
end
config.vm.provision "shell", inline: <<-SHELL
sh /vagrant/scripts/my_script.sh
SHELL
endThao tác này sẽ chạy tập lệnh khi máy ảo được tạo lần đầu tiên, hoặc nếu chúng ta tải lại máy ảo với tùy chọn "--provision".
vagrant reload --provisionNếu bạn làm như vậy, bạn sẽ thấy các thông báo sau ở cuối quá trình khởi động.
==> default: Running provisioner: shell...
default: Running: inline script
default: **** hello ****Trong trường hợp này, đó chỉ là một đoạn mã đơn giản, nhưng nó cũng có thể là một đoạn mã xây dựng để cấu hình máy ảo và cài đặt phần mềm từ kho lưu trữ Yum, hoặc được truy cập từ máy chủ thông qua thư mục "/vagrant".
Nếu bạn đang sử dụng máy chủ Windows, hãy nhớ rằng ký tự xuống dòng CRLF của Windows có thể gây nhầm lẫn cho các tập lệnh Bash, vì vậy hãy đảm bảo bạn sử dụng dos2unix để chuyển đổi chúng.
Các bước tiếp theo
Chúng ta mới chỉ khám phá một phần nhỏ của Vagrant thôi. Điều quan trọng nhất bây giờ là phải dùng thôi!
Tôi đã tạo ra một số bản dựng Vagrant cho cơ sở dữ liệu Oracle, RAC, Data Guard và ORDS cùng nhiều thứ khác. Bạn có thể tìm thấy chúng trên GitHub tại đây .
Những ví dụ này và các chú thích trong Vagrantfile sẽ cung cấp cho bạn một số ý tưởng về việc thêm những điều sau vào bản dựng của riêng bạn.
- Thiết lập chuyển tiếp cổng bổ sung.
- Các giao diện mạng bổ sung.
- Thêm ổ đĩa ảo.
- Thêm thư mục chia sẻ.
Đây là một ví dụ đơn giản về điều đó.
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Set some variables.
var_disk1_name = './test1_u01.vdi'
var_disk_size = 10
var_public_ip = '192.168.56.101'
Vagrant.configure("2") do |config|
config.vm.box = "bento/oracle-7.6"
config.vm.provider "virtualbox" do |vb|
vb.memory = 2048 # Memory size in M.
vb.cpus = 1 # Number of vCPUs
vb.name = "test1" # VM name.
# Map additional ports available.
config.vm.network "forwarded_port", guest: 1521, host: 1521
config.vm.network "forwarded_port", guest: 5500, host: 5500
# Add a new public network.
config.vm.network "private_network", ip: var_public_ip, virtualbox__intnet: "public"
# Add a new shared folder (host directory, internal mount point).
# Relative paths are relative to the Vagrantfile directory.
config.vm.synced_folder "../Downloads", "/vagrant_downloads"
# Tell VirtualBox this VM is running on an SSD.
vb.customize ['storageattach', :id, '--storagectl', 'SATA Controller', '--port', '0', '--nonrotational', var_non_rotational]
# Add disk if it's not already present.
unless File.exist?(var_disk1_name)
vb.customize ['createhd', '--filename', var_disk1_name, '--size', var_disk_size * 1024]
end
vb.customize ['storageattach', :id, '--storagectl', 'SATA Controller', '--port', 1, '--device', 0, '--type', 'hdd', '--nonrotational', var_non_rotational, '--medium', var_disk1_name]
end
config.vm.provision "shell", inline: <<-SHELL
sh /vagrant/scripts/my_script.sh
SHELL
endĐể biết thêm thông tin chi tiết, vui lòng xem:
- Tài liệu Vagrant
- Vagrant: Hướng dẫn dành cho người mới bắt đầu
- Tạo một Vagrant Base Box (VirtualBox)
Hi vọng điều này sẽ hữu ích
TƯ VẤN: Click Here hoặc Hotline/Zalo 090.29.12.888
=============================
Website không chứa bất kỳ quảng cáo nào, mọi đóng góp để duy trì phát triển cho website (donation) xin vui lòng gửi về STK 90.2142.8888 - Ngân hàng Vietcombank Thăng Long - TRAN VAN BINH
=============================
Nếu bạn không muốn bị AI thay thế và tiết kiệm 3-5 NĂM trên con đường trở thành DBA chuyên nghiệp hay làm chủ Database thì hãy đăng ký ngay KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE, được Coaching trực tiếp từ tôi với toàn bộ bí kíp thực chiến, thủ tục, quy trình của gần 20 năm kinh nghiệm (mà bạn sẽ KHÔNG THỂ tìm kiếm trên Internet/Google) từ đó giúp bạn dễ dàng quản trị mọi hệ thống Core tại Việt Nam và trên thế giới, đỗ OCP.
- CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
- Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
2 khóa học online qua video giúp bạn nhanh chóng có những kiến thức nền tảng về Linux, Oracle, học mọi nơi, chỉ cần có Internet/4G:
- Oracle cơ bản: https://bit.ly/admin_1200
- Linux: https://bit.ly/linux_1200
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội
=============================
cơ sở dữ liệu, cơ sở dữ liệu quốc gia, database, AI, trí tuệ nhân tạo, artificial intelligence, machine learning, deep learning, LLM, ChatGPT, DeepSeek, Grok, oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c/21c/23c/23ai, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, docker, k8s, micro service, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty