[Azure] 101-vm-Shkey ARM 템플릿 판독

10715 단어 AzureIaCtech

개시하다


Azure QuickStart Templates독학하세요!
그래서 출력도 시도해 본다.제4탄.

이번 판독 대상.


Deploy a Virtual Machine with SSH Keys

템플릿 요약 정보


이 템플릿을 디버깅하면 공개 키 인증을 사용하는 VM SSH 연결을 디버깅할 수 있습니다.
Linux VM을 만들 때 보안상의 이유로 공개 키 인증이 활성화되고 암호 인증이 금지되는 경우가 많습니다.그때 나는 이 틀을 참고할 수 있다고 생각했다.

해독하다


매번 있습니다. 흔히 볼 수 있는 템플릿 모델은 다음과 같습니다.
  • 매개변수 지정(parameters)
  • 변수의 설정(variables)
  • 해제할 자원에 대한 설명(resources)
  • 매개변수 지정(parameters)


    상단"parameters":부터 시작하는 부분은 템플릿에 사용되는 매개 변수(변수)의 설정입니다.템플릿을 디버깅할 때 옵션으로 표시할 수 있습니다.adminPublicKey에 공개 키 문자열을 입력합니다.
    azuredeploy.json
      "parameters": {
        "projectName": {
          "type": "string",
          "metadata": {
            "description": "Specifies a name for generating resource names."
          }
        },
        ...
        "adminPublicKey": {
          "type": "string",
          "metadata": {
            "description": "Specifies the SSH rsa public key file as a string. Use \"ssh-keygen -t rsa -b 2048\" to generate your SSH key pairs."
          }
        },
    
    아무래도 adminPublicKey"type": "securestring"지목하는 게 나을 것 같죠?하지만 냉정하게 생각해보면 공개 키니까 유출해도 괜찮아 이러면 돼.
    (※) 지정"type": "securestring"을 통해 일반 비밀번호 입력 화면처럼 마스크 상태에서 입력할 수 있습니다.또한 디버그 후 로그 등에서도 수치를 확인할 수 없기 때문에 암호 같은 문자열을 안전하게 전달할 수 있다.

    변수 설정(variables)

    "variables": 영역에서 이yaml 파일에 사용할 변수 이름을 설정할 수 있습니다.이 템플릿에서는 서브넷과 VM 이름 등이 여기에 설정됩니다.변경하고 싶을 때 여기를 적당히 개작해서 디자인하면 된다.
    azuredeploy.json
      "variables": {
        "vNetName": "[concat(parameters('projectName'), '-vnet')]",
        "vNetAddressPrefixes": "10.0.0.0/16",
        "vNetSubnetName": "default",
        "vNetSubnetAddressPrefix": "10.0.0.0/24",
        "vmName": "[concat(parameters('projectName'), '-vm')]",
        "publicIPAddressName": "[concat(parameters('projectName'), '-ip')]",
        "networkInterfaceName": "[concat(parameters('projectName'), '-nic')]",
        "networkSecurityGroupName": "[concat(parameters('projectName'), '-nsg')]",
        "networkSecurityGroupName2": "[concat(variables('vNetSubnetName'), '-nsg')]"
      },
    

    디버깅할 자원에 대한 설명 (resources)

    "resources": 구역에서 실행할 자원을 설명합니다.
    기본적인 구성은 졸저[Azure] 101-vm-Multiple-ipconfig 템플릿 판독를 참고할 수 있다고 생각합니다. 저쪽을 보세요.
    비밀번호 인증은 "type": "Microsoft.Compute/virtualMachinesproperties-osProfile-linuxConfiguration로 구성되어 있다.
    azuredeploy.json
        {
          "type": "Microsoft.Compute/virtualMachines",
          "apiVersion": "2019-12-01",
          "name": "[variables('vmName')]",
          "location": "[parameters('location')]",
          "dependsOn": [
            "[resourceId('Microsoft.Network/networkInterfaces', variables('networkInterfaceName'))]"
          ],
          "properties": {
            "hardwareProfile": {
              "vmSize": "[parameters('vmSize')]"
            },
            "osProfile": {
              "computerName": "[variables('vmName')]",
              "adminUsername": "[parameters('adminUsername')]",
              "linuxConfiguration": {
                "disablePasswordAuthentication": true,
                "ssh": {
                  "publicKeys": [
                    {
                      "path": "[concat('/home/', parameters('adminUsername'), '/.ssh/authorized_keys')]",
                      "keyData": "[parameters('adminPublicKey')]"
                    }
                  ]
                }
              }
            },
            ...
          }
        }
    
    한편으로는 설정disablePasswordAuthentication, 다른 한편으로는 설정PublicKeys.쓰기 방법상 path 지정한 파일에 쓴 것 같다. keyData참조: Microsoft.Compute virtualMachines

    최후


    Azure QuickStart Templates 애저에 대해 공부할 때 저는 이 산이 매우 소중한 산이라고 생각했습니다. 앞으로도 재미있는 것을 읽으려고 노력하겠습니다.

    좋은 웹페이지 즐겨찾기