Puppet PowerShell执行

时间:2016-09-19 16:37:09

标签: powershell puppet

我有一个应用程序需要配置所需的本地帐户。我在里面创建了一个模块,我有2个文件夹:

  1. files
  2. manifests
  3. 在清单init文件中,我有以下代码:

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

    在files文件夹下有2个文件:

    1. config1.ps1
    2. app_execute.bat
    3. config1.ps1我正在创建一个本地用户:

      $user = $env:COMPUTERNAME/Testing
      
      $Credentials = New-Object -TypeName System.Management.Automation.PScredential -ArgumentList $user, ("test@3456", | 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,这将使用本地帐户创建单独的流程。

      我认为Puppet不会等待上述config1.ps1成功完成。

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

1 个答案:

答案 0 :(得分:1)

对于你的命令,这对我有用,我在Puppet的工作中复制它:

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

要记住的关键:

  1. 您只能使用带有-File选项的.ps1文件
  2. 您可以在此.ps1中添加任何Powershell,以便尽最大努力利用PowerShell ISE。构建PowerShell脚本的绝佳资源。
  3. 在包含清单目录的like目录中创建facts.d。然后创建一个批处理文件,检查文件或目录是否存在,这是完成事实生成的简单方法。在检查用户创建时,这可能很难,但请记住ECHO user_creation_need=true=false
  4. 在VM中测试。这一步非常重要,我不会详细介绍,但只要您能够快速切换回已知的良好测试状态,您的Puppet工作的成功实施将更加确定。查看Disk2Vhd和VirtualBox。
  5. https://docs.puppet.com/puppet/4.3/reference/quick_start_user_group.html

    现在,在Puppet中创建用户非常棒,因为您不需要上述任何指示。代替:

    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',
     } 
    }
    

    让我知道这有什么帮助或你不明白的东西!傀儡有时候可能是野兽!