Linux(CentOS 6)ホストをActiveDirectoryドメインに参加させる次のexec
があります。 bashターミナルからrootとして実行すると、正常に実行され、ホストはADドメインに正しく参加します。
ただし、パペットで実行する場合、net ads join
コマンドは次の場合に失敗します:
ドメインへの参加に失敗しました:マシンアカウントのパスワードの設定に失敗しました(NT_STATUS_ACCESS_DENIED)
これが幹部です
exec { 'adjoin':
command => "kinit [email protected] -k -t /etc/krb5.keytab && net ads join createcomputer='Machines/Servers/Linux Servers' osName='${operatingsystem}' osVer=${operatingsystemrelease} -k",
unless => "net ads testjoin -k | grep -q 'Join is OK'",
provider => Shell,
user => root,
path => '/usr/sbin:/usr/bin:/sbin:/bin',
require => [
File['/etc/krb5.conf'],
File['/etc/krb5.keytab'],
],
logoutput => true,
}
provider
パラメーターとuser
パラメーターを使用した場合と使用しない場合を試しました。
Execのenvironment
パラメーター、具体的にはLOGNAME
を使用して、いくつかの環境変数を明示的に設定する必要がありました。
exec { 'adjoin':
command => "kinit [email protected] -k -t /etc/krb5.keytab && net ads join createcomputer='Machines/Servers/Linux Servers' osName='${operatingsystem}' osVer=${operatingsystemrelease} -k",
unless => "net ads testjoin -k | grep -q 'Join is OK'",
provider => Shell,
user => root,
path => '/usr/sbin:/usr/bin:/sbin:/bin',
require => [
File['/etc/krb5.conf'],
File['/etc/krb5.keytab'],
],
logoutput => true,
environment => [
'USER=root',
'LOGNAME=root',
'HOME=/root',
],
}
これには2つの理由があります。
LOGNAME、USER、およびHOMEは、特にpuppetによって設定されません execの実行中。それは私がリンクしたチケットに詳述されているデザインの選択でした。
net ads
で必要かどうかはわかりませんが、正気のためにUSERとHOMEも設定しました。