Ansible+AWX
Oto samouczek wideo
VIDEO
Wymagania dla Ansible
użytkownik ansible dodany do maszyny, na której zainstalowano ansible
użytkownik ansible dodany do grupy sudo/wheel/admins
grupa sudo/wheel/admins ustawiona w /etc/sudoers do wykonywania poleceń z podwyższonymi uprawnieniami
Utwórz plik skryptu ansible: awx-install.yml
I wklej poniższą zawartość do tego pliku.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
---
- name : Install AWX
hosts : localhost
become : yes
vars :
awx_namespace : awx
tasks :
- name : Download Kustomize with curl
ansible.builtin.shell :
cmd : curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash
creates : /usr/local/bin/kustomize
- name : Move Kustomize to the /usr/local/bin directory
ansible.builtin.shell :
cmd : mv kustomize /usr/local/bin
args :
creates : /usr/local/bin/kustomize
- name : Ensure namespace {{ awx_namespace }} exists
ansible.builtin.shell :
cmd : kubectl create namespace {{ awx_namespace }} --dry-run=client -o yaml | kubectl apply -f -
- name : Generate AWX resource file
ansible.builtin.copy :
dest : "./awx.yaml"
content : |
---
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
name: awx
spec:
service_type: nodeport
nodeport_port: 30060
- name : Fetch latest release tag of AWX Operator
ansible.builtin.shell :
cmd : curl -s https://api.github.com/repos/ansible/awx-operator/releases/latest | grep tag_name | cut -d '"' -f 4
register : release_tag
changed_when : false
- name : Create kustomization.yaml
ansible.builtin.copy :
dest : "./kustomization.yaml"
content : |
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- github.com/ansible/awx-operator/config/default?ref={{ release_tag.stdout }}
- awx.yaml
images:
- name: quay.io/ansible/awx-operator
newTag: {{ release_tag.stdout }}
namespace: {{ awx_namespace }}
- name : Apply Kustomize configuration
ansible.builtin.shell :
cmd : kustomize build . | kubectl apply -f -
plik skryptu jest dostępny
tutaj:
Uruchom skrypt jak poniżej:
1
ansible-playbook awx-install.yml
Otwórz nowe okno terminala i obserwuj logi
1
kubectl logs -f deployments/awx-operator-controller-manager -c awx-manager -n awx
Sprawdź, czy pody zostały utworzone w przestrzeni nazw awx
1
kubectl get pods -n awx
Sprawdź usługę
Pobierz hasło awx
1
kubectl get secret awx-admin-password -o jsonpath = "{.data.password}" -n awx | base64 --decode ; echo
Dodatkowo możesz zmienić hasło na swoje własne za pomocą poniższej komendy:
1
kubectl -n awx exec -it awx-web-65655b54bf-8lxvr -- awx-manage changepassword admin
Sprawdź adres IP hosta, na którym zainstalowano AWX
Otwórz to w przeglądarce, używając portu zdefiniowanego w pliku awx.yaml. Na przykład:
1
http://10.10.0.123:30060
Usuń AWX
Utwórz plik skryptu ansible: awx-remove.yml
I wklej poniższą zawartość do tego pliku.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
---
- name : Usuń AWX
hosts : localhost
become : yes
tasks :
- name : Usuń wdrożenie awx
shell : kubectl delete deployment awx-operator-controller-manager -n awx
ignore_errors : yes
- name : Usuń konto usługi
shell : kubectl delete serviceaccount awx-operator-controller-manager -n awx
ignore_errors : yes
- name : Usuń powiązanie roli
shell : kubectl delete rolebinding awx-operator-awx-manager-rolebinding -n awx
ignore_errors : yes
- name : Usuń rolę
shell : kubectl delete role awx-operator-awx-manager-role -n awx
ignore_errors : yes
- name : Zmniejsz liczbę replik wszystkich wdrożeń w przestrzeni nazw awx do zera
shell : kubectl scale deployment --all --replicas=0 -n awx
ignore_errors : yes
- name : Usuń wdrożenia
shell : kubectl delete deployments.apps/awx-web deployments.apps/awx-task -n awx
ignore_errors : yes
- name : Usuń zestawy stanowe
shell : kubectl delete statefulsets.apps/awx-postgres-13 -n awx
ignore_errors : yes
- name : Usuń usługi
shell : kubectl delete service/awx-operator-controller-manager-metrics-service service/awx-postgres-13 service/awx-service -n awx
ignore_errors : yes
- name : Pobierz nazwę persistent volume claim
command : kubectl get pvc -n awx -o custom-columns=:metadata.name --no-headers
register : pvc_output
ignore_errors : yes
- name : Usuń Persistent volume claim
command : kubectl -n awx delete pvc {{ pvc_output.stdout }}
when : pvc_output.stdout != ""
ignore_errors : yes
- name : Pobierz nazwę objętości trwałej
command : kubectl get pv -n awx -o custom-columns=:metadata.name --no-headers
register : pv_output
ignore_errors : yes
- name : Usuń Persistent volume
command : kubectl -n awx delete pv {{ pv_output.stdout }}
when : pv_output.stdout != ""
ignore_errors : yes
- name : Usuń przestrzeń nazw awx
shell : kubectl delete namespace awx
ignore_errors : yes
Uruchom skrypt jak poniżej:
1
ansible-playbook awx-remove.yml
Naprawiony playbook, który rozwiązuje problem ze ścieżką dla projektów w AWX GUI.
Teraz możesz utworzyć katalog /var/lib/awx/projects na swoim hoście, a także utworzyć podkatalogi wewnątrz tego katalogu, aby oddzielić projekty. To, co utworzysz na hoście, zostanie automatycznie utworzone wewnątrz kontenera w awx-web pod.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
---
- name : Install AWX
hosts : localhost
become : yes
vars :
awx_namespace : awx
project_directory : /var/lib/awx/projects
storage_size : 2Gi
tasks :
- name : Download Kustomize with curl
ansible.builtin.shell :
cmd : curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash
creates : /usr/local/bin/kustomize
- name : Move Kustomize to the /usr/local/bin directory
ansible.builtin.shell :
cmd : mv kustomize /usr/local/bin
args :
creates : /usr/local/bin/kustomize
- name : Ensure namespace {{ awx_namespace }} exists
ansible.builtin.shell :
cmd : kubectl create namespace {{ awx_namespace }} --dry-run=client -o yaml | kubectl apply -f -
- name : Generate AWX resource file
ansible.builtin.copy :
dest : "./awx.yaml"
content : |
---
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
name: awx
spec:
service_type: nodeport
nodeport_port: 30060
projects_persistence: true
projects_existing_claim: awx-projects-claim
- name : Fetch latest release tag of AWX Operator
ansible.builtin.shell :
cmd : curl -s https://api.github.com/repos/ansible/awx-operator/releases/latest | grep tag_name | cut -d '"' -f 4
register : release_tag
changed_when : false
- name : Generate PV and PVC resource files
ansible.builtin.copy :
dest : "{{ item.dest }}"
content : "{{ item.content }}"
loop :
- dest : "./pv.yml"
content : |
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: awx-projects-volume
spec:
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
capacity:
storage: {{ storage_size }}
storageClassName: awx-projects-volume
hostPath:
path: {{ project_directory }}
- dest : "./pvc.yml"
content : |
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: awx-projects-claim
spec:
accessModes:
- ReadWriteOnce
volumeMode: Filesystem
resources:
requests:
storage: {{ storage_size }}
storageClassName: awx-projects-volume
- name : Create kustomization.yaml
ansible.builtin.copy :
dest : "./kustomization.yaml"
content : |
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- github.com/ansible/awx-operator/config/default?ref={{ release_tag.stdout }}
- pv.yml
- pvc.yml
- awx.yaml
images:
- name: quay.io/ansible/awx-operator
newTag: {{ release_tag.stdout }}
namespace: {{ awx_namespace }}
- name : Apply Kustomize configuration
ansible.builtin.shell :
cmd : kustomize build . | kubectl apply -f -
Źródła: