config ini env hcl plist terraform devops sysadmin file-extensions

설정 파일 형식 가이드: INI, ENV, PLIST, HCL 및 기타

다양한 설정 파일이 헷갈리시나요? .ini, .conf, .env, .properties, .plist, .hcl, .tf, .ovpn 및 .wg 파일 확장자, 구문 및 사용 사례에 대한 완벽한 가이드입니다.

2026-04-11

설정 파일 형식 참조: INI, ENV, PLIST, HCL 등

현대 소프트웨어 개발 및 시스템 관리에서는 수십 가지의 서로 다른 설정 파일 형식을 다룹니다. 현재 JSON, YAML, TOML이 업계에서 가장 선호되지만, Linux 시스템, Windows 레지스트리, Apple macOS, Java 및 코드형 인프라(IaC)와 같은 특정 에코시스템에서는 여전히 많은 다른 확장자가 사용되고 있습니다.

이 참조 가이드에서는 여러분이 접하게 될 가장 일반적인 "레거시" 및 전문 설정 파일 확장자를 다룹니다.


빠른 참조 표: 설정 파일 형식

확장자 전체 이름 에코시스템 구문 유형
.ini, .conf, .cfg Initialization / Configuration Linux, Windows, PHP, Python 키-값 / 섹션
.env Environment Variables 웹 개발 (Node.js, Docker, Python) Key=Value
.properties Java Properties Java, Spring, Android Key=Value (또는 XML)
.plist Property List macOS, iOS, Apple XML 또는 바이너리
.hcl, .tf, .tfvars HashiCorp Configuration Language Terraform, Nomad, Consul 도메인 특화 언어 (DSL)
.ovpn, .wg OpenVPN / WireGuard Config 네트워킹, VPN 지시어 기반

1. 시스템 및 레거시 설정 (.ini, .conf, .cfg)

이들은 설정 파일의 "조상"격입니다. 간단하고 텍스트 기반이며 사람이 읽기 쉽습니다.

  • INI 파일: Windows 및 이전 소프트웨어에서 자주 사용됩니다. [Sections]를 사용하여 키-값 쌍을 그룹화합니다.
    [database]
    host = 127.0.0.1
    port = 5432
    
  • CONF / CFG: 주로 Linux의 /etc/ 디렉토리(예: nginx.conf, redis.conf)에서 사용됩니다. 구문은 다양하며, 일부는 단순한 키-값을 사용하고 다른 일부는 중괄호나 사용자 정의 지시어를 사용합니다.

2. 환경 변수 (.env)

.env 파일은 Git에 커밋해서는 안 되는 "비밀 정보" 및 환경별 설정(예: 데이터베이스 URL 또는 API 키)을 저장하기 위한 현대 웹 개발의 표준입니다.

  • 구문: 매우 간단한 KEY=VALUE 형식입니다.
  • 권장 사항: .env를 소스 제어에 절대 커밋하지 마세요. 대신 필요한 변수를 보여주기 위해 .env.example 파일을 사용하세요.

3. 엔터프라이즈 및 Java (.properties)

수십 년 동안 Java 가상 머신(JVM)에서 사용되어 왔습니다. .env 파일과 비슷하지만 더 복잡한 이스케이프를 지원하며 XML 형식으로 작성할 수도 있습니다.

  • 일반적인 용도: Spring Boot 애플리케이션의 application.properties.
  • 구문: database.url=jdbc:mysql://localhost:3306/db

4. Apple 에코시스템 (.plist)

Property List는 macOS 및 iOS 앱의 표준입니다. 사용자 기본 설정 및 앱 메타데이터(Info.plist 등)를 저장합니다.

  • 형식: 사람이 읽을 수 있는 XML 또는 최적화된 바이너리 파일로 저장할 수 있습니다.
  • 보는 방법: macOS에서 "Property List Editor"를 사용하거나 plutil 명령줄 도구를 사용하여 JSON으로 변환합니다.

5. 코드형 인프라 (.hcl, .tf, .tfvars)

HCL은 사람이 읽기 쉬운 YAML과 기계가 읽기 쉬운 JSON 사이의 간극을 메우기 위해 HashiCorp에서 개발했습니다. Terraform의 기본 언어입니다.

  • HCL: 표현력이 뛰어나며 주석, 변수 및 함수를 지원합니다.
  • TF: 특히 Terraform 리소스 정의에 사용됩니다.
  • TFVARS: Terraform 플랜에 변수 값을 전달하는 데 사용됩니다.

6. 네트워킹 및 VPN (.ovpn, .wg)

보안 연결을 설정해 본 적이 있다면 다음을 보셨을 것입니다:

  • OVPN: OpenVPN 서버 주소, 포트 정보 및 종종 내장된 인증서(<ca>, <cert>, <key>)를 포함하는 복잡한 스크립트 형식의 파일입니다.
  • WG: 더 간단한 WireGuard 설정입니다. [Interface][Peer]를 정의하기 위해 깔끔한 INI 스타일 형식을 사용합니다.

설정 파일 작업을 위한 도구

  • 에디터: VS Code, Sublime Text 및 JetBrains IDE에는 구문 강조 및 유효성 검사를 제공하기 위해 위에 나열된 거의 모든 형식에 대한 플러그인이 있습니다.
  • CLI 변환기:
    • yq: 휴대용 명령줄 YAML, JSON, XML, CSV 및 TOML 프로세서(jq와 유사).
    • plutil: .plist 파일을 변환하기 위해 macOS에 내장된 도구.
    • terraform fmt: .tf.hcl 파일을 형식화하기 위해 사용.

자주 묻는 질문 (FAQ)

Q: .env 파일에서 주석을 사용할 수 있나요?

A: 대부분의 .env 파서(Node.js의 dotenv 등)는 #로 시작하는 주석을 지원합니다. 하지만 주석은 인라인보다는 별도의 줄에 작성하는 것이 가장 안전합니다.

Q: 바이너리 .plist를 XML로 어떻게 변환하나요?

A: macOS에서 plutil -convert xml1 filename.plist를 실행하면 됩니다.

Q: 내 .ini 파일에 [대괄호]가 있는 이유는 무엇인가요?

A: 대괄호는 **섹션(Section)**을 나타냅니다. 이를 통해 관련 설정을 그룹화하여 이름 충돌을 방지할 수 있습니다(예: [http] 아래의 port[ssh] 아래의 서로 다른 port).

Q: .hcl은 JSON과 호환되나요?

A: 예! HCL은 JSON과 완전히 호환되도록 설계되었습니다. 원한다면 실제로 Terraform 파일을 .tf.json으로 작성할 수 있습니다(사람이 읽기에는 덜 편하지만요).


Tool3M 관련 도구

  • JSON 포맷터: JSON 설정 파일을 포맷하고 유효성을 검사합니다.
  • YAML JSON 변환: 일반적인 데이터 형식 간의 관계에 대해 알아봅니다.