я проверил https://docs.chef.io/resource_remote_directory.html и http://joerussbowman.tumblr.com/post/58241535331/chef-remote-directory-is-basically прежде всего.
chef-client версия 12.2.1
ОС CentOS 6.6
Я немного поработал с развертыванием нашего развертывания tomcat на узле, рецепт выглядит так
user 'tomcat' do
comment 'Tomcat User generated by chef'
uid 2004
home '/opt/tomcat'
shell '/bin/bash'
end
remote_directory '/opt/tomcat' do
source 'tomcat-6.0.35'
owner 'tomcat'
group 'tomcat'
mode '0755'
files_owner 'tomcat'
files_group 'tomcat'
files_mode '0644'
end
remote_directory '/opt/tomcat/bin' do
source 'bin'
files_owner 'tomcat'
files_group 'tomcat'
files_mode '0755'
owner 'tomcat'
group 'tomcat'
mode '0755'
end
По какой-то причине это оставит случайные каталоги как root.root
[~~~~~~~~~~~ tomcat]~ ll
total 88
drwxr-xr-x 4 root root 4096 Apr 8 13:59 appconfig
drwxr-xr-x 2 tomcat tomcat 4096 Apr 8 13:59 bin
drwxr-xr-x 4 tomcat tomcat 4096 Apr 8 13:59 conf
drwxr-xr-x 2 tomcat tomcat 4096 Apr 8 13:59 lib
-rw-r--r-- 1 tomcat tomcat 37951 Apr 8 13:59 LICENSE
-rw-r--r-- 1 tomcat tomcat 558 Apr 8 13:59 NOTICE
-rw-r--r-- 1 tomcat tomcat 8680 Apr 8 13:59 RELEASE-NOTES
-rw-r--r-- 1 tomcat tomcat 6670 Apr 8 13:59 RUNNING.txt
drwxr-xr-x 3 root root 4096 Apr 8 13:59 shared
drwxr-xr-x 7 root root 4096 Apr 8 13:59 webapps
Это странное поведение продолжается во всем дереве, где каталоги не установлены на tomcat.tomcat (всегда одни и те же остаются как root.root)
Единственные дополнительные рецепты - это java-рецепт из супермаркета и базовый для копирования mod_jk и установки httpd.
Итак, вопрос в том, что я делаю что-то глупое, неправильно читаю документацию или это глюк.
Если это я, что я делаю не так? Ура.
Обратите внимание: я также попытался добавить следующее, но оно все еще не повторяется правильно.
directory '/opt/tomcat' do
owner 'tomcat'
group 'tomcat'
recursive true
end
Во-первых, вы не теряете рассудок - это на самом деле предполагаемое поведение любого ресурса в стиле каталога при рекурсивном создании каталога.
Первый уровень удаленного каталога настроен правильно, а рекурсивные - нет.
Ссылка на документы:
Ресурс remote_directory может использоваться для рекурсивного создания пути вне структур удаленных каталогов, но разрешения этих внешних путей не управляются. Это связано с тем, что рекурсивный атрибут применяет значения атрибутов группы, режима и владельца только к самому удаленному каталогу и любым внутренним каталогам, которые копирует ресурс.
Вот как я бы попытался сделать это:
%w(
/opt/tomcat/appconfig
/opt/tomcat/bin
/opt/tomcat/shared
/opt/tomcat/webapps
).each do |path|
remote_directory path do
files_owner 'tomcat'
files_group 'tomcat'
files_mode '0755'
owner 'tomcat'
group 'tomcat'
mode '0755'
end
end
Это будет проходить через все подкаталоги в списке и правильно устанавливать их разрешения.
В этот блок могут быть внесены некоторые изменения в зависимости от того, как файлы размещены в структуре поваренной книги, но общее сообщение здесь заключается в том, что вам нужно управлять подкаталогами.
Другой подход - использовать необработанный метод Ruby для обеспечения таких разрешений:
ruby_block 'set permissions for tomcat dir' do
block do
require 'fileutils'
FileUtils.chown 'tomcat', 'tomcat', '/opt/tomcat'
end
action :run
end
Подробнее об этом подходе см.