使用 Red Hat OpenShift 來作為執行環境的平台
資料來源:
Ansible Automation platform 裡的 Automation controller 在執行 playbook 時,已經改用 execution environment (執行環境)這個容器來執行了,換言之,若有建置 OpenShift 的話,應該也可以使用 OpenShift 的運算資源來運行執行環境。
資料來源的文章就是在介紹設定的方法。
首先到 OpenShift ,建置新的 Project
oc new-project ansible-automation
然後建立服務帳號跟配置權限
oc create serviceaccount aap-sa
oc adm policy add-role-to-user edit -z aap-sa
若需要更細部的權限控制,可以自己建立 Role,先將以下內容命名為 aap-sa-role.yml,然後 apply: oc apply -f aap-sa-role.yml
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: aap-sa-role
namespace: ansible-automation
rules:
- apiGroups:
- ""
resources:
- pods/exec
- pods/attach
- pods
- secrets
verbs:
- get
- list
- watch
- create
- delete
- update
將 aap-sa 這個服務帳號跟 aap-sa-role 這個 role 做連結
oc adm policy add-role-to-user aap-sa-role -z aap-sa
然後取得服務帳號的 token
oc serviceaccounts get-token aap-sa
回到 Automation controller,先登入,在左邊選單裡選到 Credentials,新增 credential
- Name 填 “OCP service account”
- Credential type 選 “OpenShift on Kubernetes API Bearer token”
- API authentication bearer token 填前面取得的「服務帳號 token」
接著到 Instance groups ,選擇新增 Container group。
- Name 填 OCP
- Credential 選剛剛建立的 “OCP service account”
- Custom pod spec 內容如下
apiVersion: V1
kind: Pod
metadata:
namespace: ansible-automation
spec:
serviceAccount: aap-sa
containers:
- name: worker
args:
- ansible-runner
- worker
- '--private-data-dir=/runner'
儲存以後,接著要設定 Job template ,把裡面的 instance group 選為剛剛建立的 “OCP” container group。 試著執行 Job template,Automation controller 就會到 OpenShift 建立 execution environment 的 pod 來執行了。
現在已經可以在 OpenShift 裡運行 execution environment ,那麼是不是可以再多利用 OpenShift 的能力,多開幾個 pod,就可以同時處理了呢? 可以的喔,只要在 Job template 裡的 job slicing 指定數量,Automation controller 就會在 OpenShift 裡去建立指定數量的 pod 來運行 execution environment。
Automation controller 搭配 OpenShift/Kubernetes 這類的容器平台以後,就可以使用容器平台的運算能力來提升 Automation controller 在執行 playbook 的效能,就不再受限於主機的能力了。