Главная страница
Навигация по странице:

  • /vm/server

  • Практика НИР. Практическая работа 1. Подготовка требований к качеству информационной системы 3 1 Основные определения 3 2 Цель практической работы 3


    Скачать 298.72 Kb.
    НазваниеПрактическая работа 1. Подготовка требований к качеству информационной системы 3 1 Основные определения 3 2 Цель практической работы 3
    АнкорПрактика НИР
    Дата15.07.2022
    Размер298.72 Kb.
    Формат файлаdocx
    Имя файлаPrakticheskie_raboty_1-6.docx
    ТипПрактическая работа
    #631229
    страница2 из 7
    1   2   3   4   5   6   7

    Практическая работа №2. Настройка виртуального окружения для постановки вычислительных экспериментов

    2.1 Необходимое программное обеспечение


    Для выполнения этой и последующих практических работ необходимо наличие следующего программного обеспечения:

    1. VirtualBox с установленным пакетом Oracle VM VirtualBox Extension Pack;

    2. Vagrant с установленными плагинами vagrant-winnfsd версии 1.4.0 или новее и vagrant-bindfs версии 1.1.8 или новее;

    3. Редактор кода (например VSCode, Atom, или аналог);

    4. Git, с наличием инструмента GitBash (для ОС Windows).

    2.2 Цель практической работы


    Цель настоящей практической работы – подготовить виртуальную инфраструктуру эксперимента с использованием систем конфигурирования Vagrant и Ansible.

    2.3 Задачи практической работы


    Для достижения поставленной цели необходимо решить следующие задачи:

    1. Подготовить виртуальную машину для серверного программного обеспечения.

    2. Подготовить виртуальную машину для клиентского программного обеспечения.

    3. Подключиться к виртуальным машинам и удостовериться в их соответствии заданным конфигурациям.

    2.4 Рекомендации по выполнению практической работы


    Создайте директорию (папку) для выполнения этой и последующих практических работ.

    Внутри созданной неё создайте директорию /vm. В этой директории будут размещены конфигурации виртуальных машин. В данном цикле практических занятий предполагается две виртуальные машины: клиент и сервер. В соответствии с этим создайте две поддиректории /vm/client и /vm/server соответственно.

    В директории /vm/server создайте файл с именем Vagrantfile и поместите в него следующее содержимое.

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

      use_nfs = ENV.has_key?('SRV_NFS') ? Integer(ENV['SRV_NFS']) : 1

      actimeo = ENV.has_key?('SRV_ACTIMEO') ? Integer(ENV['SRV_ACTIMEO']) : 1
      cpu_cap = ENV.has_key?('SRV_CPU_CAP') ? ENV['SRV_CPU_CAP'] : 100

      cpu_num = ENV.has_key?('SRV_CPU_NUM') ? ENV['SRV_CPU_NUM'] : 2

      mem_lim = ENV.has_key?('SRV_MEM_LIM') ? ENV['SRV_MEM_LIM'] : 2048
      config.vm.box = "ubuntu/focal64"

      config.vm.box_version = "20210125.0.1"

      config.vm.provider "virtualbox" do |v|

        v.customize ["modifyvm", :id, "--cpuexecutioncap", cpu_cap]

        v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/vagrant", "1"]

      end

      config.vm.hostname = "server.localhost"

      config.vm.network "private_network", ip: "192.168.84.123"

      config.vm.synced_folder ".", "/vagrant", disabled: true
      if use_nfs != 0

        config.vm.synced_folder "../../", "/var/nfs", :mount_options => [

          "actimeo=#{actimeo}"

        ], type: "nfs"

        config.bindfs.bind_folder "/var/nfs", "/vagrant"

      else

        config.vm.synced_folder "../../", "/vagrant", :mount_options => [

          "dmode=777","fmode=777"

        ], type: "virtualbox"

      end
      config.vm.provider "virtualbox" do |v|

        v.memory = mem_lim

        v.cpus = cpu_num

      end
      config.vm.provision :shell, inline: "apt update && apt install -qy ansible"

      config.vm.provision "ansible_local" do |ansible|

        ansible.playbook = "/vagrant/vm/server/provision/playbook.yml"

        ansible.install_mode = "default"

      end

    end

    Обратите внимание, что внутри созданного файла имеется обращение к другому файлу конфигурации, который должен быть расположен в директории /vm/server/provision. Создайте недостающую директорию и файл playbook.yml. Разместите в файле следующий код конфигурации:

    ---

    - hosts: all

      become: yes

      tasks:

        - name: Full system upgrade

          become: yes

          apt:

            update_cache: yes

            upgrade: yes

        - name: Install CLI apps and libraries

          apt:

            name:

              - build-essential

              - software-properties-common

              - git

              - make

              - htop

              - iotop

              - rsync

              - atop

            state: latest

        - name: Install nodejs

          apt:

            name:

              - nodejs

              - node-gyp

              - npm

            state: latest

        - name: Atop configuration

          template:

            src: ./config-templates/atop.j2

            dest: /etc/default/atop

            owner: root

            group: root

            mode: '0644'

        - name: Restart service Atop, in all cases

          service:

            name: atop

            state: restarted

    По аналогии, этот файл ссылается на другой файл (atop.j2) , который следует разместить в директории /vm/server/provision/config-templates. Создайте директорию и файл со следующим содержимым.

    LOGINTERVAL=1

    LOGPATH="/var/log/atop"

    OUTFILE="$LOGPATH/daily.log"



    С помощью Git Bash или иного терминала перейдите в директорию /vm/server и выполните следующую команду: vagrant up. Дождитесь, пока процесс конфигурации виртуальной машины завершится полностью. После, подключитесь к виртуальной машине с помощью команды: vagrant ssh.

    Проверьте версии установленного программного обеспечения используя команды node -v и npm -v. Также убедитесь в работоспособности системы мониторинга, введя команду atop.

    Проверьте и работу общей директории, использующийся для получения доступа к директории хост-системы в виртуальной машине. Она должна быть подключена к директории /vagrant. Для этого выполните внутри виртуальной машины следующую команду: ls -lah /vagrant.

    Чтобы выйти и остановить виртуальную машину, введите в терминале команду exit, которая закроет соединение с виртуальной машиной, после чего выполните команду vagrant halt, которая остановит виртуальную машину.

    Теперь, когда виртуальная машина для серверного ПО полностью работоспособна, можно перейти к созданию виртуальной машины для клиентского ПО. В директории /vm/client создайте файл с именем Vagrantfile и поместите в него следующее содержимое.

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

      use_nfs = ENV.has_key?('CLT_NFS') ? Integer(ENV['CLT_NFS']) : 1

      actimeo = ENV.has_key?('CLT_ACTIMEO') ? Integer(ENV['CLT_ACTIMEO']) : 1
      cpu_cap = ENV.has_key?('CLT_CPU_CAP') ? ENV['CLT_CPU_CAP'] : 100

      cpu_num = ENV.has_key?('CLT_CPU_NUM') ? ENV['CLT_CPU_NUM'] : 2

      mem_lim = ENV.has_key?('CLT_MEM_LIM') ? ENV['CLT_MEM_LIM'] : 2048
      config.vm.box = "ubuntu/focal64"

      config.vm.box_version = "20210125.0.1"
      config.vm.provider "virtualbox" do |v|

        v.customize ["modifyvm", :id, "--cpuexecutioncap", cpu_cap]

        v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/vagrant", "1"]

      end

      config.vm.hostname = "client.localhost"

      config.vm.network "private_network", ip: "192.168.84.121"

      config.vm.synced_folder ".", "/vagrant", disabled: true
      if use_nfs != 0

        config.vm.synced_folder "../../", "/var/nfs", :mount_options => [

          "actimeo=#{actimeo}"

        ], type: "nfs"

        config.bindfs.bind_folder "/var/nfs", "/vagrant"

      else

        config.vm.synced_folder "../../", "/vagrant", :mount_options => [

          "dmode=777","fmode=777"

        ], type: "virtualbox"

      end
      config.vm.provider "virtualbox" do |v|

        v.memory = mem_lim

        v.cpus = cpu_num

      end
      config.vm.provision :shell, inline: "apt update && apt install -qy ansible"

      config.vm.provision "ansible_local" do |ansible|

        ansible.playbook = "/vagrant/vm/client/provision/playbook.yml"

        ansible.install_mode = "default"

      end

    end

    Во многом настройки виртуальной машины для клиентского ПО повторяют те, что использовались для другой виртуальной машины. По аналогии, создайте директорию /vm/client/provision и файл playbook.yml следующего содержания.

    ---

    - hosts: all

      become: yes

      tasks:

        - name: Full system upgrade

          become: yes

          apt:

            update_cache: yes

            upgrade: yes

        - name: Install CLI apps and libraries

          apt:

            name:

              - build-essential

              - software-properties-common

              - git

              - make

              - htop

              - iotop

              - rsync

            state: latest

        - name: Install nodejs

          apt:

            name:

              - nodejs

              - node-gyp

              - npm

            state: latest

    С помощью Git Bash или иного терминала перейдите в директорию /vm/client и выполните следующую команду: vagrant up. Дождитесь, пока процесс конфигурации виртуальной машины завершится полностью. После, подключитесь к виртуальной машине с помощью команды: vagrant ssh.

    Проверьте версии установленного программного обеспечения используя команды node -v и npm -v. Проверять работоспособность системы мониторинга не требуется, так как она используется только для серверного программного обеспечения.

    Проверьте работу общей директории. Она должна также быть подключена к директории /vagrant. Для этого выполните внутри виртуальной машины следующую команду: ls -lah /vagrant.

    Чтобы выйти и остановить виртуальную машину, введите в терминале команду exit, которая закроет соединение с виртуальной машиной, после чего выполните команду vagrant halt, которая остановит виртуальную машину.

    В результате настоящей практической работы должно быть сформировано дерево файлов, представленное на рисунке Рисунок 1



    Рисунок 1 – Структура файлов и директорий
    1   2   3   4   5   6   7


    написать администратору сайта