2

Я использую chef-server 11 и используя жемчужину-шеф-повар для автоматизации облачной инфраструктуры. У меня есть простой рецепт для создания экземпляра от AMI, но он не с ArgumentError неизвестной директивой: «\ п» ошибкаchef-recipe ArgumentError unknown директива: " n"

мой рецепт повара

require 'chef/provisioning/aws_driver' 
with_driver 'aws::us-east-1' 
machine 'new-chef-instance' 
do 
    machine_options :ssh_username => 'root', 
     :bootstrap_options => 
     { 
     :key_name => 'mykeyname', 
     :image_id => 'myamiid', 
     :instance_type => 't2.micro', 
     :subnet_id => 'mysubnetid', 
     :security_group_ids => 'my-security-group' 
     } 
end 

после выполнения этого рецепта, как этот

chef-client -z recipes/createserver.rb 

Я получаю следующее сообщение об ошибке после создания экземпляра

[2015-08-24T11:42:17+00:00] INFO: Processing chef_node[new-chef-provision] action create (basic_chef_client::block line 57) 

================================================================================ 
Error executing action `converge` on resource 'machine[new-chef-instance]' 
================================================================================ 

ArgumentError 
------------- 
unknown directive: "\n" 

Resource Declaration: 
--------------------- 
# In /mypath/recipes/createserver.rb' 
[2015-08-24T11:42:27+00:00] INFO: Running queued delayed notifications before re-raising exception 

Running handlers: 
[2015-08-24T11:42:27+00:00] ERROR: Running exception handlers 
Running handlers complete 
[2015-08-24T11:42:27+00:00] ERROR: Exception handlers complete 
[2015-08-24T11:42:27+00:00] FATAL: Stacktrace dumped to /root/.chef/local-mode-cache/cache/chef-stacktrace.out 
Chef Client failed. 0 resources updated in 268.92955968 seconds 
[2015-08-24T11:42:27+00:00] ERROR: machine[new-chef-provision]  (@recipe_files::/mypath/recipes/createserver.rb line 3) had an error: ArgumentError: unknown directive: "\n" 
[2015-08-24T11:42:28+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1) 

Хотя экземпляр создан правильно, и я могу использовать его из командной строки, но выполнение полного рецепта не удается, как я могу исправить ошибку, и я уверен, что в моем рецепте нет лишнего символа «\ n».

+0

В будущем, пожалуйста, откорректируйте свой код правильно. Маленькая идея (не используя aws или chef-provisonning). Не следует, чтобы ': ssh_username => 'root',' находились в пределах параметров начальной загрузки, этот атрибут должен быть хешем, если эта опция должна быть верхнего уровня, а не внутри bootstrap, заключите оба с {} как 'machine_options {: ssh_username =>; ..,: bootstrap_options => {...}}', чтобы убедиться, что это принято как хэш. (Это просто идея, я не могу гарантировать, что это решение) – Tensibai

+0

Редактировать вопрос, но нет отзывов о комментарии? – Tensibai

+0

Можете ли вы включить stacktrace? Файл находится в '/ root/.chef/local-mode-cache/cache/chef-stacktrace.out', возможно, будет дополнительная информация о строке, где она обнаружит эту ошибку. Во-первых, посмотрите на '/ mypath/recipes/creationerver.rb', в строке 3. Может быть, вы нажали туда, может быть, есть новая строка, где ее не должно быть. – deem

ответ

1

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

Смежные вопросы