2016-09-19 73 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', 
} 
} 

讓我知道這是如何幫助或你不明白!木偶有時候可以成爲野獸!