Cp-ansible: λ¦¬μŠ€λ„ˆμ— λŒ€ν•œ λ‹€λ₯Έ IP/호슀트 μ΄λ¦„μ˜ λ¬Έμ„œ μ‚¬μš©

에 λ§Œλ“  2020λ…„ 06μ›” 09일  Β·  12μ½”λ©˜νŠΈ  Β·  좜처: confluentinc/cp-ansible

λ¦¬μŠ€λ„ˆλ₯Ό μ„€μ •ν•  λ•Œ ip/hostanmeλ₯Ό λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
이 μ—­ν• μ˜ μ½”λ“œλŠ” κ·Έλ ‡κ²Œ ν•  수 μžˆμ§€λ§Œ 예제 호슀트 νŒŒμΌμ— μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

이것이 λ°”λžŒμ§ν•œ μΆ”κ°€ 사항이라면 PR을 λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€ :)
예

```
브둜컀:
이름: 브둜컀
포트: 9091
ssl_enabled: 거짓
ssl_mutual_auth_enabled: 거짓
sasl_protocol: μ—†μŒ
λ‚΄λΆ€μ˜:
이름: λ‚΄λΆ€
포트: 9092
호슀트 이름: ip-172-31-18-160.us-west-2.compute. λ‚΄λΆ€:19091
ssl_enabled: μ°Έ
ssl_mutual_auth_enabled: 거짓
sasl_protocol: 슀크램

enhancement question

λͺ¨λ“  12 λŒ“κΈ€

ya... 이 κΈ°λŠ₯은 aws둜 μž‘μ—…ν•  λ•Œ 맀우 μœ μš©ν•©λ‹ˆλ‹€. μ œκ°€ 일반적으둜 ν•˜λŠ” 일은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

kafka_broker:
  vars:
    kafka_broker_custom_listeners:
      external:
        name: EXTERNAL
        port: 9093
  hosts:
    ip-172-31-43-14.us-west-2.compute.internal:
      ansible_ssh_host: ec2-34-209-19-19.us-west-2.compute.amazonaws.com
      kafka_broker_custom_listeners:
        external:
          hostname: ec2-34-209-19-19.us-west-2.compute.amazonaws.com

그리고 kafka_broker_custom_listeners λ”•μ…”λ„ˆλ¦¬λ₯Ό λ³‘ν•©ν•˜κΈ° μœ„ν•΄ ν•΄μ‹œ 병합에 μ˜μ‘΄ν•©λ‹ˆλ‹€... λΆˆν–‰νžˆλ„ λ‚΄ μ˜κ²¬μœΌλ‘œλŠ” hosts_example.yml νŒŒμΌμ— λ¬Έμ„œν™”ν•˜λŠ” 것이 정말 ν˜Όλž€μŠ€λŸ¬μ›Œ λ³΄μž…λ‹ˆλ‹€.

μ—¬κΈ°μ—μ„œ λ¬Έμ„œλ₯Ό μ½μ—ˆμŠ΅λ‹ˆκΉŒ?
https://docs.confluent.io/current/installation/cp-ansible/index.html

아직 λ¬Έμ„œν™”λœ μ‚¬μš©μž μ •μ˜ λ¦¬μŠ€λ„ˆκ°€ μ—†λŠ” 것 κ°™μ§€λ§Œ μ—¬λŸ¬ μƒ˜ν”Œ/μ„€λͺ…을 포함할 수 있기 λ•Œλ¬Έμ— 더 λ‚˜μ€ μž₯μ†ŒμΈ 것 κ°™μŠ΅λ‹ˆλ‹€.

헀이 - λ„€ κ³΅μ •ν•œ μ§€μ μž…λ‹ˆλ‹€. μ•„λ§ˆλ„ λ‹€λ₯Έ λ¬Έμ„œμ—μ„œ 더 λ‚˜μ„ κ²ƒμž…λ‹ˆλ‹€.

λ‚΄κ°€ κΆκΈˆν–ˆλ˜ 또 λ‹€λ₯Έ 사항 - λ‹€λ₯Έ μˆ˜μ‹ κΈ°μ— λŒ€ν•΄ λ™μΌν•œ 호슀트의 두 가지 λ‹€λ₯Έ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜κ³  λ‘˜ 닀에 λŒ€ν•΄ SSL을 원할 λ•Œ:

두 호슀트 이름과 μΌμΉ˜ν•˜λŠ” 두 개의 SSL μΈμ¦μ„œ(ν˜„μž¬ 이 역할은 μˆ˜ν–‰ν•˜μ§€ μ•ŠμŒ)κ°€ ν•„μš”ν•˜κ±°λ‚˜ SSL 호슀트 이름 검사(및 IP μ‚¬μš©) λ˜λŠ” SSL을 λͺ¨λ‘ ν•¨κ»˜ λ•λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ‹œλ‚˜λ¦¬μ˜€μ—μ„œ 이 리포지토리λ₯Ό μ–΄λ–»κ²Œ μ‚¬μš©ν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ?

λ‹€μŒ 릴리슀의 λ¬Έμ„œμ— 청취자 ν•­λͺ©μ„ μΆ”κ°€ν•˜κ³  μ§€κΈˆ νŽΈμ§‘ μž‘μ—…μ„ ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€!

쒋은 질문! λ”°λΌμ„œ ν˜ΈμŠ€νŠΈμ— ν‚€ μ €μž₯μ†Œλ₯Ό λ‘λŠ” μ„Έ 가지 방법이 μžˆμŠ΅λ‹ˆλ‹€.

  1. μžμ‹ μ˜ μΈμ¦μ„œλ₯Ό 톡과
  2. μžμ‹ μ˜ ν‚€ μ €μž₯μ†Œ 전달
  3. 당신을 μœ„ν•΄ 그것을 ν•  수 μžˆμŠ΅λ‹ˆλ‹€

1κ³Ό 2의 경우 μ—¬λŸ¬ SAN ν™•μž₯으둜 μΈμ¦μ„œλ₯Ό 전달할 수 μžˆμŠ΅λ‹ˆλ‹€.

3번의 경우 호슀트 이름 λͺ©λ‘μ„ μžλ™ μƒμ„±λœ μΈμ¦μ„œμ— μ „λ‹¬ν•˜λŠ” μ•½κ°„μ˜ κΈ°λŠ₯을 μ‹€μ œλ‘œ μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.
https://github.com/confluentinc/cp-ansible/blob/5.5.0-post/roles/confluent.kafka_broker/tasks/main.yml#L39

그런 λ‹€μŒ ν•΄λ‹Ή 호슀트 이름을 SAN ν™•μž₯에 λ„£μŠ΅λ‹ˆλ‹€.
https://github.com/confluentinc/cp-ansible/blob/5.5.0-post/roles/confluent.ssl/tasks/self_signed_certs.yml#L36

λ‹€μŒμ€ cert_extension ν•„ν„°μž…λ‹ˆλ‹€(돌이켜보면 쑰인 ν•„ν„°κ°€ μ—¬κΈ°μ—μ„œ μž‘λ™ν–ˆμ„ κ²ƒμž…λ‹ˆλ‹€).
https://github.com/confluentinc/cp-ansible/blob/5.5.0-post/filter_plugins/filters.py#L56

κ·ΈλŸ¬λ‚˜ μ§€κΈˆ μ€‘μš”ν•œ 것은 cp-ansible이 μ—¬λŸ¬ ν‚€ μ €μž₯μ†Œλ₯Ό μ²˜λ¦¬ν•  수 μ—†λ‹€λŠ” μ μž…λ‹ˆλ‹€.

ꡉμž₯ν•©λ‹ˆλ‹€ - μ—…λ°μ΄νŠΈλœ λ¬Έμ„œλ₯Ό κΈ°λŒ€ν•©λ‹ˆλ‹€!
그리고 μƒμ„Έν•œ 닡변에 κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€. 자체 μ„œλͺ…λœ μ½”λ“œλŠ” 맀우 ν›Œλ₯­ν•©λ‹ˆλ‹€!
μ›μΉ™μ μœΌλ‘œ 닀쀑 ν‚€ μ €μž₯μ†Œ κΈ°λŠ₯에 관심이 μžˆμŠ΅λ‹ˆκΉŒ?
μ–΄μ¨Œλ“  각 μˆ˜μ‹ κΈ°μ— λŒ€ν•΄ λ…λ¦½μ μœΌλ‘œ SSL을 μ„€μ •ν•˜κΈ° λ•Œλ¬Έμ— κ΅¬ν˜„ν•˜κΈ°κ°€ λ„ˆλ¬΄ 어렡지 μ•Šμ•„μ•Ό ν•©λ‹ˆλ‹€.
μ•„λ‹ˆλ©΄ μ‚¬μš©μžκ°€ μžμ‹ μ˜ μΈμ¦μ„œμ— λŒ€ν•œ SAN을 μ •μ˜ν•˜λ„λ‘ ν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ?

Ya 자체 μ„œλͺ…ν•œ 것은 λ©‹μ§€μ§€λ§Œ μ‚¬λžŒλ“€μ΄ 데λͺ¨λ₯Ό μ œμ™Έν•˜κ³  μ‹€μ œλ‘œ μ‚¬μš©ν•˜λŠ”μ§€ κΆκΈˆν•©λ‹ˆλ‹€.

기술적으둜 호슀트 이름당 ν•˜λ‚˜μ”© μžˆμ„ 수 μžˆλŠ” 단일 ν‚€ μ €μž₯μ†Œ/μ‹ λ’° μ €μž₯μ†Œ μ ‘κ·Ό 방식을 μ„ ν˜Έν•©λ‹ˆλ‹€.

ν•˜λ‚˜μ˜ ν‚€ μ €μž₯μ†Œ μ•ˆμ— λ‹€μŒμ„ κ°€μ§ˆ 수 있기 λ•Œλ¬Έμ— λ³΅μž‘ν•΄μ§‘λ‹ˆλ‹€.

  • SAN에 μ—¬λŸ¬ 호슀트 이름이 μžˆλŠ” μΈμ¦μ„œ
  • λ˜λŠ” 각각 DNAME에 호슀트 이름이 μžˆλŠ” μ—¬λŸ¬ μΈμ¦μ„œ
    이 λ•Œλ¬Έμ— ν•˜λ‚˜μ˜ ν‚€ μ €μž₯μ†Œλ₯Ό μˆ˜ν–‰ν•˜λŠ” 것이 κ°€μž₯ μ’‹λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

λ‹Ήμ‹ μ˜ 생각은 λ¬΄μ—‡μž…λ‹ˆκΉŒ?

ν•˜ - 이제 μ»¨λ³Όλ£¨μ…˜μ„ 뢈러였고 μžˆμŠ΅λ‹ˆλ‹€.생각:
λ‚˜λŠ” μ‹€μ œλ‘œ μ—¬λŸ¬ ν‚€ μ €μž₯μ†Œλ₯Ό μ°Ύκ³  μžˆμ—ˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ λ³΅μž‘μ„±μ€ μ‹€μ œλ‘œ SANκ³Ό ν•˜λ‚˜μ˜ ν‚€ μ €μž₯μ†Œλ₯Ό μ°¬μ„±ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 이것은 λ‚΄ 즉ν₯적인 λŒ€λ‹΅μΌ λΏμž…λ‹ˆλ‹€. λ‚˜λŠ” 이것을 쑰금 더 생각해 λ³Ό κ²ƒμž…λ‹ˆλ‹€.

λ‚˜λŠ” 였늘 "야생"μ—μ„œ μ•„μ£Ό 쒋은 해결책을 λ³΄μ•˜μŠ΅λ‹ˆλ‹€.

μ™ΈλΆ€ μž₯μΉ˜μ™€ 호슀트 이름이 λ™μΌν•œ λ‚΄λΆ€ μž₯μΉ˜μ— λŒ€ν•œ kafka-brokers에 /etc/hosts ν•­λͺ© 배포.

kafka μš”μ²­μ΄ "λ‚΄λΆ€"μ—μ„œ μ˜€λŠ” 경우 etc/hosts ν•­λͺ©μ„ μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
κ·ΈλŸ¬λ‚˜ μ™ΈλΆ€ 호슀트 이름을 μ‚¬μš©ν•˜μ—¬ "λ‚΄λΆ€" μˆ˜μ‹ κΈ°λ₯Ό λŒ€μƒμœΌλ‘œ ν•˜λ―€λ‘œ μΈμ¦μ„œ 확인이 μž‘λ™ν•©λ‹ˆλ‹€.
이것이 합법적인 일반적인 해결책이 될 수 μžˆλŠ”μ§€ κΆκΈˆν•©λ‹ˆλ‹€.

@Fobhep 이것은 λͺ‡ λ…„ λ™μ•ˆ ν”„λ‘œλ•μ…˜μ—μ„œ μ‚¬μš©ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 이것은 λ©€ν‹°ν™ˆ ν™˜κ²½μ—μ„œ SASL을 μ„€μ •ν•˜λ €λŠ” κ²½μš°μ— μ‹€μ§ˆμ μœΌλ‘œ ν•„μˆ˜μž…λ‹ˆλ‹€.

@jrevilled ν”Όλ“œλ°± μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.
μ–΄μ©Œλ©΄ μš°λ¦¬λŠ” κ·Έ ν”Œλ ˆμ΄λΆλ„ κ·Έλ ‡κ²Œ ν•˜λ„λ‘ ν•΄μ•Ό ν•©λ‹ˆλ‹€.

@Fobhep 이것을 κ΅¬ν˜„ν•΄μ•Ό ν•˜λŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 특히 Kafka에 직접적인 영ν–₯을 λ―ΈμΉ˜μ§€ μ•ŠλŠ” ν•œ OS μˆ˜μ •μ„ μ΅œμ†Œν™”ν•˜λ €κ³  ν•©λ‹ˆλ‹€(예: μ—΄λ¦° 파일 μ œν•œ). 이것을 λ©€ν‹°ν™ˆ ν™˜κ²½μ— λŒ€ν•œ 잠재적 μ†”λ£¨μ…˜μœΌλ‘œ λ¬Έμ„œν™”ν•˜λŠ” 것이 합리적일 수 μžˆμ§€λ§Œ μ‚¬μš©μžλ₯Ό λŒ€μ‹ ν•˜μ—¬ 호슀트 νŒŒμΌμ„ μˆ˜μ •ν•˜λŠ” 것은 μœ„ν—˜ν•˜κ³  κ°€μΉ˜κ°€ μΆ©λΆ„ν•˜μ§€ μ•Šμ€ 것 κ°™μŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 이 λ§ˆμ§€λ§‰ μ μ—μ„œ 잘λͺ»λœ κ²ƒμœΌλ‘œ 판λͺ…λ˜μ–΄ κΈ°μ©λ‹ˆλ‹€.

@JumaX κ³΅μ •ν•œ μš”μ  - λ¬Έμ„œν™”λŠ” μ•„λ§ˆλ„ 쒋은 생각일 κ²ƒμž…λ‹ˆλ‹€.
그것을 κ΅¬ν˜„ν•˜λŠ” 것은 λ„ˆλ¬΄ 멀리 갈 κ²ƒμž…λ‹ˆλ‹€. λ™μ˜ν•©λ‹ˆλ‹€.
Imho μš°λ¦¬λŠ” 이것을 닫을 수 μžˆμŠ΅λ‹ˆλ‹€ :)

@Fobhep 이제 6.0 λ¦΄λ¦¬μŠ€μ—μ„œ ips/hostname을 λ§€ν•‘ν•˜λŠ” 방법을 보여주기 μœ„ν•΄ hosts_example.yml이 μ—…λ°μ΄νŠΈλ˜μ—ˆμŠ΅λ‹ˆλ‹€. ν•΄κ²°λœ λŒ€λ‘œ μ’…λ£Œν•©λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰