install Ansible AWX 19 minikube on Ubuntu (AWS)


AWS Ubuntu(c 5.xlarge)にAWX 19をインストールする方法を共有する

インフラストラクチャの準備


  • Ubuntu 20.04缶詰Ec 2を作成

  • セキュリティグループの作成

  • ターゲットグループの作成+Ec 2の追加

  • NLB+ターゲットグループの追加の作成

  • Route 53ドメイン+NLB接続の作成

  • 必要に応じてドメインの準備:sre-awx.mysite.io
  • 1.Ubuntu更新

    sudo apt update && sudo apt -y upgrade

    2.k 3 s Kubernetesのインストール

    curl -sfL https://get.k3s.io | sh -
    sudo systemctl status k3s
    sudo chmod 644 /etc/rancher/k3s/k3s.yaml

    3.KubernetesにAWX Operatorを配備する


    3.1 gitインストール

    sudo apt update
    sudo apt install git build-essential

    3.2 Clone operator deployment code

    git clone https://github.com/ansible/awx-operator.git

    3.3 Create namespace where operator will be deployed : awx

    export NAMESPACE=awx
    kubectl create ns ${NAMESPACE}

    3.4 Set current context to value set in NAMESPACE variable

     kubectl config set-context --current --namespace=$NAMESPACE 

    3.5 awx-オペレータディレクトリへ

    cd awx-operator

    3.6 AWX Operatorリリースの最新バージョンをRELEASE TAG変数として保存し、gitを使用してブランチにチェックアウトする

    sudo apt install curl jq
    RELEASE_TAG=`curl -s https://api.github.com/repos/ansible/awx-operator/releases/latest | grep tag_name | cut -d '"' -f 4`
    echo $RELEASE_TAG
    git checkout $RELEASE_TAG

    3.7 AWX Operatorをクラスタに配備する

    export NAMESPACE=awx
    make deploy

    3.7.1検査pod

    kubectl get pods

    4.Operatorを使用してUbuntu 20.04にAnable AWXを取り付ける


    4.1 PVCの作成

    cat <<EOF | kubectl create -f -
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: static-data-pvc
      namespace: awx
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: local-path
      resources:
        requests:
          storage: 5Gi
    EOF
    使用するフォードが生成されるまで、PVCはバインドされません.

    4.2 AWX配備ファイルの生成

    vi awx-deploy.yml
    
    ---
    apiVersion: awx.ansible.com/v1beta1
    kind: AWX
    metadata:
      name: awx
    spec:
      service_type: nodeport
      projects_persistence: true
      projects_storage_access_mode: ReadWriteOnce
      web_extra_volume_mounts: |
        - name: static-data
          mountPath: /var/lib/projects
      extra_volumes: |
        - name: static-data
          persistentVolumeClaim:
            claimName: static-data-pvc

    4.2.1応用配置

    $ kubectl apply -f awx-deploy.yml

    4.2.2オペレータpodログでインストールプロセスを追跡することができる。

    kubectl logs -f deployments/awx-operator-controller-manager -c awx-manager

    Ec 2タイプが小さい場合、CPU、メモリ条件が一致しないため、Ready状態が遅延する場合がありますので、ご確認ください
    kubectl describe pod [pod이름]

    4.2.3 Data Persistence

    kubectl get pvc
     sudo ls /var/lib/rancher/k3s/storage/

    4.2.4 Checking AWX Container’s logs

     kubectl -n awx  logs deploy/awx
     error: a container name must be specified for pod awx-75698588d6-r7bxl, choose one of: [redis awx-web awx-task awx-ee]
     
    kubectl -n awx  logs deploy/awx -c redis
    kubectl -n awx  logs deploy/awx -c awx-web
    kubectl -n awx  logs deploy/awx -c awx-task
    kubectl -n awx  logs deploy/awx -c awx-ee

    4.2.5 AWX内容器へのアクセス

    kubectl exec -it deploy/awx  -c  awx-task -- /bin/bash
    kubectl exec -it deploy/awx  -c  awx-web -- /bin/bash
    kubectl exec -it deploy/awx  -c  awx-ee -- /bin/bash
    kubectl exec -it deploy/awx  -c  redis -- /bin/bash

    5.挿抜不可AWX Dashboard接続


    利用可能なすべてのサービスをリストし、awx-service Nodepartを確認します.
    kubectl get svc -l "app.kubernetes.io/managed-by=awx-operator"
    
    NAME           TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
    awx-postgres   ClusterIP   None           <none>        5432/TCP       59m
    awx-service    NodePort    10.4.0.9   <none>        80:30080/TCP   58m

    ログイン情報


    Login Username: admin
    password:
    kubectl get secret awx-admin-password -o jsonpath="{.data.password}" | base64 --decode
    
    # or
    
    kubectl get secret awx-admin-password -o go-template='{{range $k,$v := .data}}{{printf "%s: " $k}}{{if not $v}}{{$v}}{{else}}{{$v | base64decode}}{{end}}{{"\n"}}{{end}}'

    Kubernetesノードリソースを確認し、AWXを実行するのに十分であることを確認します.
    kubectl top nodes --use-protocol-buffers