DSC+인형: 도착!

올해 초, 우리는 announced an upcoming project에서 Puppet이 DSC 자원을 사용하는 이야기를 대폭 개선했다.오늘, 우리는 이 프로젝트의 정식 출시를 선포합니다!
Puppet.Dsc PowerShell module 현재 PowerShell Gallery에서 사용할 수 있습니다.그 밖에 DSC 자원을 가진 최초의 26개의 PowerShell 모듈은 이미 괴뢰화되어 published to the Forge에 이르렀다!
우리는 작년에 발표된 DSC 자원 중에서 다운로드가 가장 많은 모듈을 몇 개 골랐지만, 앞으로 몇 주 동안, 당신은 Forge의 PowerShell Gallery에서 사용할 수 있는 모든 모듈을 찾을 수 있을 것입니다!
하지만 오늘 이 뉴스를 공유하는 것 외에 엔진 뚜껑 아래에서 무슨 일이 일어났는지, 그리고 자동으로 생성된 모듈을 어떻게 사용하는지 더 상세하게 소개하고 싶습니다.

설치 모듈


PowerShell 모듈의 도움말을 직접 읽고 실험하고 싶다면 다른 PowerShell 모듈을 설치하는 것처럼 설치할 수 있습니다.
Install-Module -Name Puppet.Dsc
Import-Module -Name Puppet.Dsc
Get-Command -Module Puppet.Dsc
Get-Help -Name New-PuppetDscModule -ShowWindow
PowerShell 모듈의 일부 기능은 설치된 Puppet Development Kit (PDK)에 의존합니다.우리는 Chocolatey을 사용하는 것을 건의하지만, 당신이 원한다면 manually download and install을 사용할 수도 있습니다.
choco install pdk
만약 당신이 단조 공장의 인형 모듈로 같은 일을 하고 싶다면, 당신은 그것들을 설치하고, 다른 인형 모듈처럼 그것들을 대할 수 있다.
# For example, installing the Puppetized ComputerManagementDsc module manually:
puppet module install dsc-computermanagementdsc --Version 8.4.0-0-0
# Or via r10k / Code Manager / Bolt:
mod 'dsc-computermanagementdsc', '8.4.0-0-0'

PowerShell 모듈 조작


그렇다면 DSC 리소스가 있는 PowerShell 모듈을 Puppet 모듈로 변경하시겠습니까?명령 하나만 있으면 이 작업을 완료할 수 있습니다.
# If you run this command without the PassThru flag it returns nothing to the output stream.
# Any conversion errors will be in the error stream, as usual.
# If you'd like a deeper look at what it's doing, try running it with the Verbose flag.
New-PuppetDscModule -PowerShellModuleName ComputerManagementDsc -PassThru
불행히도 출력을 실행하는 것은 그다지 흥분되지 않는다.

막후에서 명령:
  • PDK을 사용하여 새 인형 모듈
  • 만들기
  • 에서 ComputerManagementDsc 모듈을 검색하여 새로운 Puppet 모듈
  • 에 제공
  • 은 공급업체 PowerShell 모듈의 각 DSC 리소스를 Puppet 리소스 API 유형으로 변환하여 제공업체
  • 은 PowerShell 모듈을 기반으로 Puppet 모듈의 메타데이터와 문서를 업데이트합니다.
  • At this time, for best results we strongly recommend you run the command with administrator privileges in a Windows PowerShell 5.1 session. While it does work without administrator privileges, the function cannot fully map nested CIM instances without administrator privileges. For more information on this process, check out the about_Puppetization HelpFile via Get-Help for a more in-depth documentation of this process.


    PowerShell 라이브러리 괴뢰화 모듈 사용


    한편, DSC 자원을 가진 괴뢰화 모듈을 사용하는 것에 대해서는 할 말이 없다.다른 인형 모듈을 사용하는 것처럼 사용하십시오.다른 한편, 당신이 상세하게 이해할 만한 강력한 실용 프로그램이 있습니다. 당신은 알 수도 있고, 모를 수도 있습니다!
    워크플로우에서 최대한의 가치를 얻기 위해 을 사용하는 경우 VSCode에 괴뢰화된 DSC 자원을 포함하는 목록을 작성하는 것을 강력히 권장합니다.example.pp이라는 파일을 열어 편집할 때,Puppet 확장자는 자동으로 불러오기 시작합니다.완성되면 IntelliSense를 포함한 많은 유용한 창작 지원을 받을 수 있습니다.
    예를 들어, computermanagementdsc Puppet 모듈을 설치한 경우 dsc_execution만 입력하면 IntelliSense가 시작되고 도움이 됩니다.
    Puppet extension
    이것은 우리에게 어떤 사용 가능한 자원이 일치할 수 있는지를 알려줄 뿐만 아니라, 모든 자원의 사용 가능한 문서도 보여 준다.
    우리는 또한 우리가 전달하고자 하는 모든 속성을 위해 스마트 감지를 얻는다.마찬가지로 이것은 사용 가능한 옵션뿐만 아니라 모든 속성의 사용 가능한 문서도 포함한다.

    등록 정보에 마우스를 올려 놓고 해당 등록 정보에 대한 문서를 볼 수도 있습니다.

    당신이 리스트를 작성하기 시작했을 때, 이런 그룹은 진정으로 노래를 부르기 시작했지만, 약간의 문제가 생겼다.

    위 그림은 왼쪽 창의 파일 이름이 색상이 변경되었고 빨간색으로 표시됩니다.또한 VSCode가 강조 표시된 목록의 두 항목인 하나는 주황색 밑줄로 경고를 표시하고, 다른 하나는 빨간색 밑줄로 오류를 표시합니다.마지막으로 왼쪽 아래 모서리에 오류와 경고가 있는 문제 기호를 강조 표시하면 두 기호 모두 하나의 계수를 표시합니다.
    VSCode (확장을 통해) 우리의 목록에 문제가 있음을 알 수 있습니다.이러한 기호를 클릭하여 문제 창을 열고 조사할 수 있습니다.

    이것은 해시 로켓의 축소에 대한 경고와 확장을 막는 세 번째 줄의 어떤 문법 오류를 알려준다.
    코드를 빠르게 보면 두 번째 줄의 리소스 선언에 쉼표가 없음을 알 수 있습니다. 쉼표를 추가하면 다음을 확인할 수 있습니다.

    이제 남은 것은 격식 문제다.다행히도 VSCode는 Format Document 명령을 통해 이 문제를 자동으로 처리할 수 있습니다.

    우리는 그것이 산열 로켓을 확실히 이동하고 우리의 마지막 문제를 해결한 것을 볼 수 있다.

    우리는 이미 이 명세서를 적용할 준비가 되어 있다.
    puppet apply ./example.pp
    
    오직문제가 하나 있다.dsc_executionpolicyscope의 문서를 충분히 읽지 못했습니다. Machine이 아니라 MachinePolicy을 지정했습니다!
    Puppet은 우리에게 매우 좋은 오류 정보를 주었다.
    Error: Parameter dsc_executionpolicyscope failed on Dsc_powershellexecutionpolicy[[OPS-213]]: dsc_powershellexecutionpolicy.dsc_executionpolicyscope expects a match for Enum['CurrentUser', 'LocalMachine', 'MachinePolicy', 'Process', 'UserPolicy'], got 'Machine'
    
    Set 작업을 사용하여 DSC를 호출하기 전에 허용된 값의 명시적 목록을 얻었습니다.이것은 우리가 이전에 puppetlabs-dsc_lite에서 실현한 것과 달리 후자는 당신이 제공한 값이 정확한지 알 수 없습니다.
    명세서를 수정하여 LocalMachine을 지정하고 명령을 다시 실행하면 다음과 같은 추가 정보를 얻을 수 있습니다.
    Notice: Compiled catalog for michael.lombardi-pf12aa84 in environment workstation_production in 1.04 seconds
    Notice: /Stage[main]/Main/Dsc_powershellexecutionpolicy[[OPS-213]]/dsc_executionpolicy: dsc_executionpolicy changed 'Unrestricted' to 'RemoteSigned'
    Notice: dsc_powershellexecutionpolicy[{:name=>"[OPS-213]", :dsc_executionpolicyscope=>"LocalMachine"}]: Updating: Finished in 0.809555 seconds
    Notice: Applied catalog in 1.68 seconds
    
    이것은 우리가 이전에 실현한 두 가지 변화를 두드러지게 한다. Puppet을 사용할 때, 당신은 현재 DSC 자원의 속성별 보고서를 얻을 수 있다!이 구현은 DSC 자원이 동기화되지 않고 적용되는지 알 뿐만 아니라, 어떤 속성이 동기화되지 않는지, 그 값이 무엇인지, 그리고 이번 실행에서 설정된 것을 정확하게 알려줄 수 있습니다.
    이것은 DSC 자원을 Puppet을 사용하여 관리하는 모든 다른 자원과 일치하게 하고 달리기 보고서의 유용성을 크게 향상시킵니다!

    다가오다


    이 전환된 DSC 자원과 Puppet.Dsc 모듈이 PowerShell Gallery에 발표된 것은 우리가 DSC와 Puppet을 결합하여 사용하는 마지막 단계가 아니라 첫 번째 단계일 뿐이다.
    앞으로 몇 주 동안, 우리는 당신의 피드백을 기대하고, 가능한 한 빨리 그것을 통합시킬 것입니다.
    우리는 또한 라이브러리에 있는 DSC 자원을 사용하여 모든 PowerShell 모듈을 자동으로 괴뢰화하려고 노력하고 있다.만약 사용하고자 하는 모듈이 아직 저희 에 발표되지 않았다면, dsc namespace on the Forge에 알려주시거나 이메일(Slack)로 알려주십시오. 저희는 가능한 한 빨리 발표할 것입니다!
    장기적으로 볼 때, 우리는 DSC 자원이 있는 PowerShell 모듈의 발표 (신규 또는 업데이트) 부터 라이브러리, 그리고 같은 모듈이 괴뢰화되어 Forge로 발표되는 데 24시간 이상 지연되지 않도록 밤마다 구축할 계획이다.
    우리는 가능한 한 빨리 당신의 편지를 받기를 바랍니다.

    좋은 웹페이지 즐겨찾기