Awx-operator: extra_settings๋Š” ๋ฌธ์ž์—ด ๊ฐ’ ์ฃผ์œ„์— ๋”ฐ์˜ดํ‘œ๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2021๋…„ 08์›” 25์ผ  ยท  5์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: ansible/awx-operator

๋ฌธ์ œ ์œ ํ˜•
  • ๋ฒ„๊ทธ ์‹ ๊ณ 
์š”์•ฝ

extra_settings๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋”ฐ์˜ดํ‘œ๋กœ ๋ฌถ์ธ ๋ฌธ์ž์—ด ๊ฐ’์„ ํฌํ•จํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ AWX ์„ค์ • ํ‚ค๋กœ ๋ฌธ์ž์—ด ๊ฐ’์„ ์„ค์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ํ™˜๊ฒฝ
  • AWX ๋ฒ„์ „: 19.2.2
  • ์šด์˜์ž ๋ฒ„์ „: 0.13.0
  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋ฒ„์ „: 1.20
  • AWX ์„ค์น˜ ๋ฐฉ๋ฒ•: awx-operator๋ฅผ ์‚ฌ์šฉํ•œ kubernetes ๊ธฐ๋ฐ˜ ์„ค์น˜
๋ฒˆ์‹ ๋‹จ๊ณ„

์—ฐ์‚ฐ์ž ํ…œํ”Œ๋ฆฟ์—์„œ extra_settings ์•„๋ž˜์— ์„ค์ •,

spec:
    extra_settings:
      - setting: AUTH_LDAP_BIND_DN
        value: "cn=admin,dc=example,dc=com"

ํ…œํ”Œ๋ฆฟ์„ ์ ์šฉํ•˜์—ฌ AWX๋ฅผ kubenetes ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.
kubectl ์ ์šฉ -f-N

์˜ˆ์ƒ ๊ฒฐ๊ณผ

์šด์˜์ž๋Š” extra_settings๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜์—ฌ /etc/tower/settings.py์— ์•„๋ž˜ ์ค„์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
AUTH_LDAP_BIND_DN = "cn=admin,dc=example,dc=com"

๊ทธ๋ฆฌ๊ณ  AWX ์ปจํ…Œ์ด๋„ˆ๋Š” ์ด ํ‚ค๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ์˜ค๋ฅ˜ ์—†์ด ์ž˜ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ ๊ฒฐ๊ณผ

์—ฐ์‚ฐ์ž๋Š” DN ๋ฌธ์ž์—ด ์ฃผ์œ„์— ๋”ฐ์˜ดํ‘œ๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์•„๋ž˜ ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ ํŒŒ์ด์ฌ ์‹คํ–‰์ด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

ํŒŒ์ผ "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/awx/asgi.py", 12ํ–‰,
prepare_env() # NOQA
ํŒŒ์ผ "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/awx/__init__.py", 103ํ–‰, prepare_env
์„ค์ •์ด ์•„๋‹Œ ๊ฒฝ์šฐ.DEBUG: # pragma: ๋ฎ๊ฐœ ์—†์Œ
ํŒŒ์ผ "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/django/conf/__init__.py", 79ํ–‰, __getattr__
self._setup(์ด๋ฆ„)
ํŒŒ์ผ "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/django/conf/__init__.py", 66ํ–‰, _setup
self._wrapped = ์„ค์ •(settings_module)
ํŒŒ์ผ "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/django/conf/__init__.py", 157ํ–‰, __init__
๋ชจ๋“œ = importlib.import_module(self.SETTINGS_MODULE)
import_module์˜ ํŒŒ์ผ "/usr/lib64/python3.8/importlib/__init__.py", 127ํ–‰
return _bootstrap._gcd_import(์ด๋ฆ„[๋ ˆ๋ฒจ:], ํŒจํ‚ค์ง€, ๋ ˆ๋ฒจ)
ํŒŒ์ผ "", 1014ํ–‰, _gcd_import
ํŒŒ์ผ "", 991ํ–‰, _find_and_load
ํŒŒ์ผ "", 975ํ–‰, _find_and_load_unlocked
ํŒŒ์ผ "", 671ํ–‰, _load_unlocked
ํŒŒ์ผ "", 783ํ–‰, exec_module
ํŒŒ์ผ "", 219ํ–‰, _call_with_frames_removed
ํŒŒ์ผ "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/awx/settings/production.py", 62ํ–‰,
include(settings_file, optional(settings_files), scope=locals())
ํŒŒ์ผ "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/split_settings/tools.py", 107ํ–‰, ํฌํ•จ
exec(compiled_code, scope) # noqa: S102, WPS421
ํŒŒ์ผ "/etc/tower/settings.py", 75ํ–‰,
AUTH_LDAP_BIND_DN = cn=admin,dc=example,dc=com
NameError: 'com' ์ด๋ฆ„์ด ์ •์˜๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ์ •๋ณด
AWX ์šด์˜์ž ๋กœ๊ทธ

๊ตฌ์„ฑ ๋งต ํ‰๊ฐ€๊ฐ€ ๋ฌธ์ œ ์—†์ด ์ž˜ ์ง„ํ–‰๋˜๋ฏ€๋กœ ์šด์˜์ž ๋กœ๊ทธ์— ์˜ค๋ฅ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. - https://github.com/ansible/awx-operator/blob/0.13.0/roles/installer/templates/config.yaml.j2#L93

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ด๊ฒƒ์€ #432์˜ ์˜๋„ํ•˜์ง€ ์•Š์€ ๋ถ€์ž‘์šฉ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ฒƒ์ด ์—†๋‹ค๋ฉด ํ˜„์žฌ ์˜ˆ์ œ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋ฌธ์„œ(README)๊ฐ€ ๊ฐ’์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ธ์šฉํ•˜๋„๋ก ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  5 ๋Œ“๊ธ€

์ด๊ฒƒ์€ #432์˜ ์˜๋„ํ•˜์ง€ ์•Š์€ ๋ถ€์ž‘์šฉ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ฒƒ์ด ์—†๋‹ค๋ฉด ํ˜„์žฌ ์˜ˆ์ œ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋ฌธ์„œ(README)๊ฐ€ ๊ฐ’์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ธ์šฉํ•˜๋„๋ก ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

pr ์„ค๋ช…์˜ ์˜ˆ๋Š” ์œ ํšจํ•œ yaml์ด ์•„๋‹Œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํ•  ์ˆ˜ ์žˆ๋Š” ๋” ๋‚˜์€ ์œ ํ˜• ๊ฒ€์‚ฌ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

_issue_ ์„ค๋ช…์˜ ์˜ˆ๋ฅผ ๋ง์”€ํ•˜์‹œ๋Š” ๊ฑด๊ฐ€์š”? ์˜ˆ, ๊ฑฐ๊ธฐ์— ์˜คํƒ€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€ `๊ฐ€ ์—†์œผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

spec:
    extra_settings:
      - setting: AUTH_LDAP_BIND_DN
        value: "cn=admin,dc=example,dc=com"

๊ธฐ๋ก์„ ์œ„ํ•ด YAML ๋ธ”๋ก ์ธ์šฉ์„ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

spec:
    extra_settings:
      - setting: AUTH_LDAP_BIND_DN
        value: >-
          "cn=admin,dc=example,dc=com"

...์ฒซ ๋ฒˆ์งธ ์˜ˆ์˜ ๊ฐ’์ด ์ด๋ฏธ ๋ฌธ์ž์—ด์ด๊ธฐ ๋•Œ๋ฌธ์— ์ง๊ด€์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ์˜ดํ‘œ๋ฅผ ์ธ์šฉํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

_issue_ ์„ค๋ช…์˜ ์˜ˆ๋ฅผ ๋ง์”€ํ•˜์‹œ๋Š” ๊ฑด๊ฐ€์š”? ์˜ˆ, ๊ฑฐ๊ธฐ์— ์˜คํƒ€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€ `๊ฐ€ ์—†์œผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

spec:
    extra_settings:
      - setting: AUTH_LDAP_BIND_DN
        value: "cn=admin,dc=example,dc=com"

๊ธฐ๋ก์„ ์œ„ํ•ด YAML ๋ธ”๋ก ์ธ์šฉ์„ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

spec:
    extra_settings:
      - setting: AUTH_LDAP_BIND_DN
        value: >-
          "cn=admin,dc=example,dc=com"

โ€ฆ ์ฒซ ๋ฒˆ์งธ ์˜ˆ์˜ ๊ฐ’์ด ์ด๋ฏธ ๋ฌธ์ž์—ด์ด๊ธฐ ๋•Œ๋ฌธ์— ์ง๊ด€์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ธ์šฉํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

pr ์„ค๋ช…์˜ ์˜ˆ๋Š” ์œ ํšจํ•œ yaml์ด ์•„๋‹Œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํ•  ์ˆ˜ ์žˆ๋Š” ๋” ๋‚˜์€ ์œ ํ˜• ๊ฒ€์‚ฌ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์˜คํƒ€ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค @shanemcd ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

_issue_ ์„ค๋ช…์˜ ์˜ˆ๋ฅผ ๋ง์”€ํ•˜์‹œ๋Š” ๊ฑด๊ฐ€์š”? ์˜ˆ, ๊ฑฐ๊ธฐ์— ์˜คํƒ€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€ `๊ฐ€ ์—†์œผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

spec:
    extra_settings:
      - setting: AUTH_LDAP_BIND_DN
        value: "cn=admin,dc=example,dc=com"

๊ธฐ๋ก์„ ์œ„ํ•ด YAML ๋ธ”๋ก ์ธ์šฉ์„ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

spec:
    extra_settings:
      - setting: AUTH_LDAP_BIND_DN
        value: >-
          "cn=admin,dc=example,dc=com"

...์ฒซ ๋ฒˆ์งธ ์˜ˆ์˜ ๊ฐ’์ด ์ด๋ฏธ ๋ฌธ์ž์—ด์ด๊ธฐ ๋•Œ๋ฌธ์— ์ง๊ด€์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ์˜ดํ‘œ๋ฅผ ์ธ์šฉํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๊ฒช์ง€ ์•Š๋„๋ก ๋‹น๋ถ„๊ฐ„ README๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰