ansible配合shell指令碼批量編譯安裝python3.6.6
阿新 • • 發佈:2019-01-10
[[email protected]:/etc]# tree /etc/ansible/ /etc/ansible/ ├── ansible.cfg ├── hosts ├── python.yml └── roles └── python_install ├── files │ └── Python-3.6.6.tgz ├── tasks │ ├── copy.yml │ ├── install.yml │ └── main.yml └── templates └── python_install.sh 說明: files:存放需要同步到異地伺服器的原始碼檔案及配置檔案; handlers:當資源發生變化時需要進行的操作,若沒有此目錄可以不建或為空; meta:角色定義可留空; tasks:python安裝過程成需要進行的執行的任務; templates:用於執行python安裝的模板檔案,一般為指令碼; vars:本次安裝定義的變數,若無必要可以不建 python3.6.6原始碼存放目錄: python_install/files/Python-3.6.6.tgz 具體操作 1.建立python角色檔案,用於呼叫python_install [[email protected]:/etc/ansible]# cat /etc/ansible/python.yml --- - hosts: all remote_user: root roles: - python_install 2.建立任務檔案 [[email protected]:/etc/ansible/roles]# cat python_install/tasks/copy.yml - name: copy python_tgz to client copy: src=/etc/ansible/roles/python_install/files/Python-3.6.6.tgz dest=/usr/local/src/ - name: copy install_python_script to client copy: src=/etc/ansible/roles/python_install/templates/python_install.sh dest=/tmp/python_install.sh owner=root group=root mode=755 [[email protected]:/etc/ansible/roles]# cat python_install/tasks/install.yml - name: install python shell: /bin/bash /tmp/python_install.sh [[email protected]:/etc/ansible/roles]# cat python_install/tasks/main.yml - include: copy.yml - include: install.yml 注意: a.copy如果複製目錄,需要加上遞迴引數,recurse; b.copy如果複製目錄,沒有目錄將會在目標伺服器上建立; c.copy如果複製檔案到目標伺服器的某一個目錄下,需要在dest引數上加上/usr/local/src/,而不是/usr/local/src,否則ansible將會把檔案複製為src,而不是放在src目錄下。 4.編寫模板指令碼 [[email protected]:/etc/ansible/roles]# cat python_install/templates/python_install.sh #!/bin/bash # install python3.6.6 # yum tools yum -y groupinstall "Development tools" yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel cd /usr/local/src mkdir /usr/local/python3 tar -zxf Python-3.6.6.tgz cd Python-3.6.6 ./configure --prefix=/usr/local/python3 make && make install ln -s /usr/local/python3/bin/python3 /usr/bin/python3 ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3 # end 安裝指令碼功能: 1)安裝yum依賴包 2)建立目錄,解壓檔案並編譯安裝到目標目錄 3)生成軟連線 執行playbook 測試 [[email protected]:/etc/ansible]# ansible-playbook -C python.yml 執行 [[email protected]:/etc/ansible]# ansible-playbook python.yml