vagrant的使用

vagrant工具就是使用本地的虚拟化软件(virtual box-推荐, vmware),根据vagrant file的配置来创建一个或者多个虚拟机,并可以对创建的虚拟机进行配置。

下载:Install | Vagrant | HashiCorp Developer

 vagrant 镜像地址: Discover Vagrant Boxes - Vagrant Cloud (vagrantup.com)

常用命令:

1. 使用 vagrant up (vm name) 命令就可以创建或启动(指定名字的)虚拟机。

2. 使用 vagrant halt (vm name)命令就可以对(指定名字的)虚拟机进行关机。

3. 使用 vagrant destroy (vm name) 命令就可以删除(指定名字的)虚拟机。

4. 使用 vagrant ssh (vm name) 命令就可以ssh登录到指定名字的虚拟机。

使用vagrant创建2台虚拟机,并设置互相免密。node1虚拟机安装docker, docker-compose, python2等。

vagrantfile:

# -*- mode: ruby -*-
# vi: set ft=ruby :


Vagrant.configure("2") do |config|

  ###创建第一个虚拟机
  config.vm.define "node1" do |node1|
      node1.vm.box = "debian/bullseye64"
      node1.vm.box_check_update = false
      node1.vm.boot_timeout = 600
      node1.vm.hostname = "node1"
      node1.vm.network "private_network", ip: "192.168.99.101"
      node1.vm.synced_folder ".", "/vagrant"
      node1.vm.provider "virtualbox" do |v|
        v.name = "node1"
        v.gui = false
        v.memory = "2048"
      end
      
      node1.vm.provision "shell", inline: <<-SHELL
        sed -i 's/#\s*alias ll=/alias ll=/g' /home/vagrant/.bashrc
        sudo sed -i 's/#\s*alias ll=/alias ll=/g' /root/.bashrc
        sudo sed -i 's/set mouse=a/set mouse-=a/g' /usr/share/vim/vim82/defaults.vim
        sudo sed -i 's/^\*\.emerg/#*.emerg/g' /etc/rsyslog.conf
        sudo systemctl restart rsyslog
        sudo sed -i 's/PasswordAuthentication.*/PasswordAuthentication yes/g' /etc/ssh/sshd_config
        sudo sed -i 's/#\s*PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config
        echo "    UserKnownHostsFile /dev/null" |sudo tee -a /etc/ssh/ssh_config
        echo "    StrictHostKeyChecking no" |sudo tee -a /etc/ssh/ssh_config
        sudo systemctl restart sshd
        echo 'y' | ssh-keygen -t rsa -f /home/vagrant/.ssh/id_rsa -N ''
        sudo chmod 400 /home/vagrant/.ssh/id_rsa*
        sudo chown vagrant:vagrant /home/vagrant/.ssh/id_rsa*
        cat /home/vagrant/.ssh/id_rsa.pub >> /home/vagrant/.ssh/authorized_keys
        echo "192.168.99.101 node1" >> /etc/hosts
        echo "192.168.99.102 node2" >> /etc/hosts
        cp /home/vagrant/.ssh/id_rsa* /vagrant/
        sudo apt-get update
        sudo apt-get upgrade -y
        sudo apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common net-tools vim python2 lrzsz unzip
        #sudo wget https://bootstrap.pypa.io/get-pip.py  #for python3, 可以使用 python3-pip 模块替代
        cd /usr/bin/ && sudo wget https://bootstrap.pypa.io/pip/2.7/get-pip.py #for python2
        sudo python2 get-pip.py
        pip install xlrd==1.2.0 PYYAML
        
        curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
        echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
        sudo apt-get update
        sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose
        sudo usermod -aG docker vagrant
        
        echo ">>Finished...."
       
      SHELL
  end
  
  ###创建第二个虚拟机
  config.vm.define "node2" do |node2|
     node2.vm.box = "debian/bullseye64"
     node2.vm.box_check_update = false
     node2.vm.boot_timeout = 600
     node2.vm.hostname = "node2"
     node2.vm.network "private_network", ip: "192.168.99.102"
     node2.vm.synced_folder ".", "/vagrant"
     node2.vm.provider "virtualbox" do |vb|
       vb.name = "node2"
       vb.gui = false
       vb.memory = "2048"
     end
     
     node2.vm.provision "shell", inline: <<-SHELL
       sed -i 's/#\s*alias ll=/alias ll=/g' /home/vagrant/.bashrc 
       sudo sed -i 's/#\s*alias ll=/alias ll=/g' /root/.bashrc 
       sudo sed -i 's/set mouse=a/set mouse-=a/g' /usr/share/vim/vim82/defaults.vim
       sudo sed -i 's/^\*\.emerg/#*.emerg/g' /etc/rsyslog.conf
       sudo systemctl restart rsyslog
       sudo sed -i 's/PasswordAuthentication.*/PasswordAuthentication yes/g' /etc/ssh/sshd_config
       sudo sed -i 's/#\s*PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config
       echo "    UserKnownHostsFile /dev/null" |sudo tee -a /etc/ssh/ssh_config
       echo "    StrictHostKeyChecking no" |sudo tee -a /etc/ssh/ssh_config
       sudo systemctl restart sshd 
       cp /vagrant/id_rsa* /home/vagrant/.ssh/
       rm -f /vagrant/id_rsa*
       sudo chmod 400 /home/vagrant/.ssh/id_rsa*
       sudo chown vagrant:vagrant /home/vagrant/.ssh/id_rsa*
       cat /home/vagrant/.ssh/id_rsa.pub >> /home/vagrant/.ssh/authorized_keys
       echo "192.168.99.101 node1" >> /etc/hosts
       echo "192.168.99.102 node2" >> /etc/hosts
       
     SHELL
  end
end
 

 基于vagrant 也可以使用docker-compose安装zabbix, 只需要提供docker-compose.yaml文件即可。

下面提供zabbix 的docker-compose文件:

1. zabbix 4.0的docker-compose.yaml文件:

version: "3"
services: 
  zabbix-server:
    image: "zabbix/zabbix-server-mysql:centos-4.0.4"
    container_name: "zabbix-server"
    restart: "always"
    environment: 
      - "DB_SERVER_HOST=mariadb"
      - "MYSQL_USER=root"
      - "MYSQL_PASSWORD=zabbix"
      - "MYSQL_DATABASE=zabbix"
    volumes: 
      - "zabbix-server-data:/var/lib/zabbix/"
      - "zabbix-server-scripts:/usr/lib/zabbix/"
    depends_on: 
      - "mariadb"
    ports: 
      - "10051:10051"
      #- "10052:10051"
    extra_hosts:
      - "mysql.bboysoul.com:10.10.10.200"


  zabbix-web:
    image: "zabbix/zabbix-web-nginx-mysql:centos-4.0.4"
    container_name: "zabbix-web"
    restart: "always"
    environment: 
      - "DB_SERVER_HOST=mariadb"
      - "MYSQL_USER=root"
      - "MYSQL_PASSWORD=zabbix"
      - "ZBX_SERVER_HOST=zabbix-server"
      - "PHP_TZ=Asia/Shanghai"
      #- "ZBX_SERVER_PORT="
      #- "DB_SERVER_PORT="
      - "MYSQL_DATABASE=zabbix"
      #- "ZBX_SERVER_NAME="
    depends_on: 
      - "zabbix-server"
      - "mariadb"
    ports: 
      - "8082:80"
    #extra_hosts:
    #  - "mysql.bboysoul.com:10.10.10.200"
    
  mariadb:
    image: "mariadb:10.2.22"
    container_name: "mariadb"
    restart: "always"
    environment: 
      - "MYSQL_ROOT_PASSWORD=zabbix"
      - "MYSQL_DATABASE=zabbix"
      #- "MYSQL_USER="
      #- "MYSQL_PASSWORD="
      #- "MYSQL_ALLOW_EMPTY_PASSWORD="
      #- "MYSQL_RANDOM_ROOT_PASSWORD="
    #ports: 
    #  - "3306:3306"
    command: 
      --character-set-server=utf8
      --collation-server=utf8_bin
    volumes: 
      - "mariadb-data:/var/lib/mysql/"


volumes: 
  zabbix-server-data:
  mariadb-data:
  zabbix-server-scripts:
 

GUI访问zabbix地址: http://虚拟机的ip:8082/

2. zabbix 6.0的docker-compose.yaml文件:

version: '3'

services:
  zabbix-server:
    image: zabbix/zabbix-server-mysql:6.0-centos-latest
    container_name: zabbix-server
    restart: always
    ports:
      - 10051:10051
    environment:
      DB_SERVER_HOST: db
      MYSQL_DATABASE: zabbix
      MYSQL_USER: root
      MYSQL_PASSWORD: zabbix
    volumes: 
      - "zabbix-server-data:/var/lib/zabbix/"
      - "zabbix-server-scripts:/usr/lib/zabbix/"
    depends_on:
      - db
    extra_hosts:
      - "mysql.bboysoul.com:10.10.10.200"

  zabbix-web:
    image: zabbix/zabbix-web-nginx-mysql:6.0-centos-latest
    container_name: zabbix-web
    restart: always
    ports:
      - "80:8080"
      
    environment:
      DB_SERVER_HOST: db
      MYSQL_DATABASE: zabbix
      MYSQL_USER: root
      MYSQL_PASSWORD: zabbix
      ZBX_SERVER_NAME: zabbix-server
      PHP_TZ: Asia/Shanghai
    depends_on:
      - zabbix-server
      - db


  db:
    image: mariadb:10.6.5
    container_name: zabbix-db
    restart: always
    environment:
      MYSQL_DATABASE: zabbix
      MYSQL_USER: root
      MYSQL_PASSWORD: zabbix
      MYSQL_ROOT_PASSWORD: zabbix
    volumes:
      - mariadb-data:/var/lib/mysql
   
    command: 
      --character-set-server=utf8
      --collation-server=utf8_bin

volumes: 
  zabbix-server-data:
  mariadb-data:
  zabbix-server-scripts:
  
  
 

另外一个版本:

version: '3.7'
services:
  mysql-server:
    image: mysql:8.0.31
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: zabbix
      MYSQL_DATABASE: zabbix
    command:
      --character-set-server=utf8mb4
      --collation_server=utf8mb4_bin
      --default-authentication-plugin=mysql_native_password
    volumes:
      - "/etc/localtime:/etc/localtime"
      - "/zabbix6.0/mysql:/var/lib/mysql"
    security_opt:
      - seccomp:unconfined
    ports:
      - "3306:3306"
    networks:
      - zbx_net
    restart: always

  zabbix-server:
    image: zabbix/zabbix-server-mysql:6.0-centos-latest
    environment:
      DB_SERVER_HOST: mysql-server
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: zabbix
    ports:
      - "10051:10051"
    depends_on:
      - "mysql-server"
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
      - "zabbix:/var/lib/zabbix"
    networks:
      - zbx_net
    restart: always

  zabbix-web:
    image: zabbix/zabbix-web-nginx-mysql:6.0-centos-latest
    volumes:
      #- ./simsun.ttc:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf
      - /etc/localtime:/etc/localtime
    environment:
      DB_SERVER_HOST: mysql-server
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: zabbix
      PHP_TZ: Asia/Shanghai
      ZBX_SERVER_HOST: zabbix-server
    ports:
      - 8088:8080
    depends_on:
      - mysql-server
      - zabbix-server
    networks:
      - zbx_net
    restart: always

networks:
  zbx_net:
volumes:
  zabbix:
  
  
# 安装完后,mysql-server 应该会一直restart, 此时docker logs 查看报错annot use database "zabbix": its "users" table is empty (is this the Zabbix proxy database?), GUI上报错Unable to select configuration

#mysql -uroot -p 

#>drop database zabbix;
#
# >create database zabbix character set utf8 collate utf8_bin;
#
# > grant all privileges on zabbix.* to 'zabbix'@'%' ;
#
# > flush privileges;
#root@node2:~# find / -name create.sql.gz
#cp /var/lib/docker/overlay2/37b310eac2ee5e6fb4bc706bf133f74d3e587dfd11c4440420e3ec2e90defd1d/diff/usr/share/doc/zabbix-server-mysql/create.sql.gz zabbix60_mysql-server_1:/tmp

#进入容器,解压gz
# gunzip /tmp/create.sql.gz
#进入mysql数据库,导入初始化数据
#use zabbix;
#> source /tmp/create.sql;

GUI访问zabbix地址: http://虚拟机的ip:8088/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值