2016-09-19 47 views
0

我有一个应用程序需要一个本地帐户才能进行配置。我创建了内部的模块我有2个文件夹:Puppet PowerShell执行

  1. files
  2. manifests

下表现init文件我有下面的代码:

class xyz { 
    exec { ' app_config': 
    command => ' C:\Windows\System32\WindowsPowershell\v1.0\powershell.exe -file c:\provisioning\modules\xyz\files\config1.ps1 ' 
    } 
} 

下的文件夹中有是2个文件:

  1. config1.ps1
  2. app_execute.bat

config1.ps1我创建一个本地用户:

$user = $env:COMPUTERNAME/Testing 

$Credentials = New-Object -TypeName System.Management.Automation.PScredential -ArgumentList $user, ("[email protected]", | ConvertTo-SecureString -AsPlainText -Force) 

Start-Process C:\Windows\System32\WindowsPowershell\v1.0\powershell.exe -Credential $Credentials -ArgumentList " Start-Process C:\Windows\System32\cmd.exe -File c:\provisioning\c:\provisioning\modules\xyz\files\app_execute.bat " 

app_execute.bat

c:\puppet\app.bat -f c:\puppet\responsefile.rsp 

的日志文件显示PowerShell的文件config1.ps1得到成功执行,但应用程序离子记录文件没有被生成,但是当手动执行config1.ps1应用程序将被配置。

不确定,在config1.ps1中,我使用的是Start-Process,它将使用本地帐户创建单独的进程。

我觉得木偶不等待上面config1.ps1成功完成。

不知道它为什么没有完全执行,是否有任何条件,因为我们需要在init中只执行一个文件,因为我正在启动2个进程。

+2

一个'exec'资源,启动一个powershell脚本,启动一个PowerShell进程,启动一个CMD进程,该进程运行一个批处理文件(具有无效路径),该文件运行另一个批处理文件,该文件处理某种响应文件。哇。只是... *哇!*我的建议是:扔掉它并重新开始。从头开始。考虑使用['用户资源](https://docs.puppet.com/puppet/4.6/reference/resources_user_group_windows.html)这次创建本地用户。 –

+0

@AnsgarWiechers,非常感谢您的帮助,我会尝试用户资源并进行检查。 – Shivayogi

+0

@AnsgarWiechers,我使用的用户资源选项,但它是抛出错误,我提出了相同的票据http://stackoverflow.com/questions/39653659/puppet-local-account-creation-error – Shivayogi

回答

1

对于你的命令,这是为我工作,我把它复制在我的工作,木偶:

command => 'powershell -ExecutionPolicy RemoteSigned -file C:\<path to .ps1>' 

什么是关键要记住:

  1. 您只能使用名为.ps1文件与这里的文件选项
  2. 您可以在此.ps1中添加任何Powershell,以便尽可能利用PowerShell ISE。一个很好的资源来建立你的PowerShell脚本。
  3. 在包含您的清单目录的相似目录中创建facts.d。然后创建一个批处理文件来检查文件或目录是否存在,这是完成事实生成的简单方法。在检查用户创建时,这可能很难,但请记住ECHO user_creation_need=true=false
  4. 在VM中进行测试。这一步非常重要,我不会详细讨论,但只要您可以快速切换回已知的良好测试状态,您的Puppet工作的成功实施将更加确定。看看Disk2Vhd和VirtualBox。

https://docs.puppet.com/puppet/4.3/reference/quick_start_user_group.html

现在,创建用户在木偶非常真棒,因为你不需要任何上述指示的。相反:

class user_group_creator { 
    group {'Cool People': 
    name  => 'Cool People', 
    members => ['User1','User3'], 
    ensure  => present, 
    } 
    user {'User2': 
    ensure   => present, 
    name    => 'User2', 
    password   => 'Password', 
    password_max_age => '99999', 
    before   => Group['Cool People'], 
    groups   => 'Cool People', 
} 
} 

让我知道这是如何帮助或你不明白!木偶有时候可以成为野兽!