2013-06-18 19 views
10

Tôi ước gì tôi có thể sử dụng có điều kiện cho cấu hình .ebextensions, nhưng tôi không biết làm thế nào để sử dụng nó, trường hợp hiện tại của tôi là:Làm thế nào để sử dụng có điều kiện tại .ebextensions cấu hình (AWS đàn hồi Beanstalk)

Một trong. Nội dung cấu hình ebextensions tạo thư mục, thực ra thư mục phải được tạo chỉ một lần, vì nếu tôi triển khai ứng dụng lần thứ hai trở lên thì tôi gặp lỗi và lỗi "thư mục đã tồn tại".

Vì vậy, tôi cần phải cung cấp điều kiện, nếu thư mục đã tồn tại, không cần phải chạy lại lệnh để tạo thư mục.

Nếu bất kỳ ai có bất kỳ thông tin chi tiết hoặc hướng nào về cách thức này có thể đạt được, tôi sẽ đánh giá cao điều đó. Cảm ơn bạn!

Trả lời

7

Tôi nghĩ rằng cách duy nhất để làm điều đó là với điều kiện vỏ:

commands: 
    make-directory: 
    command: | 
     if [ ! -f "${DIR}" ]; then 
     mkdir "${DIR}" 
     fi 

Xem ví dụ lớn hơn trong jcabi-beanstalk-maven-plugin.

+0

yeah bạn đúng, tôi đã yêu cầu AWS có điều kiện không phải là được hỗ trợ trong .ebextensions. ah ok, cảm ơn đề nghị của bạn, tôi sẽ cố gắng đầu tiên. – Khalid

+0

btw, làm cách nào để tôi hiểu về nếu [! -f "$ {DIR}"]; sau đó mkdir "$ {DIR}" fi – Khalid

+0

Tôi cần 3 điều kiện để thiết lập cho 3 lệnh, 1) lệnh cần kiểm tra là có thư mục nào đã được tạo hay không, 2) Tôi đặt một dòng lệnh trong/etc/fstab , Vì vậy, tôi cần phải kiểm tra là kịch bản đã được tạo ra hay không, 3) Tôi cần phải kiểm tra là một thư mục alredy gắn kết (gắn kết) hay không. nó sẽ tuyệt vời nếu tôi có thể hiểu được lệnh script có điều kiện. cảm ơn – Khalid

19

Tệp cấu hình .ebextensions cho phép thực thi lệnh có điều kiện bằng cách sử dụng chỉ thị test: trên lệnh. Sau đó, lệnh chỉ chạy nếu thử nghiệm là đúng (trả về 0).

Ví dụ .ebextensions/create_dir.config file:

commands: 
    01_create_dir: 
    test: test ! -d "${DIR}" 
    command: mkdir "${DIR}" 

Một ví dụ khác (trên thực tế thử nghiệm trên EB) để có điều kiện chạy một kịch bản nếu một thư mục không phải là ở đó:

commands: 
    01_intall_foo: 
    test: test ! -d /home/ec2-user/foo 
    command: "/home/ec2-user/install-foo.sh" 
    cwd: "/home/ec2-user/" 

Các tài liệu thưa thớt từ AWS là ở đây:

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html#customize-containers-format-commands

PS. Nếu bạn chỉ cần có điều kiện tạo ra các thư mục, bạn có thể làm điều đó mà không cần điều kiện, sử dụng tùy chọn -p cho mkdir có điều kiện tạo ra các thư mục như sau:

commands: 
    01_create_dir: 
    command: mkdir -p "${DIR}" 
+0

Trong ví dụ của họ trên http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html họ nhầm lẫn tôi bằng cách sử dụng 'test: '[!/usr/bin/python] && echo "python chưa được cài đặt" '' để điều kiện chạy tập lệnh python. Điều đó không chạy lệnh nếu python là _missing_? – oskarth

+0

mkdir -p là một ý tưởng tuyệt vời. Cảm ơn –

+0

@oskarth Các '!' Trong thử nghiệm làm cho các kiểm tra nếu tuyên bố cho sự tồn tại của con đường đó, nó đọc "nếu không'/usr/bin/python' trả về false ". –

Các vấn đề liên quan