Tôi có thiết lập Vagrant/Ansible trên máy chủ Windows của mình. Ansible được thiết lập để chạy trên máy khách Ubuntu, vì Vagrant up
thực hiện một kịch bản lệnh shell sao chép các tệp provisioning yml
vào máy khách và cài đặt Ansible cũng trên máy khách.Lỗi tập tin văn bản không thể đọc được
Kịch bản chạy Ansible thiết lập trên vị khách với dòng lệnh sau:
# Ansible installations
sudo apt-get install -y ansible
# Copy all Ansible scripts to the ubuntu guest
sudo cp -rf -v /vagrant/provisioning /home/vagrant/
# cp /vagrant/hosts /home/vagrant/
sudo chmod 666 /home/vagrant/provisioning/hosts
# Install roles
sudo ansible-playbook /home/vagrant/provisioning/local.yml -i /home/vagrant/provisioning/hosts --connection=local
Một trong những bước trong quá trình cấu hình Ansible đang thiết lập một bản sao mới của Laravel trong thư mục /var/www
. Sau khi kéo vào Laravel, kịch bản của tôi sau đó sao chép và sau đó chỉnh sửa tệp .env
trong gốc tài liệu (/var/www
).
Nhưng trong vấn đề này, nó không thành công với thông báo text file busy
. Đây là một bản sao đang xảy ra trên khách với tư cách là nguồn và đích, vì vậy tôi không biết phải làm gì với VBox. Tôi có cảm giác nó phải liên quan đến tên tệp quá bất thường, nhưng tôi không tìm thấy câu trả lời.
task.yml
tập tin của tôi cho Laravel là:
---
- name: Clone git repository
git: >
dest=/var/www
repo=https://github.com/laravel/laravel.git
update=no
sudo: yes
sudo_user: www-data
register: cloned
- name: copy .env file
copy: src=env.j2 dest={{ conf_file }}
- name: set APP_DOMAIN={{ server_name }}
lineinfile: dest=/var/www/.env regexp='^APP_DOMAIN=' line=APP_DOMAIN={{ server_name }}
Tôi cũng đã cố gắng sử dụng các mẫu phương pháp với các lỗi tương tự:
- name: copy .env file
template: src=env.j2 dest={{ conf_file }}
file conf của tôi chứa:
conf_file: /var/www/.env
Nó không thành công ở bước sao chép như sau:
==> default: TASK: [laravel | copy .env file] **********************************************
==> default: failed: [10.0.1.10] => {"failed": true, "md5sum": "a380715fa81750708f7b9b6fea1a48fe"}
==> default: msg: Could not replace file: /root/.ansible/tmp/ansible-tmp-1441176559.19-197929606462535/source to /var/www/.env: [Errno 26] Text file busy
==> default:
==> default: FATAL: all hosts have already failed -- aborting
==> default:
==> default: PLAY RECAP ********************************************************************
==> default: to retry, use: --limit @/root/local.retry
==> default:
==> default: 10.0.1.10 : ok=21 changed=18 unreachable=0 failed=1
The SSH command responded with a non-zero exit status. Vagrant
assumes that this means the command failed. The output for this command
should be in the log above. Please read the output to determine what
went wrong.
Tệp nguồn .env
nằm trong thư mục có tên là files
khỏi thư mục tác vụ Laravel, giống như các mục khác mà tôi định cấu hình hoạt động OK. Không tìm thấy tệp .env
trong thư mục www
sau khi nó không thành công để nó không sao chép.
Xin chào @Ocean, cảm ơn. Có '/ var/www' là thư mục chia sẻ, và tôi đã thấy lỗi mà bạn giới thiệu cho tôi, nhưng đó là từ tháng 11 năm 2014. Nó vẫn chưa được sửa? Nhân tiện, các tệp khác sao chép OK thông qua quá trình này nhưng không sao chép vào thư mục 'www' ... – TheRealPapa
Ngoài ra, phiên bản Ansible nào đang được cài đặt vào hộp Ubuntu? – ocean
Hi @ocean, tất cả các thành phần mới nhất (hiện tại) phiên bản trên Windows 10. Tôi hiện đang thử đề xuất của bạn và sẽ báo cáo lại. Cảm ơn. – TheRealPapa