特點(diǎn)
python開發(fā)
Ansible 是 python語(yǔ)言編寫的额嘿,而Devops在國(guó)內(nèi)已然是一種趨勢(shì)绊诲,python逐步普及,運(yùn)維人員自己開發(fā)工具的門檻降低栓袖,得益于此,方便對(duì)Ansible進(jìn)行二次開發(fā)
Agentless
Ansible 主推的賣點(diǎn)是其無(wú)需任何Damon維護(hù)進(jìn)程即可實(shí)現(xiàn)相互間的通信店诗,且通信方式基于SSH独旷,同時(shí)因?yàn)镾SH是每臺(tái)linux主機(jī)系統(tǒng)必裝的軟件,所以Ansible無(wú)需在遠(yuǎn)程主機(jī)端安裝任何額外的進(jìn)程动雹,即可實(shí)現(xiàn)Agentless许赃,進(jìn)而助力其實(shí)現(xiàn)去中心化的思想。
Ansible的組成部分
- playbooks:
任務(wù)劇本擦囊,編排Ansible任務(wù)集的配置文件违霞,由ansible會(huì)順序執(zhí)行,通常是Json格式的YML文件瞬场。 - INVENTORY:
ansible主機(jī)管理清單 - MODULES:
Ansible執(zhí)行命令的功能模塊买鸽,多數(shù)為內(nèi)置的核心模塊,也可以自定義贯被,比如說(shuō)user眼五、yum、shell等 - PLUGINS:
模塊功能的補(bǔ)充刃榨,如連續(xù)類型插件弹砚、循環(huán)插件、變量插件等枢希,不常用 - API:
供第三方程序調(diào)用的應(yīng)用程序編程接口 - ANSIBLE核心:
我們可以理解為ANSIBLE的命令工具桌吃,所有命令的執(zhí)行通過該工具去調(diào)用INVENTORY、API苞轿、MODULES茅诱、PLUGINS等
ansible的執(zhí)行邏輯
使用者使用ansible或者ansible-playbooks(會(huì)額外讀取playbook文件)在服務(wù)器終端輸入的Ansible命令集或者playbook后逗物,Ansible會(huì)遵循預(yù)先編排的規(guī)則將PLAYbook逐條拆解為Play,再將Play組織成Ansible可以識(shí)別的任務(wù)(Task)瑟俭,隨后調(diào)用任務(wù)涉及到的所有MODULES及PLUGINS翎卓,根據(jù)INVENTORY中定義的主機(jī)列表通過SSH協(xié)議將任務(wù)集以臨時(shí)文件或者命令的形式傳輸?shù)竭h(yuǎn)程客戶端并返回結(jié)果,如果是臨時(shí)文件則執(zhí)行完畢后自動(dòng)刪除摆寄。
需要安裝些什么
Ansible默認(rèn)通過 SSH 協(xié)議管理機(jī)器.
安裝Ansible之后,不需要啟動(dòng)或運(yùn)行一個(gè)后臺(tái)進(jìn)程,或是添加一個(gè)數(shù)據(jù)庫(kù).只要在一臺(tái)電腦(可以是一臺(tái)筆記本)上安裝好,就可以通過這臺(tái)電腦管理一組遠(yuǎn)程的機(jī)器.在遠(yuǎn)程被管理的機(jī)器上,不需要安裝運(yùn)行任何軟件,因此升級(jí)Ansible版本不會(huì)有太多問題.
選擇哪一個(gè)版本?
因?yàn)锳nsible可以很簡(jiǎn)單的從源碼運(yùn)行,且不必在遠(yuǎn)程被管理機(jī)器上安裝任何軟件,很多Ansible用戶會(huì)跟進(jìn)使用開發(fā)版本.
Ansible一般每?jī)蓚€(gè)月出一個(gè)發(fā)行版本.小bugs一般在下一個(gè)發(fā)行版本中修復(fù),并在穩(wěn)定分支中做backports.大bugs會(huì)在必要時(shí)出一個(gè)維護(hù)版本,不過這不是很頻繁.
對(duì)管理主機(jī)的要求
目前,只要機(jī)器上安裝了 Python 2.6 或 Python 2.7 (windows系統(tǒng)不可以做控制主機(jī)),都可以運(yùn)行Ansible.
安裝
Ansible被Redhat紅帽官方收購(gòu)后失暴,其安裝源被收錄在EPEL中,如已安裝EPEL可直接通過yum安裝微饥,或者通過PIP 或者easy_install 的python第三方包管理器也可以安裝Ansible逗扒。
pip安裝方式
安裝python-pip及python-devel程序包
yum install -y python-pip python-devel -y
如果是centos7 ,請(qǐng)先安裝EPEL擴(kuò)展源
sudo yum -y install epel-release欠橘,再執(zhí)行上面的命令
安裝Ansible服務(wù)
//安裝前請(qǐng)確認(rèn)服務(wù)器的gcc矩肩、glibc 開發(fā)環(huán)境均已安裝,系統(tǒng)幾乎所有的軟件包編譯環(huán)境均基于gcc肃续,如不確認(rèn)黍檩,可以先執(zhí)行如下命令:
yum install -y gcc glibc-devel zlib-devel rpm-build openssl-devel
升級(jí)本地pip至最新版本
pip install --upgrade pip
安裝ansible服務(wù)
pip install ansible --upgrade
驗(yàn)證:
ansible --versions
yum安裝方式
//安裝前請(qǐng)確認(rèn)服務(wù)器的gcc、glibc 開發(fā)環(huán)境均已安裝始锚,系統(tǒng)幾乎所有的軟件包編譯環(huán)境均基于gcc刽酱,如不確認(rèn),可以先執(zhí)行如下命令:
yum install -y gcc glibc-devel zlib-devel rpm-build openssl-devel
sudo yum -y install epel-release #安裝EPEL擴(kuò)展源
yum install -y ansible
驗(yàn)證:
ansible --version
EPEL : (Extra Packages for Enterprise Linux,企業(yè)版Linux的額外軟件包) 是由Fedora小組維護(hù)的一個(gè)軟件倉(cāng)庫(kù)項(xiàng)目疼蛾,為RHEL/CENTOS提供他們默認(rèn)不提供的軟件包
建議讀者使用yum 安裝方式肛跌,因?yàn)楹竺姹救藭?huì)根據(jù)yum安裝方式為大家介紹ansible的配置文件