如何让Chef找到Active Directory用户?

时间:2015-12-11 20:30:22

标签: active-directory centos chef

错误:

Chef::Exceptions::UserIDNotFound
--------------------------------
cannot determine user id for 'builduser', does the user exist on this system?

这是我的(修剪过的)厨师食谱:

if node['platform'] == 'centos'
  package 'yum-utils'
  execute 'yum-config-manager --enable cr'
end

include_recipe "python::source"

...

## Setup key for jenkins... https://supermarket.chef.io/cookbooks/ssh_authorized_keys
ssh_authorize_key 'builduser@supermarket.com' do
    key 'AAAAB3Nz...hiOQ=='
    user 'builduser'
    group 'builduser'
end

此用户由此配方创建,但已存在于此CentOS VM所连接的Active Directory中。

任何人都知道如何告诉厨师从Active Directory中阅读此内容?

提前致谢

2 个答案:

答案 0 :(得分:0)

你可能正在进入可怕的" nsswitch.conf重新加载"问题。它第二次工作还是总是失败?如果它第二次运行,可能是因为/etc/nsswitch.conf仅在Chef运行的早期更新,并且由于libc如何缓存nsswitch数据库配置,这些更改在Chef进程重新启动之前不可见。如果它总是失败,请检查机器是否具有正确的nsswitch配置以使AD用户可见。仅在PAM上链接到AD对于用户条目来说是不够的。

答案 1 :(得分:0)

我的解决方法/解决方案是创建root拥有的文件资源,然后将它们chown给用户。不知何故...... chown似乎没有AD问题。

file '/home/orgz_test/builduser/.ssh/authorized_keys' do
  content 'ssh-rsa AAAAB3Nz...hiOQ== builduser@supermarket.com'
  mode '0644'
end

# user and group setting in 'file' or 'directory' does not work... so, do it manually
bash "Change ownership" do
    user "root"
    group "root"
    code <<-EOC
        chown builduser /home/orgz_test/builduser/.ssh/authorized_keys
        chgrp builduser_g /home/orgz_test/builduser/.ssh/authorized_keys
        chmod 600 /home/hedgeservtest.com/cashmgmt/.ssh/authorized_keys
    EOC
end

不是最漂亮的解决方案..但是有效。