ansible-playbook實(shí)現(xiàn)自動(dòng)部署KVM及安裝python3的詳細(xì)教程
1、何為ansible-playbook
playbook是ansible用于配置,部署,和管理被控節(jié)點(diǎn)的劇本,通過playbook的詳細(xì)描述,執(zhí)行其中的一系列tasks,可以讓遠(yuǎn)端主機(jī)達(dá)到預(yù)期的狀態(tài).playbook就像Ansible控制器給被控節(jié)點(diǎn)列出的的一系列to-do-list,而被控節(jié)點(diǎn)必須要完成。
2、ansible-playbook編寫格式
playbook完全居于yaml文件格式。YMAL格式是類似于JSON的文件格式,便于人理解和閱讀,同時(shí)便于書寫.,類似于半結(jié)構(gòu)化數(shù)據(jù),聲明式配置;可讀性較高的用來表達(dá)資料序列的格式,易于與腳本語言交互.。
3、yaml文件基本語法規(guī)則
- 大小寫敏感;
- 使用縮進(jìn)表示層級(jí)關(guān)系;
- 縮進(jìn)時(shí)不允許使用Tab鍵,只允許使用空格。(可以將你的ide的tab按鍵輸出替換成4個(gè)空格);
- 縮進(jìn)的空格數(shù)目不重要,只要相同層級(jí)的元素左側(cè)對(duì)齊即可;
- #表示注釋。
4、YAML支持的數(shù)據(jù)結(jié)構(gòu)
- 對(duì)象:鍵值對(duì)的集合,又稱為映射(mapping)/ 哈希(hashes) / 字典(dictionary)
- 數(shù)組:一組按次序排列的值,又稱為序列(sequence) / 列表(list)
- 純量(scalars):?jiǎn)蝹€(gè)的、不可再分的值
5、playbooks的組成結(jié)構(gòu)
- Tasks:任務(wù)列表,指遠(yuǎn)程主機(jī)將要執(zhí)行的一系列的動(dòng)作,核心就是ansible模塊.
- Variables:變量
- Templates:包含模板語法的文本文件
- Handlers:處理器,有某個(gè)條件觸發(fā)執(zhí)行操作
- remoute_user:遠(yuǎn)程主機(jī)上執(zhí)行任務(wù)的用戶
- Hosts:運(yùn)行指定任務(wù)的目標(biāo)主機(jī)
6、一鍵安裝KVM及安裝python3文件
--- - hosts: "{{hostname}}" ####這里是一個(gè)變量需要在運(yùn)行playbook時(shí)指定 hostname的值 remote_user: "{{user}}" ####這里是一個(gè)變量需要在運(yùn)行playbook時(shí)指定 user的值 vars: - python_workdir: /home/Python-3.7.4 ###定義執(zhí)行主機(jī)上python安裝文件夾的路徑 tasks: - name: change selinux_config # 臨時(shí)修改selinux配置 command: setenforce 0 notify: - stop selinux # 在臨時(shí)修改selinux配置成功后通知程序在結(jié)束前替換selinux文件以確保服務(wù)器重啟后selinux關(guān)閉依舊生效 - name: install lib of kvm and python3 #安裝依賴 command: yum install -y qemu-kvm qemu-img virt-manager libvirt libvirt-python virt-manager libvirt-client virt-install virt-viewer virt-v2v gcc zlib zlib-devel openssl-devel libffi-devel notify: #安裝依賴成功后通知程序結(jié)束前開啟libvirtd服務(wù) - libvirt_serivce - name: add crontab_job #添加任務(wù)計(jì)劃,每5分鐘清掉caches cron: name="drop_menmory" job="echo 1 > /proc/sys/vm/drop_caches" minute=*/5 state=present - name: copy python3 to remote_host #從本地向遠(yuǎn)程服務(wù)器拷貝python安裝文件家 copy: src={{python_workdir}} dest=/home/ - name: create workspace of python3 command: mkdir /usr/local/python3 #在遠(yuǎn)程服務(wù)器上創(chuàng)建python運(yùn)行的文件夾 - name: change role of file #修改遠(yuǎn)程服務(wù)器上python安裝文件的權(quán)限 command: chmod +x {{python_workdir}}/configure - name: make python3 ###進(jìn)入遠(yuǎn)程服務(wù)器下python安裝程序文件夾并執(zhí)行python 源碼編譯及安裝 command: ./configure --prefix=/usr/local/python3 && make && make install chdir={{python_workdir}} - name: create links of python3 and pip3 #在遠(yuǎn)程服務(wù)器上創(chuàng)建python3及pip3的link command: ln -s /usr/local/python3/bin/{{item.name}} /usr/bin/{{item.link}} with_items: - {name: "python3.7", link: "python3"} - {name: "pip3.7", link: "pip3"} handlers: - name: libvirt_serivce service: name={{item.name}} state={{item.state}} enabled={{item.enable}} with_items: - {name: "libvirtd",state: "started",enable: "yes"} - {name: "firewalld",state: "stopped",enable: "no"} - name: stop selinux
7、執(zhí)行方式
在命令行中直接輸入命令進(jìn)行執(zhí)行playbook文件。操作前需要確保ansible服務(wù)器可以操作遠(yuǎn)端服務(wù)器。
[root@localhost ~] ansible-playbook test.yaml -e "hostname=X.X.X.X user=XXXX"
總結(jié)
到此這篇關(guān)于ansible-playbook實(shí)現(xiàn)自動(dòng)部署KVM及安裝python3的詳細(xì)教程的文章就介紹到這了,更多相關(guān)ansible-playbook自動(dòng)部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python3 json數(shù)據(jù)格式的轉(zhuǎn)換(dumps/loads的使用、dict to str/str to dict、j
JSON (JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式。它基于ECMAScript的一個(gè)子集。這篇文章主要介紹了python3 json數(shù)據(jù)格式的轉(zhuǎn)換(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互轉(zhuǎn)換) ,需要的朋友可以參考下2019-04-04Python實(shí)現(xiàn)Word文檔轉(zhuǎn)換為圖片(JPG、PNG、SVG等常見格式)
將Word文檔以圖片形式導(dǎo)出,既能方便信息的分享,也能保護(hù)數(shù)據(jù)安全,避免被二次編輯,文本將介紹如何使用 Spire.Doc for Python 庫(kù)在Python程序中實(shí)現(xiàn)Word到圖片的批量轉(zhuǎn)換,需要的朋友可以參考下2024-06-06python讀出當(dāng)前時(shí)間精度到秒的代碼
在本文里小編給各位分享了一篇關(guān)于python怎么讀出當(dāng)前時(shí)間精度到秒的內(nèi)容,對(duì)此有需要的朋友們可以學(xué)習(xí)參考下。2019-07-07python數(shù)據(jù)處理67個(gè)pandas函數(shù)總結(jié)看完就用
這篇文章主要介紹了python數(shù)據(jù)處理67個(gè)pandas函數(shù)的梳理總結(jié),看完就可以去用了,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-11-11django重新生成數(shù)據(jù)庫(kù)中的某張表方法
今天小編就為大家分享一篇django重新生成數(shù)據(jù)庫(kù)中的某張表方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-08-08Python中json.dumps()和json.dump()的區(qū)別小結(jié)
在Python中,json.dumps()和json.dump()是兩個(gè)常用的函數(shù),本文主要介紹了Python中json.dumps()和json.dump()的區(qū)別小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02基于django和dropzone.js實(shí)現(xiàn)上傳文件
這篇文章主要介紹了基于django和dropzone.js實(shí)現(xiàn)上傳文件,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11