在本地Kubernetes上安裝AWX

1. 基礎(chǔ)環(huán)境

  • Kubernetes 13
  • AWX 6.0.0
  • helm 2.11.0
  • postgresql 2.0.0

2. 準(zhǔn)備環(huán)境

2.1 Kubernetes

Kubernetes環(huán)境已自行搭建完成

2.2 AWX

  • 默認每個pod請求的資源為 —— Memory:6GB CPU:3cores隔披,可在/installer/roles/kubernetes/defaults/main.yml中進行修改,注意修改過小蹂风,可能會導(dǎo)致環(huán)境崩潰。

2.2.1 下載官方部署文件

官方git:https://github.com/ansible/awx ,部署文件放在awx/installer/质欲,kubernetes相關(guān)在awx/installer/roles/kubernetes/目錄下咪笑。

2.2.2 修改installer/inventory文件

確保所有Openshift Install和獨立的Docker部分已被注釋唧席。

可通過kubectl config current-context獲取自己的kubernetes_context零渐。

我的inventory未注釋內(nèi)容如下

localhost ansible_connection=local ansible_python_interpreter="/usr/bin/env python"

[all:vars]

dockerhub_base=ansible

# Kubernetes Install
kubernetes_context=kubernetes-admin@kubernetes
kubernetes_namespace=awx
tiller_namespace=kube-system
# Optional Kubernetes Variables
pg_persistence_storageClass=StorageClassName
pg_cpu_limit=1000
pg_mem_limit=2

# Common Docker parameters
awx_task_hostname=awx
awx_web_hostname=awxweb
postgres_data_dir=/tmp/pgdocker
host_port=80
host_port_ssl=443
#ssl_certificate=
docker_compose_dir=/tmp/awxcompose

# pg_hostname=postgresql
pg_username=awx
# pg_password should be random 10 character alphanumeric string, when postgresql is running on kubernetes
# NB: it's a limitation of the "official" postgres helm chart
pg_password=awxpass
pg_database=awx
pg_port=5432
#pg_sslmode=require

# RabbitMQ Configuration
rabbitmq_password=awxpass
rabbitmq_erlang_cookie=cookiemonster

# This will create or update a default admin (superuser) account in AWX, if not provided
# then these default values are used
admin_user=admin
admin_password=password

# Whether or not to create preload data for demonstration purposes
create_preload_data=True

# AWX Secret key
# It's *very* important that this stay the same between upgrades or you will lose the ability to decrypt
# your credentials
secret_key=awxsecret

project_data_dir=/data/awx/projects

2.2.3修改installer/roles/kubernetes/defaults

dockerhub_version: latest

我自己不修改這兒會報could not locate file in lookup: /root/installer/../"VERSION"的錯窒舟,我就自己改了這兒,此時對應(yīng)的latest版本是6.0.0

2.2.4 helm

官方部署文件在部署的時候會檢測是否安裝了helm相恃,如果未安裝則會幫你安裝辜纲,這里我是自己已提前安裝了helm。

helm安裝:http://www.reibang.com/p/8aec2776f3f1

2.2.5 postgresql

文檔使用的postgresql 2.0拦耐,在部署過程中會檢查是否安裝耕腾,未安裝則會幫你安裝,但是因為我是本地環(huán)境沒有動態(tài)持久化存儲杀糯,通過官方環(huán)境則會出錯扫俺,需要修改一下原文件。所以我下載到本地固翰,放在git上狼纬。
postgresql2.0: https://github.com/OranYee/awx

因為沒有動態(tài)存儲,所以修改了postgresql/value.ymal骂际,否則會報pod has unbound immediate PersistentVolumeClaims的錯疗琉,應(yīng)該也可以手動添加pv,但是我自己添加的沒綁定上歉铝,我就直接這么粗暴了盈简。

persistence:
  enabled: false

修改installer/roles/kubernetes/tasks/main.yml,找到Deploy and Activate Postgres太示,將stable/postgresql修改為本地postgresql的路徑柠贤,我的是在/root/postgresql

- name: Deploy and Activate Postgres (Kubernetes)
  shell: |
    helm repo update --tiller-namespace={{ tiller_namespace | default('kube-system') }}
    helm upgrade {{ postgresql_service_name }} --install \
      --namespace {{ kubernetes_namespace }} \
      --set postgresqlUsername={{ pg_username }} \
      --set postgresqlPassword={{ pg_password | quote }} \
      --set postgresqlDatabase={{ pg_database }} \
      --set persistence.size={{ pg_volume_capacity|default('5')}}Gi \
      --version="2.0.0" \
      --tiller-namespace={{ tiller_namespace | default('kube-system') }} \
      {{ '--set persistence.storageClass='+pg_persistence_storageClass if pg_persistence_storageClass is defined else ' ' }} \
      {{ '--set resources.limits.cpu='+(pg_cpu_limit | string)+'m' if pg_cpu_limit is defined else ' ' }} \
      {{ '--set resources.limits.memory='+(pg_mem_limit | string)+'Gi' if pg_mem_limit is defined else ' ' }} \
      /root/postgresql
  when:
    - pg_hostname is not defined or pg_hostname == ''
    - postgres_svc_details is defined and postgres_svc_details.rc != 0
    - kubernetes_context is defined
  register: kubernetes_pg_activate
  no_log: no

查看postgresql是否部署成功helm list

NAME            REVISION    UPDATED                     STATUS      CHART               APP VERSION NAMESPACE
awx-postgresql  1           Wed Jul 17 11:29:56 2019    DEPLOYED    postgresql-2.0.0    10.5.0      awx      
[root@k8s-master01 postgresql]# kubectl get pods -n awx
NAME                          READY   STATUS    RESTARTS   AGE
awx-postgresql-postgresql-0   1/1     Running   0          7h52m

刪除postgresql

helm del postgresql --purge

2.2.6 部署AWX

(我將installer/roles/kubernetes/templates下的deployment.yml.j2下的centos鏡像所依賴的軟件提前安裝在一個鏡像中了,kind:StatefulSet下的initContainers內(nèi)容變成了如下类缤,你也可以不進行修改臼勉。)

      initContainers:
        - image: 'oranyee/centos:awx'
          name: init-custom-venvs
          command:
            - sh
            - '-c'
            - >-
              mkdir -p {{ custom_venvs_path }} &&
{% for custom_venv in custom_venvs %}
              virtualenv -p {{ custom_venv.python | default(custom_venvs_python) }} \
                {{ custom_venvs_path }}/{{ custom_venv.name }} &&
              source {{ custom_venvs_path }}/{{ custom_venv.name }}/bin/activate &&
              {{ custom_venvs_path }}/{{ custom_venv.name }}/bin/pip install -U psutil \
                "ansible=={{ custom_venv.python_ansible_version }}" &&
{% if custom_venv.python_modules is defined %}
              {{ custom_venvs_path }}/{{ custom_venv.name }}/bin/pip install -U \
                {% for module in custom_venv.python_modules %}{{ module }} {% endfor %} &&
{% endif %}
              deactivate && 
{% endfor %}
              :
          volumeMounts:
            - name: custom-venvs
              mountPath: {{ custom_venvs_path }}
{% endif %}

在/installer/roles/kubernetes/templates/deployment.yml.j2的name: {{ kubernetes_deployment_name }}-celery的volumeMounts下添加掛載project目錄:

{% if project_data_dir is defined %}
            - name: {{ kubernetes_deployment_name }}-project-data-dir
              mountPath: "/var/lib/awx/projects"
              readOnly: false
{% endif %}

在awx目錄下,運行ansible-playbook -i inventory install.yml餐弱。等待幾分鐘后宴霸,如果沒有出錯則成功,有錯可通過修改installer/roles/kubernetes/tasks/main.yml下的對應(yīng)的任務(wù)下的no_log膏蚓,修改為yes猖败,再運行ansible-playbook -i inventory install.yml查看具體什么錯誤,或者ansible-playbook -i inventory install.yml -vvv查看更多信息降允。

2.2.7 查看AWX部署是否成功

[root@k8s-master01 ~]# kubectl get pods -n awx
NAME                          READY   STATUS    RESTARTS   AGE
awx-0                         4/4     Running   0          5d19h
awx-postgresql-postgresql-0   1/1     Running   0          6d22h

在瀏覽器訪問:ip:32641恩闻,默認賬戶和密碼分別是:admin和password,可在installer/inventory下進行修改

awx.PNG

進來的awx主頁如下:


awx-index.PNG

3. awx的簡單使用

3.1 創(chuàng)建playbook

進入awx所在的節(jié)點剧董,可通過kubectl get pods -n awx -owide查看awx—0在哪個節(jié)點幢尚,我的是在k8s-master02

[root@k8s-master01 ~]# kubectl get pods -n awx -owide
NAME                          READY   STATUS    RESTARTS   AGE     IP            NODE
awx-0                         4/4     Running   0          5d20h   10.244.1.79   k8s-master02
awx-postgresql-postgresql-0   1/1     Running   0          6d23h   10.244.2.57   k8s-master03

進入awx projects掛在的目錄下,此前在inventory文件中定義在/data/awx/projects下翅楼,創(chuàng)建目錄ansible-for-devops尉剩,在ansible-for-devops目錄下創(chuàng)建測試playbook:main.yml

[root@k8s-master02 ansible-for-devops]# cat main.yml
---
- hosts: all
  gather_facts: no
  tasks:
  - name: Check the date on the server.
    command: date
  - name: Check the eth0 ip on the server.
    command: ifconfig em1

3.2 創(chuàng)建證書

點擊Credentials,添加證書毅臊,選擇證書類型為Machine理茎。


credentials.jpg
credential-type.jpg

輸入你要管理的machine的username和password


ssh-username-password.jpg

3.3 創(chuàng)建Projects

選擇SCM TYPE為Manual,輸入project的名字,選ORGANIZATION和PLAYBOOK DIRECTORY


project.png

3.4 創(chuàng)建Inventory

創(chuàng)建inventory皂林,輸入名字保存朗鸠,然后點擊創(chuàng)建的inventory,選擇HOSTS础倍,添加你要管理的machine的ip烛占。


hosts.jpg

3.5創(chuàng)建Template

點擊Templates,創(chuàng)建一個新template保存并運行沟启。


template.jpg

3.6 成功運行

successful.jpg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末忆家,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子德迹,更是在濱河造成了極大的恐慌芽卿,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,640評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胳搞,死亡現(xiàn)場離奇詭異蹬竖,居然都是意外死亡,警方通過查閱死者的電腦和手機流酬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評論 3 395
  • 文/潘曉璐 我一進店門币厕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人芽腾,你說我怎么就攤上這事旦装。” “怎么了摊滔?”我有些...
    開封第一講書人閱讀 165,011評論 0 355
  • 文/不壞的土叔 我叫張陵阴绢,是天一觀的道長。 經(jīng)常有香客問我艰躺,道長呻袭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,755評論 1 294
  • 正文 為了忘掉前任腺兴,我火速辦了婚禮左电,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘页响。我一直安慰自己篓足,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,774評論 6 392
  • 文/花漫 我一把揭開白布闰蚕。 她就那樣靜靜地躺著栈拖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪没陡。 梳的紋絲不亂的頭發(fā)上涩哟,一...
    開封第一講書人閱讀 51,610評論 1 305
  • 那天索赏,我揣著相機與錄音,去河邊找鬼贴彼。 笑死潜腻,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的锻弓。 我是一名探鬼主播砾赔,決...
    沈念sama閱讀 40,352評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蝌箍,長吁一口氣:“原來是場噩夢啊……” “哼青灼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起妓盲,我...
    開封第一講書人閱讀 39,257評論 0 276
  • 序言:老撾萬榮一對情侶失蹤杂拨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后悯衬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體弹沽,經(jīng)...
    沈念sama閱讀 45,717評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,894評論 3 336
  • 正文 我和宋清朗相戀三年筋粗,在試婚紗的時候發(fā)現(xiàn)自己被綠了策橘。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,021評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡娜亿,死狀恐怖丽已,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情买决,我是刑警寧澤沛婴,帶...
    沈念sama閱讀 35,735評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站督赤,受9級特大地震影響嘁灯,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜躲舌,卻給世界環(huán)境...
    茶點故事閱讀 41,354評論 3 330
  • 文/蒙蒙 一丑婿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧没卸,春花似錦枯冈、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至病蛉,卻和暖如春炫加,著一層夾襖步出監(jiān)牢的瞬間瑰煎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評論 1 270
  • 我被黑心中介騙來泰國打工俗孝, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留酒甸,地道東北人。 一個月前我還...
    沈念sama閱讀 48,224評論 3 371
  • 正文 我出身青樓赋铝,卻偏偏與公主長得像插勤,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子革骨,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,974評論 2 355