- 2023/04/18 작성
awx에서 extra-vars가 70개가 넘어가게 되면 웹페이지에서 하얗게 화면만 나오고 다음 작업으로 넘어가지 않는 문제가 있었습니다.
extra vars의 갯수가 일정 수준을 넘어가게 되면 이런 증상이 나올 수 있다는 내용을 보았고, 원인은 브라우저의 제한된 자원 혹은 세션이 짧게 설정되어 있거나 혹은 extra vars의 갯수가 설정해놓은 것 보다 너무 많이 설정한 경우가 있습니다.
ansible은 Python을 사용하는데 extra-vars의 크기가 딕셔너리 크기 제한에 걸리게 되면 동작을 하지 않을 수 있습니다. (하지만 extra vars 고작 70개 넣었다고 안되는거는 말이 안되는거 같다고 생각은 듭니다..)
혹시 awx가 자원을 많이 사용하고 있을까 해서 job을 돌리는 시점에 top을 찍어서 cpu, memory 사용을 확인해보았는데 그런 상황은 아닌걸로 확인이 되었습니다. ( 많이 사용했으면 모니터링 알람도 왔을 거라고 생각합니다 )
해결할 수 있는 여러 방법들을 확인해보았습니다.
- 파일로 넘겨주는 방법
- 파일로 변수를 넘겨주려면 서버에 직접 접속해서 파일을 만들거나 또는 파일을 만들기 위한 extra vars를 넘겨줘야 됩니다. 그럼 어차피 변수를 넘겨주는 건 같으니까 패스..
- 만약 파일로 변수를 넘겨주고 싶으면 docker exec -it awx_web bash로 awx_web 컨테이너에 접근해서 /var/lib/awx 내부에 디렉토리 하나 만들고 거기에다가 생성하면 참조 가능
- survey로 넘겨주는 방법
- survey 기능을 이용해서 사용자에게 변수를 입력받아 넘겨줄 수 있음. (이걸 이용하면 문제 해결이 가능하다 해서 확인)
- survey 기능을 사용하더라도 templates의 variables에 입력하는 것과 동일하게 extra_vars에 들어가서 딱히 해결 방법은 아닌 걸로 확인 됨
- 또한, 이걸 이용하면 yaml이나 json 형식으로 넣는 것이 아닌 체크박스나 text 형태로 입력을 받는거기 때문에 key,value가 아니라 그냥 쌩 text로 들어가서 다 분리하는 과정 필요
- awx 쪽 설정 변경하는 방법
- session time의 문제인 경우 : /etc/tower/settings.py에서 SESSION_COOKIE_AGE=1800 (1800초를 의미) 로 세션 시간을 늘려줌. 그 이후 docker restart
- resource 양의 문제인 경우 : awx의 docker-compose.yml에 resource 부분 수정
위 내용들을 적용해보았을 때 별 차이가 없었고 extra_vars의 제한을 늘려주는 방법도 사용했는데 별 소용이 없었습니다.
혹시나 해서, 웹 페이지의 로그를 개발자 도구로 확인해보니 아래와 같은 오류가 발생하는 것을 확인하였습니다.
extra-vars의 갯수 제한의 문제가 아니라 key값이 중복되어 발생한 문제인 것으로 확인되었고, 서버들의 목록을 확인해보니 key 값이 중복된 건들이 있는 것으로 확인되었습니다.
awx 웹페이지에서 하얀 화면에서 넘어가지 않는 문제가 발생하는 경우 중복된 key값이 있는지 확인해보시면 좋을 것 같습니다. ㅎ
extra-vars의 갯수는 서버가 14000대 정도 되어도 다음 페이지로 넘어갈 때 하얀 화면에서 행걸려서 더 넘어가지 않거나 이런 부분은 발생하지 않는 것으로 확인됩니다.
'인프라 툴' 카테고리의 다른 글
[Ansible] too long for unix domain socket 에러 (1) | 2025.02.21 |
---|