Ansible:
(1)介紹
????運(yùn)維工作:系統(tǒng)安裝(物理機(jī)、虛擬機(jī))--> 程序包安裝、配置囱修、服務(wù)啟動(dòng) --> 批量操作 --> 程序發(fā)布? --> 監(jiān)控
? ? ? ? OS Provisioning(操作系統(tǒng)配置):
? ? ? ? ? ? 物理機(jī)(bare metal):PXE卦方、Cobbler(二次封裝pxe技術(shù))
? ? ? ? ? ? 虛擬機(jī)(virtual machine):Image Templates
? ? ? ? Configration:(使用工具)
? ? ? ? ? ? puppet (ruby)
? ? ? ? ? ? saltstack (python)
? ? ? ? ? ? chef
? ? ? ? ? ? cfengine
? ? ? ? Command and Control(命令與控制):
? ? ? ? ? ? fabric
? ? ? ? ? ? func
? ? ? ? 預(yù)發(fā)布驗(yàn)正:
? ? ? ? ? ? 新版本的代碼先發(fā)布到服務(wù)器(跟線上環(huán)境配置完全相同孽鸡,只是未接入到調(diào)度器)哪轿;
(2)程序發(fā)布
? ??????????人工智能(手動(dòng)發(fā)布)
? ? ? ? ? ? 腳本
? ? ? ? ? ? 發(fā)布程序(專門負(fù)責(zé)運(yùn)維程序)
????????要求:
? ? ? ? ? ? ? ? 1盈魁、不能影響用戶體驗(yàn);
? ? ? ? ? ? ? ? 2窃诉、系統(tǒng)不能停機(jī);
? ? ? ? ? ? ? ? 3赤套、不能導(dǎo)致系統(tǒng)故障或造成系統(tǒng)完全不可用飘痛;
? ? ? ? ? ? 灰度發(fā)布:
? ? ? ? ? ? ? ? 主機(jī)
? ? ? ? ? ? ? ? 用戶
? ? ? ? ? ? ? ? 發(fā)布路徑:
? ? ? ? ? ? ? ? ? ? /webapps/tuangou
? ? ? ? ? ? ? ? ? ? /webapps/tuangou-1.1
? ? ? ? ? ? ? ? ? ? /webapps/tuangou-1.2
? ? ? ? ? ? ? ? 在調(diào)度器上下線一批主機(jī)(標(biāo)記為維護(hù)模式) --> 關(guān)閉服務(wù) --> 部署新版本的應(yīng)用程序 --> 啟動(dòng)服務(wù) --> 在調(diào)度器上啟用這一批服務(wù)器;
? ? ? ? ? ? ? ? 自動(dòng)化灰度發(fā)布:腳本容握、發(fā)布平臺(tái)宣脉;
(3)運(yùn)維工具的分類:
????agent: puppet, func
? ? agentless: ansible, fabric
? ? ? ? ssh
(4)ansible:輕量化
? ? 特性:? ?
????????????模塊化,調(diào)用特定的模塊剔氏,完成特定的任務(wù)塑猖;
? ? ? ? ????基于Python語言實(shí)現(xiàn)竹祷,由Paramiko、PyYAML和Jinja2三個(gè)關(guān)鍵模塊羊苟;
? ? ? ????? 部署簡單塑陵,agentless;
? ? ? ?????主從模式
? ? ? ? ????支持自定義模塊
? ? ? ? ????支持Playbook
? ? ? ????? 冪等性(一個(gè)任務(wù)執(zhí)行一遍蜡励,和多遍是一樣的):
????安裝:
? ? ? ? epel令花、ansible
? ? ? ? ? ? 配置文件:
? ? ? ? ? ? ? ? /etc/ansible/ansible.cfg
? ? ? ? ? ? ? ? 主機(jī)清單:
? ? ? ? ? ? ? ? ? ? /etc/ansible/hosts
? ? ? ? ? ? 主程序:
? ? ? ? ? ? ? ? ansible
? ? ? ? ? ? ? ? ansible-
? ? ? ? ? ? ? ? ansible-doc -l? ? ? ? 所有可用模塊
? ? ? ? ? ? ansible的簡單使用格式:
? ? ? ? ? ? ? ? ansible HOST-PATTERN -m MOD_NAME -a MOD_APGS
(5)示例
Ansible1管理192.168.52.91,其余三臺(tái):92凉倚、93兼都、94;
? ? ? ? 生成秘鑰稽寒,授權(quán)訪問
? ? ? ? ? ? [root@Ansible1 ~]#ssh-keygen -t rsa -P ''
? ? ? ? ? ? [root@Ansible1 ~]#ssh-copy-id -i .ssh/id_rsa.pub root@192.168.52.92
? ? ? ? ? ? [root@Ansible1 ~]#ssh-copy-id -i .ssh/id_rsa.pub root@192.168.52.93
? ? ? ? ? ? [root@Ansible1 ~]#ssh-copy-id -i .ssh/id_rsa.pub root@192.168.52.94
? ? ? ? ? ? [root@Ansible1 ~]# ansible all -m ping
? ? ? ? ? ? 192.168.52.93 | SUCCESS => {
? ? ? ? ? ? ? ? "changed": false,
? ? ? ? ? ? ? ? "ping": "pong"
? ? ? ? ? ? }
? ? ? ? ? ? 192.168.52.94 | SUCCESS => {
? ? ? ? ? ? ? ? "changed": false,
? ? ? ? ? ? ? ? "ping": "pong"
? ? ? ? ? ? }
? ? ? ? ? ? 192.168.52.92 | SUCCESS => {
? ? ? ? ? ? ? ? "changed": false,
? ? ? ? ? ? ? ? "ping": "pong"
? ? ? ? ? ? }