AWX on ARM64 (Raspberry Pi)
6780 단어 RaspberryPiAnsibleawx
소개
Github의 AWX 리포지토리를 보면서 이런 끌어오기 요청이 있음을 알았습니다.
ARM image build support #7607
수중에 Raspberry Pi 4B(4GB판)가 있으므로, 이 위에서 AWX를 움직여 봅니다.
환경
이미지 빌드를 Raspberry Pi로 하면 시간이 걸릴 것 같았기 때문에 AWS의 A1 인스턴스를 이용했습니다.
빌드 환경: Ubuntu Server 20.04 LTS (AWS EC2 a1.xlarge)
실행 환경: Ubuntu Server 20.04 LTS(Raspberry Pi 4B 4GB)+ k3s v1.18.6+k3s1
이미지 빌드
필요한 패키지 설치
$ sudo apt update
$ sudo apt install -y docker.io python3-docker ansible make npm
Docker 서비스 시작
$ sudo systemctl start docker.service
$ sudo systemctl status docker.service
docker 그룹에 사용자 추가
$ sudo gpasswd -a $USER docker
그룹에 추가가 완료되면 한 번 로그아웃한 다음 다시 로그인합니다.
Github에서 clone
13.0.0을 기반으로 ARM 빌드 용 커밋 만 Cherry pick에서 반영합니다.
$ git clone https://github.com/agaffney/awx.git
$ cd ~/awx/
$ git checkout refs/tags/13.0.0
$ git cherry-pick 0b841e6
이대로 빌드에 실패해 버리기 때문에 조금 수정.
npm 종속성 주위에 오류가 발생하기 때문에 npm install을 실행하여 제거합니다.
$ cd ~/awx/awx/ui/
$ npm install
빌드 준비
인벤토리 파일에 Docker 리포지토리에 대한 정보를 쓰면 빌드가 완료된 후 푸시로 넘어갑니다.
이번에는 Gitlab의 리포지토리에 업로드했습니다.
$ cd ~/awx/installer/
$ vi inventory
다음을 추가해 둡니다.
docker_registry=registry.gitlab.com
docker_registry_repository=ussvgr/awx-arm64
docker_registry_username=ussvgr
빌드용 Playbook도 한점 수정해 둡니다.
gather_facts를 true로 변경.
$ vi build.yml
---
- name: Build AWX Docker Images
hosts: all
- gather_facts: false
+ gather_facts: true
roles:
- {role: image_build}
- {role: image_push, when: "docker_registry is defined"}
Docker 이미지 빌드
빌드시에 Docker 레지스트리의 패스워드(이번은 Gitlab)를 옵션으로 주어 실행합니다.
$ ansible-playbook -i inventory -e docker_registry_password=<Gitlabのパスワード> build.yml
a1.xlarge로 대략 40~50분 정도 걸렸습니다.
Raspberry Pi에 설치
Kubernetes(k3s) 환경이 갖추어져 있는 상태로 시작합니다.
Github에서 clone
빌드 환경과 마찬가지로 Cherry pick 해 갑니다.
$ git clone https://github.com/agaffney/awx.git
$ cd ~/awx/
$ git checkout refs/tags/13.0.0
$ git cherry-pick 0b841e6
Inventory 파일 사용자 정의
Kubernetes 환경에 설치하기 위한 설정을 설명합니다.
tower_package_name 에 전항으로 빌드한 이미지의 리포지터리를 기재합니다.
또한 메모리 4GB의 Raspberry Pi에서는 기본 요청 사양으로 시작할 수 없으므로 Inventory 파일에서 사양을 잘라갑니다.
@@ -18,8 +18,8 @@ dockerhub_base=ansible
# openshift_pg_emptydir=True
# Kubernetes Install
-# kubernetes_context=test-cluster
-# kubernetes_namespace=awx
+kubernetes_context=default
+kubernetes_namespace=awx
# Optional Kubernetes Variables
# pg_image_registry=docker.io
# pg_serviceaccount=awx
@@ -27,6 +27,9 @@ dockerhub_base=ansible
# pg_persistence_storageClass=StorageClassName
# pg_cpu_limit=1000
# pg_mem_limit=2
+pg_persistence_storageClass=local-path
+pg_cpu_limit=500
+pg_mem_limit=0.5
# Kubernetes Ingress Configuration
# You can use the variables below to configure Kubernetes Ingress
@@ -56,6 +59,19 @@ dockerhub_base=ansible
# redis_mem_limit=3
# management_cpu_limit=2000
# management_mem_limit=2
+task_cpu_request=500
+task_mem_request=1
+task_cpu_limit=1000
+task_mem_limit=1.5
+web_cpu_request=200
+web_mem_request=0.5
+web_cpu_limit=1000
+web_mem_limit=1
+redis_cpu_request=200
+redis_mem_request=0.5
+redis_cpu_limit=500
+redis_mem_limit=0.5
# Common Docker parameters
awx_task_hostname=awx
@@ -76,7 +92,7 @@ docker_compose_dir="~/.awx/awxcompose"
# docker_registry=172.30.1.1:5000
# docker_registry_repository=awx
# docker_registry_username=developer
+tower_package_name=registry.gitlab.com/ussvgr/awx-arm64/awx
# Set pg_hostname if you have an external postgres server, otherwise
# a new postgres service will be created
(선택 사항) 컨테이너 이미지 사전 다운로드
우치의 환경만일지도 모르지만, 컨테이너 이미지의 배포에 시간이 너무 걸려, 배포용 Playbook의 실행이 타임아웃 에러가 되어 버렸습니다.
아래 명령으로 사전에 다운로드해 두면 원활할지도 모릅니다.
$ sudo k3s ctr images pull registry.gitlab.com/ussvgr/awx-arm64/awx:13.0.0
배포
다음 명령을 실행하여 잠시 기다리고 오류가 발생하지 않으면 OK입니다.
$ ansible-playbook -i inventory install.yml
확인
포트 번호를 확인하고,
$ kubectl get svc -n awx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
awx-postgresql-headless ClusterIP None <none> 5432/TCP 26m
awx-postgresql ClusterIP 10.43.109.78 <none> 5432/TCP 26m
awx-web-svc NodePort 10.43.165.240 <none> 80:32686/TCP 25m
브라우저에서 http://[Raspberry Pi의 IP 주소]: [포트 번호(위의 예라면 32686)]에 액세스하면,
앵글리 감자가 마중 나옵니다.
결론
Raspberry Pi 1대 뿐이라면 자원적으로 허락하지 않지만 어떻게든 움직이려면 움직일 것 같습니다.
소규모 실험 환경 등에는 사용할 수 있는 것이 아닐까요.
빌드가 끝난 Docker 이미지는 여기 로 공개하고 있으므로, 시험하고 싶은 분은 상기의 「Raspberry pi에 인스톨」의 항으로부터 진행해 보세요.
Reference
이 문제에 관하여(AWX on ARM64 (Raspberry Pi)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ussvgr/items/f95d950bf39aa67d0189
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이미지 빌드를 Raspberry Pi로 하면 시간이 걸릴 것 같았기 때문에 AWS의 A1 인스턴스를 이용했습니다.
빌드 환경: Ubuntu Server 20.04 LTS (AWS EC2 a1.xlarge)
실행 환경: Ubuntu Server 20.04 LTS(Raspberry Pi 4B 4GB)+ k3s v1.18.6+k3s1
이미지 빌드
필요한 패키지 설치
$ sudo apt update
$ sudo apt install -y docker.io python3-docker ansible make npm
Docker 서비스 시작
$ sudo systemctl start docker.service
$ sudo systemctl status docker.service
docker 그룹에 사용자 추가
$ sudo gpasswd -a $USER docker
그룹에 추가가 완료되면 한 번 로그아웃한 다음 다시 로그인합니다.
Github에서 clone
13.0.0을 기반으로 ARM 빌드 용 커밋 만 Cherry pick에서 반영합니다.
$ git clone https://github.com/agaffney/awx.git
$ cd ~/awx/
$ git checkout refs/tags/13.0.0
$ git cherry-pick 0b841e6
이대로 빌드에 실패해 버리기 때문에 조금 수정.
npm 종속성 주위에 오류가 발생하기 때문에 npm install을 실행하여 제거합니다.
$ cd ~/awx/awx/ui/
$ npm install
빌드 준비
인벤토리 파일에 Docker 리포지토리에 대한 정보를 쓰면 빌드가 완료된 후 푸시로 넘어갑니다.
이번에는 Gitlab의 리포지토리에 업로드했습니다.
$ cd ~/awx/installer/
$ vi inventory
다음을 추가해 둡니다.
docker_registry=registry.gitlab.com
docker_registry_repository=ussvgr/awx-arm64
docker_registry_username=ussvgr
빌드용 Playbook도 한점 수정해 둡니다.
gather_facts를 true로 변경.
$ vi build.yml
---
- name: Build AWX Docker Images
hosts: all
- gather_facts: false
+ gather_facts: true
roles:
- {role: image_build}
- {role: image_push, when: "docker_registry is defined"}
Docker 이미지 빌드
빌드시에 Docker 레지스트리의 패스워드(이번은 Gitlab)를 옵션으로 주어 실행합니다.
$ ansible-playbook -i inventory -e docker_registry_password=<Gitlabのパスワード> build.yml
a1.xlarge로 대략 40~50분 정도 걸렸습니다.
Raspberry Pi에 설치
Kubernetes(k3s) 환경이 갖추어져 있는 상태로 시작합니다.
Github에서 clone
빌드 환경과 마찬가지로 Cherry pick 해 갑니다.
$ git clone https://github.com/agaffney/awx.git
$ cd ~/awx/
$ git checkout refs/tags/13.0.0
$ git cherry-pick 0b841e6
Inventory 파일 사용자 정의
Kubernetes 환경에 설치하기 위한 설정을 설명합니다.
tower_package_name 에 전항으로 빌드한 이미지의 리포지터리를 기재합니다.
또한 메모리 4GB의 Raspberry Pi에서는 기본 요청 사양으로 시작할 수 없으므로 Inventory 파일에서 사양을 잘라갑니다.
@@ -18,8 +18,8 @@ dockerhub_base=ansible
# openshift_pg_emptydir=True
# Kubernetes Install
-# kubernetes_context=test-cluster
-# kubernetes_namespace=awx
+kubernetes_context=default
+kubernetes_namespace=awx
# Optional Kubernetes Variables
# pg_image_registry=docker.io
# pg_serviceaccount=awx
@@ -27,6 +27,9 @@ dockerhub_base=ansible
# pg_persistence_storageClass=StorageClassName
# pg_cpu_limit=1000
# pg_mem_limit=2
+pg_persistence_storageClass=local-path
+pg_cpu_limit=500
+pg_mem_limit=0.5
# Kubernetes Ingress Configuration
# You can use the variables below to configure Kubernetes Ingress
@@ -56,6 +59,19 @@ dockerhub_base=ansible
# redis_mem_limit=3
# management_cpu_limit=2000
# management_mem_limit=2
+task_cpu_request=500
+task_mem_request=1
+task_cpu_limit=1000
+task_mem_limit=1.5
+web_cpu_request=200
+web_mem_request=0.5
+web_cpu_limit=1000
+web_mem_limit=1
+redis_cpu_request=200
+redis_mem_request=0.5
+redis_cpu_limit=500
+redis_mem_limit=0.5
# Common Docker parameters
awx_task_hostname=awx
@@ -76,7 +92,7 @@ docker_compose_dir="~/.awx/awxcompose"
# docker_registry=172.30.1.1:5000
# docker_registry_repository=awx
# docker_registry_username=developer
+tower_package_name=registry.gitlab.com/ussvgr/awx-arm64/awx
# Set pg_hostname if you have an external postgres server, otherwise
# a new postgres service will be created
(선택 사항) 컨테이너 이미지 사전 다운로드
우치의 환경만일지도 모르지만, 컨테이너 이미지의 배포에 시간이 너무 걸려, 배포용 Playbook의 실행이 타임아웃 에러가 되어 버렸습니다.
아래 명령으로 사전에 다운로드해 두면 원활할지도 모릅니다.
$ sudo k3s ctr images pull registry.gitlab.com/ussvgr/awx-arm64/awx:13.0.0
배포
다음 명령을 실행하여 잠시 기다리고 오류가 발생하지 않으면 OK입니다.
$ ansible-playbook -i inventory install.yml
확인
포트 번호를 확인하고,
$ kubectl get svc -n awx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
awx-postgresql-headless ClusterIP None <none> 5432/TCP 26m
awx-postgresql ClusterIP 10.43.109.78 <none> 5432/TCP 26m
awx-web-svc NodePort 10.43.165.240 <none> 80:32686/TCP 25m
브라우저에서 http://[Raspberry Pi의 IP 주소]: [포트 번호(위의 예라면 32686)]에 액세스하면,
앵글리 감자가 마중 나옵니다.
결론
Raspberry Pi 1대 뿐이라면 자원적으로 허락하지 않지만 어떻게든 움직이려면 움직일 것 같습니다.
소규모 실험 환경 등에는 사용할 수 있는 것이 아닐까요.
빌드가 끝난 Docker 이미지는 여기 로 공개하고 있으므로, 시험하고 싶은 분은 상기의 「Raspberry pi에 인스톨」의 항으로부터 진행해 보세요.
Reference
이 문제에 관하여(AWX on ARM64 (Raspberry Pi)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ussvgr/items/f95d950bf39aa67d0189
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ sudo apt update
$ sudo apt install -y docker.io python3-docker ansible make npm
$ sudo systemctl start docker.service
$ sudo systemctl status docker.service
$ sudo gpasswd -a $USER docker
$ git clone https://github.com/agaffney/awx.git
$ cd ~/awx/
$ git checkout refs/tags/13.0.0
$ git cherry-pick 0b841e6
$ cd ~/awx/awx/ui/
$ npm install
$ cd ~/awx/installer/
$ vi inventory
docker_registry=registry.gitlab.com
docker_registry_repository=ussvgr/awx-arm64
docker_registry_username=ussvgr
$ vi build.yml
---
- name: Build AWX Docker Images
hosts: all
- gather_facts: false
+ gather_facts: true
roles:
- {role: image_build}
- {role: image_push, when: "docker_registry is defined"}
$ ansible-playbook -i inventory -e docker_registry_password=<Gitlabのパスワード> build.yml
Kubernetes(k3s) 환경이 갖추어져 있는 상태로 시작합니다.
Github에서 clone
빌드 환경과 마찬가지로 Cherry pick 해 갑니다.
$ git clone https://github.com/agaffney/awx.git
$ cd ~/awx/
$ git checkout refs/tags/13.0.0
$ git cherry-pick 0b841e6
Inventory 파일 사용자 정의
Kubernetes 환경에 설치하기 위한 설정을 설명합니다.
tower_package_name 에 전항으로 빌드한 이미지의 리포지터리를 기재합니다.
또한 메모리 4GB의 Raspberry Pi에서는 기본 요청 사양으로 시작할 수 없으므로 Inventory 파일에서 사양을 잘라갑니다.
@@ -18,8 +18,8 @@ dockerhub_base=ansible
# openshift_pg_emptydir=True
# Kubernetes Install
-# kubernetes_context=test-cluster
-# kubernetes_namespace=awx
+kubernetes_context=default
+kubernetes_namespace=awx
# Optional Kubernetes Variables
# pg_image_registry=docker.io
# pg_serviceaccount=awx
@@ -27,6 +27,9 @@ dockerhub_base=ansible
# pg_persistence_storageClass=StorageClassName
# pg_cpu_limit=1000
# pg_mem_limit=2
+pg_persistence_storageClass=local-path
+pg_cpu_limit=500
+pg_mem_limit=0.5
# Kubernetes Ingress Configuration
# You can use the variables below to configure Kubernetes Ingress
@@ -56,6 +59,19 @@ dockerhub_base=ansible
# redis_mem_limit=3
# management_cpu_limit=2000
# management_mem_limit=2
+task_cpu_request=500
+task_mem_request=1
+task_cpu_limit=1000
+task_mem_limit=1.5
+web_cpu_request=200
+web_mem_request=0.5
+web_cpu_limit=1000
+web_mem_limit=1
+redis_cpu_request=200
+redis_mem_request=0.5
+redis_cpu_limit=500
+redis_mem_limit=0.5
# Common Docker parameters
awx_task_hostname=awx
@@ -76,7 +92,7 @@ docker_compose_dir="~/.awx/awxcompose"
# docker_registry=172.30.1.1:5000
# docker_registry_repository=awx
# docker_registry_username=developer
+tower_package_name=registry.gitlab.com/ussvgr/awx-arm64/awx
# Set pg_hostname if you have an external postgres server, otherwise
# a new postgres service will be created
(선택 사항) 컨테이너 이미지 사전 다운로드
우치의 환경만일지도 모르지만, 컨테이너 이미지의 배포에 시간이 너무 걸려, 배포용 Playbook의 실행이 타임아웃 에러가 되어 버렸습니다.
아래 명령으로 사전에 다운로드해 두면 원활할지도 모릅니다.
$ sudo k3s ctr images pull registry.gitlab.com/ussvgr/awx-arm64/awx:13.0.0
배포
다음 명령을 실행하여 잠시 기다리고 오류가 발생하지 않으면 OK입니다.
$ ansible-playbook -i inventory install.yml
확인
포트 번호를 확인하고,
$ kubectl get svc -n awx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
awx-postgresql-headless ClusterIP None <none> 5432/TCP 26m
awx-postgresql ClusterIP 10.43.109.78 <none> 5432/TCP 26m
awx-web-svc NodePort 10.43.165.240 <none> 80:32686/TCP 25m
브라우저에서 http://[Raspberry Pi의 IP 주소]: [포트 번호(위의 예라면 32686)]에 액세스하면,
앵글리 감자가 마중 나옵니다.
결론
Raspberry Pi 1대 뿐이라면 자원적으로 허락하지 않지만 어떻게든 움직이려면 움직일 것 같습니다.
소규모 실험 환경 등에는 사용할 수 있는 것이 아닐까요.
빌드가 끝난 Docker 이미지는 여기 로 공개하고 있으므로, 시험하고 싶은 분은 상기의 「Raspberry pi에 인스톨」의 항으로부터 진행해 보세요.
Reference
이 문제에 관하여(AWX on ARM64 (Raspberry Pi)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ussvgr/items/f95d950bf39aa67d0189
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(AWX on ARM64 (Raspberry Pi)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ussvgr/items/f95d950bf39aa67d0189텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)