Awx-operator: 관리 λ©”λ‰΄μ—μ„œ μΈμŠ€ν„΄μŠ€ 그룹에 μ•‘μ„ΈμŠ€ν•  수 μ—†μŒ

에 λ§Œλ“  2021λ…„ 04μ›” 30일  Β·  11μ½”λ©˜νŠΈ  Β·  좜처: ansible/awx-operator

μ•ˆλ…•,
openshift 4.6.13에 awx-operatorλ₯Ό μ„€μΉ˜ν–ˆμŠ΅λ‹ˆλ‹€. "μΈμŠ€ν„΄μŠ€ κ·Έλ£Ή"에 μ•‘μ„ΈμŠ€ν•˜λ €κ³  ν•  λ•Œ λΈŒλΌμš°μ €μ— 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

λ¬Έμ œκ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€ ...
이 μ½˜ν…μΈ λ₯Ό λ‘œλ“œν•˜λŠ” 쀑에 였λ₯˜κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€. λŒ€μ‹œλ³΄λ“œλ‘œ λŒμ•„κ°‘λ‹ˆλ‹€.
세뢀정보 >>>μ˜΅μ…˜ /api/v2/instance_groups/ 500μ„œλ²„ 였λ₯˜κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€.

"awx" ν¬λ“œμ—μ„œ 둜그λ₯Ό ν™•μΈν•˜λ©΄ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

2021-04-30 04:42:58,023 INFO [8da8604176834ab29675faf0f1f4ea61] awx.analytics.performance μš”μ²­:, 응닡 μ‹œκ°„: 0.213초
10.131.2.1 - - [30/Apr/2021:04:42:58 +0000] "GET /api/v2/config/ HTTP/1.1" 200 2002 "http://awx.apps.ocp.domain/" " Mozilla/5.0(Windows NT 10.0, Win64, x64) AppleWebKit/537.36(Gecko와 같은 KHTML) Chrome/90.0.4430.85 Safari/537.36" "172.20.27.100"
[pid: 20212|app: 0|req: 481/8212] 10.131.2.1 () {64 vars in 2951 bytes} [Fri Apr 30 04:42:57 2021] GET /api/v2/config/ => μƒμ„±λœ 2002 217λ°€λ¦¬μ΄ˆμ˜ λ°”μ΄νŠΈ(HTTP/1.1 200) 584λ°”μ΄νŠΈμ˜ 헀더 14개(μ½”μ–΄ 0의 μŠ€μœ„μΉ˜ 1개)
2021-04-30 04:42:58,088 INFO [6901c7e48f1a4054bf60ae8d0740f9d7] awx.analytics.performance μš”μ²­:, 응닡 μ‹œκ°„: 0.288초
10.131.2.1 - - [30/Apr/2021:04:42:58 +0000] "GET /api/v2/instance_groups/?order_by=name&page=1&page_size=20 HTTP/1.1" 200 737 "http://awx. apps.ocp.domain/" "Mozilla/5.0(Windows NT 10.0, Win64, x64) AppleWebKit/537.36(Gecko와 같은 KHTML) Chrome/90.0.4430.85 Safari/537.36" "172.20.27.100"
[pid: 25187|app: 0|req: 143/8213] 10.131.2.1 () {64 vars in 3037 bytes} [Fri Apr 30 04:42:57 2021] GET /api/v2/instance_groups/?order_by= =1&page_size=20 => 290λ°€λ¦¬μ΄ˆμ— 737λ°”μ΄νŠΈ 생성(HTTP/1.1 200) 575λ°”μ΄νŠΈμ— 14개의 헀더(μ½”μ–΄ 0μ—μ„œ 1개 μ „ν™˜)
2021-04-30 04:42:58,322 INFO [3a1669b00856485e9d3f4a1527995ef2] awx.analytics.performance μš”μ²­:, 응닡 μ‹œκ°„: 0.455초
[pid: 17827|app: 0|req: 783/8214] 10.131.2.1 () {64 vars in 2942 bytes} [Fri Apr 30 04:42:57 2021] GET /api/v2/me/ => μƒμ„±λœ 955 457λ°€λ¦¬μ΄ˆμ˜ λ°”μ΄νŠΈ(HTTP/1.1 200) 569λ°”μ΄νŠΈμ˜ 14개 헀더(μ½”μ–΄ 0의 μŠ€μœ„μΉ˜ 1개)
10.131.2.1 - - [30/Apr/2021:04:42:58 +0000] "GET /api/v2/me/ HTTP/1.1" 200 955 " http://awx.apps.ocp.domain/ " " Mozilla/5.0(Windows NT 10.0, Win64, x64) AppleWebKit/537.36(Gecko와 같은 KHTML) Chrome/90.0.4430.85 Safari/537.36" "172.20.27.100"
2021-04-30 04:42:58,368 였λ₯˜ [9665f945a9954d26be025d98d85c0ea6] django.request λ‚΄λΆ€ μ„œλ²„ 였λ₯˜: /api/v2/instance_groups/
역좔적(κ°€μž₯ 졜근 호좜 λ§ˆμ§€λ§‰):
파일 "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/django/core/handlers/exception.py", 34ν–‰, λ‚΄λΆ€
응닡 = get_response(μš”μ²­)
파일 "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/django/core/handlers/base.py", 115ν–‰, _get_response
응닡 = self.process_exception_by_middleware(e, μš”μ²­)
파일 "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/django/core/handlers/base.py", 113ν–‰, _get_response
응닡 = wrap_callback(μš”μ²­, callback_args, * callback_kwargs)
파일 "/usr/lib64/python3.8/contextlib.py", 75ν–‰, λ‚΄λΆ€
λ°˜ν™˜ ν•¨μˆ˜( 인수, * kwds)
Wrapped_view의 파일 "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/django/views/decorators/csrf.py", 54ν–‰
return view_func( 인수, * kwargs)
파일 "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/django/views/generic/base.py", 71ν–‰, 보기
return self.dispatch(μš”μ²­, 인수, * kwargs)
파일 "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/awx/api/generics.py", 324ν–‰, λ°œμ†‘ 쀑
return super(APIView, self).dispatch(μš”μ²­, 인수, * kwargs)
파일 "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/rest_framework/views.py", 509ν–‰, λ°œμ†‘ 쀑
응닡 = self.handle_exception(exc)
파일 "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/rest_framework/views.py", 469ν–‰, ν•Έλ“€_μ˜ˆμ™Έ
self.raise_uncaught_exception(exc)
"/var/lib/awx/venv/awx/lib64/python3.8/site-packages/rest_framework/views.py" 파일, 480ν–‰, raise_uncaught_exception
excλ₯Ό μ˜¬λ¦¬λ‹€
파일 "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/rest_framework/views.py", 506ν–‰, λ°œμ†‘ 쀑
응닡 = ν•Έλ“€λŸ¬(μš”μ²­, 인수, * kwargs)
파일 "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/rest_framework/views.py", 520ν–‰, μ˜΅μ…˜
데이터 = self.metadata_class().determine_metadata(μš”μ²­, 자체)
파일 "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/awx/api/metadata.py", 245ν–‰, modify_metadata
메타데이터 = super(메타데이터, 자체).determine_metadata(μš”μ²­, 보기)
파일 "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/rest_framework/metadata.py", 68ν–‰, modify_metadata
action = self.determine_actions(μš”μ²­, 보기)
파일 "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/awx/api/metadata.py", 209ν–‰, modify_actions
메타['κΈ°λ³Έ'] = AWXReceptorJob().pod_definition
파일 "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/awx/main/tasks.py", 3081ν–‰, pod_definition
default_pod_spec = get_default_pod_spec()
get_default_pod_specμ—μ„œ 파일 "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/awx/main/utils/execution_environments.py", 21ν–‰
"이미지": get_default_execution_environment().image,
AttributeError: 'NoneType' κ°œμ²΄μ— '이미지' 속성이 μ—†μŠ΅λ‹ˆλ‹€.
2021-04-30 04:42:58,368 였λ₯˜ [9665f945a9954d26be025d98d85c0ea6] django.request λ‚΄λΆ€ μ„œλ²„ 였λ₯˜: /api/v2/instance_groups/
역좔적(κ°€μž₯ 졜근 호좜 λ§ˆμ§€λ§‰):
파일 "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/django/core/handlers/exception.py", 34ν–‰, λ‚΄λΆ€
응닡 = get_response(μš”μ²­)
파일 "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/django/core/handlers/base.py", 115ν–‰, _get_response
응닡 = self.process_exception_by_middleware(e, μš”μ²­)
파일 "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/django/core/handlers/base.py", 113ν–‰, _get_response
응닡 = wrap_callback(μš”μ²­, callback_args, * callback_kwargs)
파일 "/usr/lib64/python3.8/contextlib.py", 75ν–‰, λ‚΄λΆ€
λ°˜ν™˜ ν•¨μˆ˜( 인수, * kwds)
Wrapped_view의 파일 "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/django/views/decorators/csrf.py", 54ν–‰
return view_func( 인수, * kwargs)
파일 "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/django/views/generic/base.py", 71ν–‰, 보기
return self.dispatch(μš”μ²­, 인수, * kwargs)
파일 "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/awx/api/generics.py", 324ν–‰, λ°œμ†‘ 쀑
return super(APIView, self).dispatch(μš”μ²­, 인수, * kwargs)
파일 "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/rest_framework/views.py", 509ν–‰, λ°œμ†‘ 쀑
응닡 = self.handle_exception(exc)
파일 "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/rest_framework/views.py", 469ν–‰, ν•Έλ“€_μ˜ˆμ™Έ
self.raise_uncaught_exception(exc)
"/var/lib/awx/venv/awx/lib64/python3.8/site-packages/rest_framework/views.py" 파일, 480ν–‰, raise_uncaught_exception
excλ₯Ό μ˜¬λ¦¬λ‹€
파일 "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/rest_framework/views.py", 506ν–‰, λ°œμ†‘ 쀑
응닡 = ν•Έλ“€λŸ¬(μš”μ²­, 인수, * kwargs)
파일 "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/rest_framework/views.py", 520ν–‰, μ˜΅μ…˜
데이터 = self.metadata_class().determine_metadata(μš”μ²­, 자체)
파일 "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/awx/api/metadata.py", 245ν–‰, modify_metadata
메타데이터 = super(메타데이터, 자체).determine_metadata(μš”μ²­, 보기)
파일 "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/rest_framework/metadata.py", 68ν–‰, modify_metadata
action = self.determine_actions(μš”μ²­, 보기)
파일 "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/awx/api/metadata.py", 209ν–‰, modify_actions
메타['κΈ°λ³Έ'] = AWXReceptorJob().pod_definition
파일 "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/awx/main/tasks.py", 3081ν–‰, pod_definition
default_pod_spec = get_default_pod_spec()
get_default_pod_specμ—μ„œ 파일 "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/awx/main/utils/execution_environments.py", 21ν–‰
"이미지": get_default_execution_environment().image,
AttributeError: 'NoneType' κ°œμ²΄μ— '이미지' 속성이 μ—†μŠ΅λ‹ˆλ‹€.
2021-04-30 04:42:58,372 INFO [9665f945a9954d26be025d98d85c0ea6] awx.analytics.performance μš”μ²­:, 응닡 μ‹œκ°„: 0.568초
[pid: 15951|μ•±: 0|req: 683/8215] 10.131.2.1 () {66 vars in 3017 bytes} [Fri Apr 30 04:42:57 2021] OPTIONS /api/v2/instance_41s/ => generated 570λ°€λ¦¬μ΄ˆμ˜ λ°”μ΄νŠΈ(HTTP/1.1 500) 309λ°”μ΄νŠΈμ˜ 헀더 8개(μ½”μ–΄ 0의 μŠ€μœ„μΉ˜ 1개)
10.131.2.1 - - [30/Apr/2021:04:42:58 +0000] "μ˜΅μ…˜ /api/v2/instance_groups/ HTTP/1.1" 500 41 " http://awx.apps.ocp.domain/ " " Mozilla/5.0(Windows NT 10.0, Win64, x64) AppleWebKit/537.36(Gecko와 같은 KHTML) Chrome/90.0.4430.85 Safari/537.36" "172.20.27.100"
κ²°κ³Ό 2
OKREADY

image

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

저도 이것을 κ²½ν—˜ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

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

저도 이것을 κ²½ν—˜ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

여기에 2개의 버그가 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. 첫 λ²ˆμ§ΈλŠ” μ½”λ“œκ°€ ꡬ성 이름 DEFAULT_EXECUTION_ENVIRONMENT 을 μ°Ύκ³  μžˆμ§€λ§Œ awx-operatorκ°€ DEFAULT_EXECUTION_ENVIRONMENTS λ₯Ό μƒμ„±ν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.
https://github.com/ansible/awx/blob/f5c176701b0551e179bb4ef663b57fd3a6ba6f0a/awx/main/utils/execution_environments.py#L7
https://github.com/ansible/awx-operator/blob/8656ee1a1dc9593b2fe9615b390aaad3f852a4f8/roles/installer/templates/execution_environments.py.j2#L1

두 λ²ˆμ§ΈλŠ” get_default_execution_environment() κ°€ None $λ₯Ό λ°˜ν™˜ν•  λ•Œ 더 λ‚˜μ€ μœ ν˜•/였λ₯˜ 검사가 ν•„μš”ν•˜λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.
https://github.com/ansible/awx/blob/f5c176701b0551e179bb4ef663b57fd3a6ba6f0a/awx/main/utils/execution_environments.py#L21

이것은 μ΄μƒμ μ΄μ§€λŠ” μ•Šμ§€λ§Œ DBμ—μ„œ 직접 managed_by_tower = 't' λ₯Ό μ„€μ •ν•˜μ—¬ 이 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€.

awx=> update main_executionenvironment set managed_by_tower = 't' where id = 1;

λ™μΌν•œ λ¬Έμ œκ°€ μžˆμ—ˆκ³  μ—¬κΈ° λ˜λŠ” awx ghμ—μ„œ 문제λ₯Ό λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€.

tower_create_preload_data: 

사싀이 ν•„μš”ν•©λ‹ˆλ‹€.

κ³Όκ±°μ—λŠ” 데λͺ¨ ν…œν”Œλ¦Ώμ„ 생성할 것이기 λ•Œλ¬Έμ— false둜 μœ μ§€ν–ˆμ§€λ§Œ 더 이상 κ·Έλ ‡κ²Œ ν•˜μ§€ μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

@dacosta89 κ°μ‚¬ν•©λ‹ˆλ‹€!

@endriu0 μ–΄λ””μ„œ μ–΄λ–»κ²Œ "true"둜 λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆκΉŒ? 감사 ν•΄μš”!

@eniomachado λŠ” μ„€μΉ˜ 방법에 따라 λ‹€λ₯΄μ§€λ§Œ μ—°μ‚°μžλ₯Ό μ„€μΉ˜ν•œ λ‹€μŒ μž¬μ •μ˜ 없이 awx yaml νŒŒμΌμ—μ„œ kubectl을 μ‚¬μš©ν–ˆλ‹€κ³  κ°€μ •ν•©λ‹ˆλ‹€. κ·Έλ ‡λ‹€λ©΄ my-awx.yaml에 사양 μ•„λž˜μ— 이 쀄을 μΆ”κ°€ν•˜κ³  λ‹€μ‹œ μ μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€.

tower_create_preload_data: μ°Έ

그런 λ‹€μŒ kubectl apply -f my-awx.yaml

my-awx.yaml 파일의 예:

---
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
  name: funhouse
spec:
...
  tower_create_preload_data: true

문제 발견: https://github.com/ansible/awx/issues/9851

μ•ˆλ…•ν•˜μ„Έμš” @endriu0 이 μ†”λ£¨μ…˜μ€ μ €μ—κ²Œ νš¨κ³Όμ μž…λ‹ˆλ‹€. 도움을 μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.

@dacosta89λ‹˜ 이 "tower_create_preload_data: true"에 λŒ€ν•΄ @endriu0 이 λ§ν•œ λ‚΄μš©μ΄ 더 λ‚˜μ€ μˆ˜μ •μ΄ 될 κ²ƒμž…λ‹ˆλ‹€.

image

μ•ˆλ…• λͺ¨λ‘. https://github.com/ansible/awx/issues/9851 μ—μ„œ 이λ₯Ό 좔적해 λ³΄κ² μŠ΅λ‹ˆλ‹€.

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