在公司的專案場景中客戶機存在眾多比較老版本centos5系統。centos5系統預設的python版本為python2.4
ansible官網提供的資訊為,當客戶機版本低於python 2.5 ,還需要額外安裝乙個模組python-******json。
通過在ansible伺服器測試,版本2.5.0,客戶機安裝python-******json並不能相容。客戶機已經安裝了python-******json
[root@ids tmp]# rpm -qa | grep ******
python-******json-2.0.9-8.el5
ansible伺服器版本如下:
[root@mon ]# ansible --version
ansible 2.5.0
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.6/site-packages/ansible
executable location = /usr/bin/ansible
python version = 2.6.6 (r266:84292, sep 4 2013, 07:46:00) [gcc 4.4.7 20120313 (red hat 4.4.7-3)]
客戶機的python版本如下:
[root@ids tmp]# /usr/bin/python2.4
python 2.4.3 (#1, dec 22 2011, 12:12:01)
[gcc 4.1.2 20080704 (red hat 4.1.2-50)] on linux2
因為客戶機python為2.4,在ansible 伺服器端執行yaml劇本報錯,python版本不相容。
failed! =>
因此需要對專案場景中centos5.0系統的python版本進行公升級。
通過使用ansible raw模組公升級python,raw模組並不依賴於客戶機python版本。公升級之後就可以使用ansible的所有功能。
整個過程如下:
2、 在ansbile伺服器通過scp python2.7原始碼包到客戶機
3、 編寫公升級python的yaml劇本檔案,通過ansible raw模組完成python2.7公升級。
4、 客戶機完成公升級後,ansible便可以使用全部功能。
[root@mon ansible]# pwd
/etc/ansible
[root@monitor ansible]# ll python-2.7.2.tgz
-rw-r--r-- 1 root root 14091337 may 17 19:19 python-2.7.2.tgz
因為客戶機的python版本此時為2.4,無法使用ansible的copy模組。只能使用scp拷貝原始碼檔案至客戶機/tmp目錄
[root@mon ansible]# scp python-2.7.2.tgz [email protected]:/tmp
[email protected]'s password:
python-2.7.2.tgz 100% 13mb 13.4mb/s 00:00
[root@monitor ansible]#
編寫python公升級的yaml檔案
[root@mon ansible]# more python.yaml
- name: install python27
hosts: centos5
remote_user: monitor
gather_facts: false
become: yes
tasks:
- name: tar python.tgz
raw: cd /tmp;tar -zxvf python-2.7.2.tgz
- name: install python27
raw: cd /tmp/python-2.7.2;./configure ; make&& make install
- name: create softlink to python
raw: mv /usr/bin/python /usr/bin/pythonbak ;ln -s /usr/local/bin/python2.7 /usr/bin/python
- name: yum env
raw: sed -ibak '1d' /usr/bin/yum ; sed -i '1i\#!/usr/bin/python2.4' /usr/bin/yum
整個yaml檔案使用raw模組,因為raw模組是不依賴於客戶機python的。
yaml檔案內容為:
進行解壓,執行編譯指令碼,make完成編譯和安裝,同時備份原有的老版本的python,做軟連線。
由於centos5的yum預設使用的為python2.4,為確保yum能正常使用,需要在raw模組裡呼叫sed修改為原有的python2.4版本。
通過ansible-playbook完成centos客戶機的python2.7編譯,安裝,建立軟連線和修改yum工具python版本號。
為了演示過程,這裡我們檢查一下客戶機。
檢查客戶機,版本已經公升級至2.7
[root@ids tmp]# python
python 2.7.2 (default, may 18 2018, 15:38:57)
[gcc 4.1.2 20080704 (red hat 4.1.2-52)] on linux2
yum能正常使用
[root@ids tmp]# yum list | more
loaded plugins: katello, product-id, security, subscription-manager
updating certificate-based repositories.
unable to read consumer identity
installed packages
deployment_guide-en-us.noarch 5.8-1.el5 installed
deployment_guide-zh-cn.noarch 5.8-1.el5 installed
deployment_guide-zh-tw.noarch 5.8-1.el5 installed
此時,客戶機全部完成公升級,可以使用ansible全部功能了。
使用專案的yaml劇本,原來客戶機python2.4版本的報錯,已經不再出現,能正常執行,並且
得到專案想要的結果。
完成。
配置zabbix客戶機
配置zabbix客戶機 1.1 問題 本例要求新準備一台centos 7虛擬機器,作為zabbix客戶機,完成下列任務 1 配置新虛擬機器svr8 安裝zabbix agent軟體包 允許zabbix server服務端採集資料 啟動zabbix agent服務 1.2 步驟 實現此案例需要按照如下...
瘦客戶機及其應用
近年來,瘦客戶機 機群 得到廣泛應用。在學校 機關和中小企業,都有瘦客戶機 機群 應用的例項。所謂 瘦客戶機 thin clients 是指,它的所有軟體和資料都儲存在網路伺服器上的計算機。資料和應用軟體的集中儲存和分配,具有許多優點,能夠節約大量的系統購置和管理成本。瘦客戶機系統允許人們在不同地點...
xen安裝ubuntu客戶機
dom0 ubuntu12.04 amd64 xen 4.1.2 domu ubuntu12.04 安裝配置檔案ubuntu1204.cfg kernel usr lib xen boot hvmloader builder hvm memory 512 vcpus 4 shadow memory ...