Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Compute Cloud
  • Yandex Container Solution
    • Все руководства
    • Настройка синхронизации часов с помощью NTP
    • Автомасштабирование группы ВМ для обработки сообщений из очереди
    • Обновление группы ВМ под нагрузкой
    • Развертывание Remote Desktop Gateway
    • Начало работы с Packer
    • Передача логов с ВМ в Yandex Cloud Logging
    • Сборка образа ВМ с набором инфраструктурных инструментов с помощью Packer
    • Миграция в Yandex Cloud с помощью Хайстекс Акура
    • Защита от сбоев с помощью Хайстекс Акура
    • Резервное копирование ВМ с помощью Хайстекс Акура
    • Развертывание отказоустойчивой архитектуры с прерываемыми ВМ
    • Настройка отказоустойчивой архитектуры в Yandex Cloud
    • Создание триггера для бюджетов, который вызывает функцию для остановки ВМ
    • Создание триггеров, которые вызывают функции для остановки ВМ и отправки уведомлений в Telegram
    • Создание веб-приложения на Python с использованием фреймворка Flask
    • Создание SAP-программы в Yandex Cloud
    • Развертывание сервера Minecraft в Yandex Cloud
    • Автоматизация сборки образов с помощью Jenkins и Packer
    • Создание тестовых виртуальных машин через GitLab CI
    • Высокопроизводительные вычисления (HPC) на прерываемых ВМ
      • Обзор
      • Консоль управления
      • Terraform
    • Настройка SFTP-сервера на Centos 7
    • Развертывание параллельной файловой системы GlusterFS в высокодоступном режиме
    • Развертывание параллельной файловой системы GlusterFS в высокопроизводительном режиме
    • Резервное копирование в Object Storage с помощью Bacula
    • Построение пайплайна CI/CD в GitLab с использованием serverless-продуктов
    • Реализация защищенной высокодоступной сетевой инфраструктуры с выделением DMZ на основе Check Point NGFW
    • Сегментация облачной инфраструктуры с помощью решения Check Point Next-Generation Firewall
    • Настройка защищенного туннеля GRE поверх IPsec
    • Создание бастионного хоста
    • Реализация отказоустойчивых сценариев для сетевых виртуальных машин
    • Создание туннеля между двумя подсетями при помощи OpenVPN Access Server
    • Создание внешней таблицы на базе таблицы из бакета Object Storage с помощью конфигурационного файла
    • Настройка сетевой связности между подсетями BareMetal и Virtual Private Cloud
    • Работа со снапшотами в Managed Service for Kubernetes
    • Запуск языковой модели DeepSeek-R1 в кластере GPU
    • Запуск библиотеки vLLM с языковой моделью Gemma 3 на ВМ с GPU
    • Доставка USB-устройств на виртуальную машину или сервер BareMetal
  • Управление доступом
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Обучающие курсы

В этой статье:

  • Перед началом работы
  • Необходимые платные ресурсы
  • Создайте инфраструктуру
  • Настройте Samba и NFS
  • Протестируйте работу файлового сервера
  • Как удалить созданные ресурсы
  1. Практические руководства
  2. Однонодовый файловый сервер
  3. Terraform

Однонодовый файловый сервер с помощью Terraform

Статья создана
Yandex Cloud
Улучшена
kvendingoldo
Обновлена 6 марта 2025 г.
  • Перед началом работы
    • Необходимые платные ресурсы
  • Создайте инфраструктуру
  • Настройте Samba и NFS
  • Протестируйте работу файлового сервера
  • Как удалить созданные ресурсы

Чтобы создать инфраструктуру для однонодового файлового сервера c помощью Terraform:

  1. Подготовьте облако к работе.
  2. Создайте инфраструктуру.
  3. Настройте Samba и NFS.
  4. Протестируйте работу файлового сервера.

Если созданные ресурсы вам больше не нужны, удалите их.

Перед началом работыПеред началом работы

Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
  2. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.

Подробнее об облаках и каталогах.

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость поддержки однонодового файлового сервера входит:

  • плата за постоянно запущенную ВМ (см. тарифы Yandex Compute Cloud);
  • плата за использование динамического или статического публичного IP-адреса (см. тарифы Yandex Virtual Private Cloud);
  • плата за исходящий трафик (см. тарифы Yandex Virtual Private Cloud).

Создайте инфраструктуруСоздайте инфраструктуру

Terraform позволяет быстро создать облачную инфраструктуру в Yandex Cloud и управлять ею с помощью файлов конфигураций. В файлах конфигураций хранится описание инфраструктуры на языке HCL (HashiCorp Configuration Language). При изменении файлов конфигураций Terraform автоматически определяет, какая часть вашей конфигурации уже развернута, что следует добавить или удалить.

Terraform распространяется под лицензией Business Source License, а провайдер Yandex Cloud для Terraform — под лицензией MPL-2.0.

Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform или в зеркале.

Для создания инфраструктуры с помощью Terraform:

  1. Установите Terraform, получите данные для аутентификации и укажите источник для установки провайдера Yandex Cloud (раздел Настройте провайдер, шаг 1).

  2. Подготовьте файлы с описанием инфраструктуры:

    Готовый архив
    Вручную
    1. Создайте папку для файлов.
    2. Скачайте архив (1 КБ).
    3. Разархивируйте архив в папку. В результате в ней должны появиться конфигурационный файл single-node-file-server.tf.
    1. Создайте папку для файлов.

    2. Создайте в папке конфигурационный файл single-node-file-server.tf:

      single-node-file-server.tf
      terraform {
        required_providers {
          yandex = {
            source  = "yandex-cloud/yandex"
            version = ">= 0.47.0"
          }
        }
      }
      
      provider "yandex" {
        zone = "ru-central1-a"
      }
      
      resource "yandex_vpc_network" "network-1" {
        name = "network1"
      }
      
      resource "yandex_vpc_subnet" "subnet-1" {
        name           = "subnet1"
        zone           = "ru-central1-a"
        network_id     = yandex_vpc_network.network-1.id
        v4_cidr_blocks = ["192.168.1.0/24"]
      }
      
      resource "yandex_vpc_security_group" "fileserver-tutorial-sg" {
        name       = "fileserver-tutorial-sg"
        network_id = yandex_vpc_network.network-1.id
      
        egress {
          protocol       = "ANY"
          description    = "any"
          v4_cidr_blocks = ["0.0.0.0/0"]
        }
      
        ingress {
          protocol       = "TCP"
          description    = "ext-http"
          v4_cidr_blocks = ["0.0.0.0/0"]
          port           = 80
        }
      
        ingress {
          protocol       = "TCP"
          description    = "ext-ssh"
          v4_cidr_blocks = ["0.0.0.0/0"]
          port           = 22
        }
      
        ingress {
          protocol       = "TCP"
          description    = "ext-https"
          v4_cidr_blocks = ["0.0.0.0/0"]
          port           = 443
        }
      
        ingress {
          protocol       = "TCP"
          description    = "ext-msql"
          v4_cidr_blocks = ["0.0.0.0/0"]
          port           = 3306
        }
      
        ingress {
          protocol       = "TCP"
          description    = "nfs"
          v4_cidr_blocks = ["0.0.0.0/0"]
          port           = 2049
        }
      }
      
      resource "yandex_compute_image" "ubuntu-1804-lts" {
        source_family = "ubuntu-1804-lts"
      }
      
      resource "yandex_compute_disk" "boot-disk-ubuntu" {
        name     = "fileserver-tutorial-disk"
        type     = "network-ssd"
        zone     = "ru-central1-a"
        size     = "100"
        image_id = yandex_compute_image.ubuntu-1804-lts.id
      }
      
      resource "yandex_compute_instance" "fileserver-tutorial" {
        name        = "fileserver-tutorial"
        platform_id = "standard-v3"
        zone        = "ru-central1-a"
      
        resources {
          core_fraction = 100
          cores         = 8
          memory        = 56
        }
      
        boot_disk {
          disk_id = yandex_compute_disk.boot-disk-ubuntu.id
        }
      
        network_interface {
          subnet_id          = yandex_vpc_subnet.subnet-1.id
          security_group_ids = [yandex_vpc_security_group.fileserver-tutorial-sg.id]
          nat                = true
        }
      
        metadata = {
          user-data = "#cloud-config\nusers:\n  - name: <имя_пользователя>\n    groups: sudo\n    shell: /bin/bash\n    sudo: 'ALL=(ALL) NOPASSWD:ALL'\n    ssh_authorized_keys:\n      - ${file("<путь_к_открытому_SSH-ключу>")}"
        }
      }
      

    Более подробную информацию о параметрах используемых ресурсов в Terraform см. в документации провайдера:

    • Сеть — yandex_vpc_network.
    • Подсети — yandex_vpc_subnet.
    • Группы безопасности — yandex_vpc_security_group.
    • Образ ВМ — yandex_compute_image.
    • Диск — yandex_compute_disk.
    • Виртуальная машина — yandex_compute_instance.
  3. В блоке metadata укажите имя пользователя и содержимое SSH-ключа. Подробнее см. в разделе Метаданные виртуальной машины.

  4. Создайте ресурсы:

    1. В терминале перейдите в папку, где вы отредактировали конфигурационный файл.

    2. Проверьте корректность конфигурационного файла с помощью команды:

      terraform validate
      

      Если конфигурация является корректной, появится сообщение:

      Success! The configuration is valid.
      
    3. Выполните команду:

      terraform plan
      

      В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.

    4. Примените изменения конфигурации:

      terraform apply
      
    5. Подтвердите изменения: введите в терминале слово yes и нажмите Enter.

После создания инфраструктуры, настройте Samba и NFS.

Настройте Samba и NFSНастройте Samba и NFS

После того как виртуальная машина fileserver-tutorial перейдет в статус RUNNING, выполните:

  1. В блоке Сеть на странице виртуальной машины в консоли управления найдите публичный IP-адрес виртуальной машины.

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

    Рекомендуемый способ аутентификации при подключении по SSH — с помощью пары ключей. Не забудьте настроить использование созданной пары ключей: закрытый ключ должен соответствовать открытому ключу, переданному на виртуальную машину.

  3. Настройте Samba и NFS:

    Ubuntu
    1. Скачайте и установите Samba:

      sudo apt-get update
      sudo apt-get install nfs-kernel-server samba
      
    2. Подготовьте и смонтируйте файловую систему на диске:

      sudo mkfs -t ext4 -L data /dev/vdb
      
    3. Подготовьте и смонтируйте папку my_folder для хранения данных на диске:

      sudo mkdir /my_folder
      echo "LABEL=data /my_folder ext4 defaults 0 0" | sudo tee -a /etc/fstab
      sudo mount /my_folder
      
    4. Задайте конфигурацию NFS в файле /etc/exports. Вы можете отредактировать файл с помощью утилиты nano:

      sudo nano /etc/exports
      

      Добавьте в файл следующие строки:

      /my_folder <IP-адрес>(rw,no_subtree_check,fsid=100)
      /my_folder 127.0.0.1(rw,no_subtree_check,fsid=100)
      

      Где <IP-адрес> – IP-адрес компьютера, к которому вы будете подключать по NFS сетевой диск с данными.

    5. Задайте конфигурацию Samba в файле /etc/samba/smb.conf. Вы можете отредактировать файл с помощью утилиты nano:

      sudo nano /etc/samba/smb.conf
      

      Приведите файл к виду:

      [global]
         workgroup = WORKGROUP
         server string = %h server (Samba)
         dns proxy = no
         log file = /var/log/samba/log.%m
         max log size = 1000
         syslog = 0
         panic action = /usr/share/samba/panic-action %d
         server role = standalone server
         passdb backend = tdbsam
         obey pam restrictions = yes
         unix password sync = yes
         passwd program = /usr/bin/passwd %u
         passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
         pam password change = yes
         map to guest = bad user
         usershare allow guests = yes
      [printers]
         comment = All Printers
         browseable = no
         path = /var/spool/samba
         printable = yes
         guest ok = no
         read only = yes
         create mask = 0700
      [print$]
         comment = Printer Drivers
         path = /var/lib/samba/printers
         browseable = yes
         read only = yes
         guest ok = no
      [data]
         comment = /my_folder
         path = /my_folder
         browseable = yes
         read only = no
         writable = yes
         guest ok = yes
         hosts allow = <IP-адрес> 127.0.0.1
         hosts deny = 0.0.0.0/0
      

      Где <IP-адрес> в блоке [data] – IP-адрес компьютера, к которому вы будете подключать по NFS сетевой диск с данными.

    6. Перезапустите NFS и Samba:

      sudo service nfs-kernel-server restart
      sudo service smbd restart
      

Протестируйте работу файлового сервераПротестируйте работу файлового сервера

  1. Установите ACL на виртуальной машине fileserver-tutorial:

    Ubuntu
    sudo apt install acl
    
  2. Создайте на ВМ fileserver-tutorial директорию remote и файл test.txt:

    Ubuntu
    sudo mkdir /my_folder/remote
    sudo setfacl -m u:<имя_вашего_пользователя>:rwx /my_folder/remote
    echo "Hello world!" > /my_folder/remote/test.txt
    
  3. Подключите по NFS сетевой диск к вашему компьютеру и проверьте доступность тестового файла:

    Linux/macOS
    Windows

    Если необходимо, установите утилиту для работы с сетевыми дисками:

    sudo apt-get install nfs-common
    

    Создайте точку монтирования:

    sudo mkdir /remote-test-dir
    

    Подключите сетевой диск:

    sudo mount -t nfs <публичный_IP-адрес_ВМ>:/my_folder /remote-test-dir
    

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

    Примечание

    Может потребоваться настройка политик безопасности Windows для доступа к файловому серверу.

    1. Запустите утилиту cmd.exe. Для этого нажмите сочетание клавиш Windows + R и выполните команду cmd.

    2. В командной строке выполните команду:

      net use x: \\<публичный_IP-адрес_ВМ>\data
      

    В результате появится диск X с тестовой директорией и файлом.

Как удалить созданные ресурсыКак удалить созданные ресурсы

Чтобы перестать платить за созданные ресурсы:

  1. Откройте конфигурационный файл single-node-file-server.tf и удалите описание создаваемой инфраструктуры из файла.

  2. Примените изменения:

    1. В терминале перейдите в папку, где вы отредактировали конфигурационный файл.

    2. Проверьте корректность конфигурационного файла с помощью команды:

      terraform validate
      

      Если конфигурация является корректной, появится сообщение:

      Success! The configuration is valid.
      
    3. Выполните команду:

      terraform plan
      

      В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.

    4. Примените изменения конфигурации:

      terraform apply
      
    5. Подтвердите изменения: введите в терминале слово yes и нажмите Enter.

См. такжеСм. также

  • Однонодовый файловый сервер с помощью консоли управления.

Была ли статья полезна?

Предыдущая
Консоль управления
Следующая
Настройка SFTP-сервера на Centos 7
Проект Яндекса
© 2025 ООО «Яндекс.Облако»