Назад | Перейти на главную страницу

шеф-повар разрешения на удаленный_каталог

я проверил 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

Подробнее об этом подходе см.