Почему Ansible не монтирует удаленный общий доступ к NFS Vagrant

Моя книга воспроизведения Ansible вызывает ошибку, когда я пытаюсь запустить модуль монтирования:

Error mounting 192.168.33.1:/Users/me/playbooks/site1/website: mount.nfs: remote share not in 'host:dir' format

Каталог кода монтируется:

$ vagrant ssh -c "mount | grep http"
192.168.33.1:/Users/me/playbooks/site1/website on /srv/http/site1.com type nfs (...)

Vagrantfile:

Vagrant.configure("2") do |config|
  config.vm.box = "debian/jessie64"
  config.vm.network "forwarded_port", guest: 80, host: 8080
  config.vm.network "forwarded_port", guest: 443, host: 8443
  config.vm.network "private_network", ip: "192.168.33.10"
  config.vm.synced_folder "website/", "/srv/http/site1.com", nfs: true
end

Ansible playbook:

- name: Remount code directory
  hosts: web
  sudo: True
  tasks:
    - name: unmount website
      mount:
        name: /srv/http/site1.com
        src: srv_http_site1.com
        fstype: nfs
        state: unmounted
    - name: remount website
      mount: 
        name="192.168.33.1:/Users/me/playbooks/site1/website"
        src="srv_http_site1.com" 
        fstype=nfs 
        state=mounted

Я использую NFS v3:

$ sudo nfsstat | grep nfs  # => Client nfs v3

Я не уверен, почему это происходит. Задача размонтирования размонтирует файловую систему, но следующие задачи монтирования завершатся неудачно. Страница руководства mount(8) гласит: "устройство может выглядеть как knuth.cwi.nl:/dir". Страница man nfs(5) говорит, что имена хостов сервера могут быть "точечным четырехъядерным IPv4-адресом". Я попытался добавить следующую строку в мой файл /etc/hosts:

laptop    192.168.33.1

а затем заменив аргумент имени монтирования "192.168.33.1" на "ноутбук", но это тоже не исправило. Кто-нибудь видит, что я делаю не так?

Благодарю.

1 ответ

Решение

Похоже, у вас есть пара проблем с вашим сборником пьес Ansible. Последняя часть не является действительной YAML, но что более важно, name а также src в ваших горах поменялись местами. Документы утверждают, что "src is устройство для монтирования по имени". Также имя должно быть путем к точке монтирования. Вот книга игр с этими проблемами...

- name: Remount code directory
  hosts: web
  sudo: True
  tasks:
    - name: unmount website
      mount:
        name: /srv/http/site1.com
        src: 192.168.33.1:/Users/me/playbooks/site1/website
        fstype: nfs
        state: unmounted
    - name: remount website
      mount:
        name: /srv/http/site1.com
        src: 192.168.33.1:/Users/me/playbooks/site1/website
        fstype: nfs
        state: mounted

Если вы сделаете эти изменения и закомментируете synced_folder в вашем Vagrantfile, я думаю, он будет работать так, как вы хотите.

Другие вопросы по тегам