vagrant基础
Chapter 1 - vagrant简介
- vagrant 官网:https://www.vagrantup.com/
- vagrant 官方文档: https://www.vagrantup.com/docs
- vagrant image box:https://app.vagrantup.com/boxes/search
vagrant基本概念
vagrant可方便地管理各种类型的虚拟机,包括virtualbox、hyper-v、docker、vmware、kvm。它是vmware/virtualbox/hyperv等虚拟化管理工具的上层集成式管理工具、虚拟机自动化配置工具、虚拟机批量管理工具。支持Windows、MAC以及Linux。
vagrant管理虚拟机常用子命令功能介绍
vagrant的子命令不少,可使用vagrant -h列出vagrant默认支持的子命令,使用vagrant list-commands查看vagrant支持的所有子命令(包括因安装插件而增加的子命令)。
这里只是简单概括常用子命令的功能。
子命令 | 功能说明 |
---|---|
box | 管理box镜像(box是创建虚拟机的模板) |
init | 初始化项目目录,将在当前目录下生成Vagrantfile文件 |
up | 启动虚拟机,第一次执行将创建并初始化并启动虚拟机 |
reload | 重启虚拟机 |
halt | 将虚拟机关机 |
destroy | 删除虚拟机(包括虚拟机文件) |
suspend | 暂停(休眠、挂起)虚拟机 |
resume | 恢复已暂停(休眠、挂起)的虚拟机 |
snapshot | 管理虚拟机快照(hyperv中叫检查点) |
status | 列出当前目录(Vagrantfile所在目录)下安装的虚拟机列表及它们的状态 |
global-status | 列出全局已安装虚拟机列表及它们的状态 |
ssh | 通过ssh连接虚拟机 |
ssh-config | 输出ssh连接虚拟机时使用的配置项 |
port | 查看各虚拟机映射的端口列表(hyperv不支持该功能) |
- vagrant box
- vagrant box list
- vagrant box add [options] <name, url, or path>
- vagrant box add generic/centos8 --provider=docker
- [virtualbox/libvirt/docker...]
- vagrant init [options] [name [url]]
- vagrant up [options] [name|id]
- vagrant destroy [options] [name|id]
- vagrant status [name|id]
- vagrant global-status
- vagrant ssh [options] [name|id] [-- extra ssh args]
- vagrant ssh-config [options] [name|id]
Chapter 2 - 安装vagrant
安装vagrant
要安装Vagrant,请先找到适合您系统的软件包并下载。Vagrant被打包为特定于操作的程序包。运行系统的安装程序。安装程序将自动添加 vagrant到您的系统路径,以便在终端中可用。
wget wget https://releases.hashicorp.com/vagrant/2.2.14/vagrant_2.2.14_x86_64.deb
dpkg -i vagrant_2.2.14_x86_64.deb
安装libvirt插件
# 需要安装 libvirt 开发包
sudo apt install libvirt-dev
vagrant plugin install vagrant-libvirt --plugin-clean-sources --plugin-source https://gems.ruby-china.com/
设置VAGRANT_HOME
vagrant在执行子命令box add、init、up等命令时,都可能会去下载所需的虚拟机镜像文件,即Box image。
这些镜像文件默认放在~/.vagrant.d目录(Linux)
echo 'export VAGRANT_HOME="/data/.vagrant.d"' >>~/.bashrc
命令自动补全
vagrant autocomplete
source ~/.bashrc
一些常用的插件
vagrant-hostmanager - 各个虚拟机之间,及虚拟机与host之间互信认证
vagrant-rsync-back - guest虚拟机数据同步回主机
Chapter 3 - 使用vagrant创建虚拟机示例
使用vagrant创建虚拟机centos 8示例
Download CentOS 8 Vagrant box
使用下面的命令下载适合自己虚拟环境的Vagrant box
# kvm 虚拟机
vagrant box add centos/8 --provider=libvirt
# virtualbox
vagrant box add centos/8 --provider=virtualbox
# VMware
vagrant box add generic/centos8 --provider=vmware_desktop
由于外网访问慢,可以下载后再添加
wget https://cloud.centos.org/centos/8/vagrant/x86_64/images/CentOS-8-Vagrant-8.3.2011-20201204.2.x86_64.vagrant-libvirt.box
vagrant box add centos/8 ./CentOS-8-Vagrant-8.3.2011-20201204.2.x86_64.vagrant-libvirt.box
Create Vagrantfile for CentOS 8
创建Vagrantfile
$ mkdir -p ~/vagrant/centos8 && cd ~/vagrant/centos8
$ vim Vagrantfile
- kvm
# -*- mode: ruby -*-
# vi: set ft=ruby :
ENV['VAGRANT_DEFAULT_PROVIDER'] = 'libvirt'
Vagrant.configure("2") do |config|
##### DEFINE VMS #####
config.vm.define "centos8" do |config|
config.vm.hostname = "centos8"
config.vm.box = "centos/8"
config.vm.box_check_update = false
end
config.vm.provider :libvirt do |v|
v.memory = 1024
v.cpus = 2
end
end
- virtualbox
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = "centos/8"
config.vm.box_check_update = false
config.vm.hostname = "centos8"
config.vm.provider "virtualbox" do |vb|
# Display the VirtualBox GUI when booting the machine
vb.gui = false
vb.memory = "2048"
vb.cpus = 2
end
end
创建好 Vagrantfile,启动vm
vagrant up
测试ssh
vagrant ssh
Chapter 4 - 批量创建虚拟机示例
创建虚拟机集群
编写Vagrantfile配置文件
Vagrant.configure("2") do |config|
config.vm.define "master" do |master|
end
config.vm.define "node-1" do |node_1|
end
config.vm.define "node-2" do |node_2|
end
config.vm.define "docker-register" do |docker-register|
end
end
最终结果
Vagrant.configure("2") do |config|
#####################################################################
# 全局配置
#####################################################################
config.vm.box = "centos/8"
config.vm.network "public_network", bridge: "eth0"
#===================================================================#
# 互信认证
#===================================================================#
# 激活hostmanager插件
config.hostmanager.enabled = true
# 在宿主机上的hosts文件中添加虚拟机的主机名解析信息
config.hostmanager.manage_host = true
# 在各自虚拟机中添加各虚拟机的主机名解析信息
config.hostmanager.manage_guest = true
# 不忽略私有网络的地址
config.hostmanager.ignore_private_ip = false
#===================================================================#
# libvirt相关配置
config.vm.provider "libvirt" do |v|
# 设置虚拟机的内存大小
v.memory = 2048
# 设置虚拟机的CPU个数
v.cpus = 1
end
# 使用shell脚本进行软件安装和配置
config.vm.provision "shell", inline: <<-SHELL
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
sed -in 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
systemctl restart sshd
SHELL
#####################################################################
#####################################################################
# 局部配置
#####################################################################
config.vm.define "master" do |master|
# 设置虚拟机的主机名
master.vm.hostname="k8s-master"
# 设置虚拟机的IP 192.168.121.*/24
master.vm.network "private_network", ip: "192.168.121.11"
# 使用shell脚本进行软件安装和配置
master.vm.provision "shell", inline: <<-SHELL
yum -y install docker
SHELL
end
#####################################################################
config.vm.define "node-1" do |node_1|
node_1.vm.hostname="k8s-node-01"
node_1.vm.network "private_network", ip: "192.168.121.12"
end
config.vm.define "node-2" do |node_2|
node_2.vm.hostname="k8s-node-02"
node_2.vm.network "private_network", ip: "192.168.121.13"
end
config.vm.define "docker-register" do |register|
register.vm.hostname="k8s-docker-register"
register.vm.network "private_network", ip: "192.168.121.14"
end
end
Chapter 5 - 如何制作vagrant image box
-
通过ks自动化安装虚拟机 https://git.centos.org/centos/kickstarts/blob/master/f/CentOS-8-Stream-x86_64-Vagrant.ks
-
使用脚本 create_box.sh qcow2 打包为box https://github.com/vagrant-libvirt/vagrant-libvirt/blob/master/tools/create_box.sh
maven基础
rust学习
参考文档
目录结构
快速入门-环境搭建
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Cheat Sheet
httpd 相关
添加登录认证
- 参考链接: https://blog.51cto.com/llk726/121365
-
第一步:修改httpd配置
修改Apache的配置文件/etc/httpd/conf/httpd.conf,对需要认证的资源所在的目录进行配置。具体配置如下:
vim /etc/httpd/conf/httpd.conf <Directory "/var/www/html"> Options Indexes FollowSymLinks Allowoverride AuthConfig Order allow,deny Allow from all </Directory>
其中,Allowoverride AuthConfig /var/www/html目录下的内容进行用户认证
-
第二步: 在限制访问目录/var/www/html下创建文件.htaccess,其内容如下:
vim /var/www/html/.htaccess AuthName " my share web" AuthType Basic AuthUserFile /var/www/html/.htpasswd require valid-user #AuthName 描述,随便写 #AuthUserFile /var/www/html/.htpasswd
密码文件推荐使用.htpasswd,因为apache默认系统对“.ht”开头的文件默认不允许外部读取,安全系数会高一点哦。 说明:文件.htaccess中常用的配置命令有以下几个:
- AuthName命令:指定认证区域名称。区域名称是在提示要求认证的对话框中显示给用户的
- AuthType命令:指定认证类型。在HTTP1.0中,只有一种认证类型:basic。在HTTP1.1中有几种认证类型,如:MD5。
- AuthUserFile命令:指定一个包含用户名和密码的文本文件,每行一对。
- AuthGroupFile命令:指定包含用户组清单和这些组的成员清单的文本文件。组的成员之间用空格分开,如: managers:user1 user2
- require命令:指定哪些用户或组才能被授权访问。如:
- require user user1 user2(只有用户user1和user2可以访问)
- requiresgroupsmanagers (只有组managers中成员可以访问)
- require valid-user (在AuthUserFile指定的文件中任何用户都可以访问)
-
第三步: 创建httpd的验证用户
第一次添加用户时.htpasswdt文件不存在,需要用-c选项创建文件
htpasswd -bc /var/www/html/.htpasswd dev dev htpasswd -b /var/www/html/.htpasswd test test
-
第四步:重启httpd
systemctl restart httpd
curl -u username:password [url] wget --http-user=username --http-passwd=password [url]