ansible入門簡單實(shí)踐
1、Ansible是什么
Ansible是一種IT自動(dòng)化工具。它可以配置系統(tǒng),部署軟件以及協(xié)調(diào)更高級(jí)的IT任務(wù),例如處理配置管理,應(yīng)用程序部署,持續(xù)部署,滾動(dòng)更新。
Ansible適用于管理企業(yè)IT基礎(chǔ)設(shè)施,從具有少數(shù)主機(jī)的小規(guī)模到數(shù)千個(gè)實(shí)例的企業(yè)環(huán)境。
Ansible也是一種簡單的自動(dòng)化語言,可以完美地描述IT應(yīng)用程序基礎(chǔ)結(jié)構(gòu)
2、Ansible基本概念術(shù)語
- 控制節(jié)點(diǎn)(Control node):指安裝了Ansible的主機(jī),也叫Ansible服務(wù)器端,管理機(jī)。Ansible控制節(jié)點(diǎn)主要用于發(fā)布運(yùn)行任務(wù),執(zhí)行控制命令。Ansible的程序都安裝在控制節(jié)點(diǎn)上,控制節(jié)點(diǎn)需要安裝Python和Ansible所需的各種依賴庫。注意:目前Ansible還不能安裝在windows下。
- 受控節(jié)點(diǎn)(Managed nodes):也叫客戶機(jī),就是想用Ansible執(zhí)行任務(wù)的客戶服務(wù)器。
- 清單(Inventory):受控節(jié)點(diǎn)的列表,就是所有要管理的主機(jī)列表。host文件:清單列表通常保存在一個(gè)名為host文件中。在host文件中,可以使用IP地址或者主機(jī)名來表示具體的管理主機(jī)和認(rèn)證信息,并可以根據(jù)主機(jī)的用戶進(jìn)行分組。缺省文件:/etc/ansible/hosts,可以通過-i指定自定義的host文件。
- 模塊(Modules):模塊是Ansible執(zhí)行特定任務(wù)的代碼塊。比如:添加用戶,上傳文件和對(duì)客戶機(jī)執(zhí)行ping操作等。Ansible現(xiàn)在默認(rèn)自帶450多個(gè)模塊,,Ansible Galaxy公共存儲(chǔ)庫則包含大約1600個(gè)模塊。
- 任務(wù)(Task):是Ansible客戶機(jī)上執(zhí)行的操作。可以使用ad-hoc單行命令執(zhí)行一個(gè)任務(wù)。
- 劇本(Playbook):是利用YAML標(biāo)記語言編寫的可重復(fù)執(zhí)行的任務(wù)的列表,playbook實(shí)現(xiàn)任務(wù)的更便捷的讀寫和貢獻(xiàn)。比如,在Github上有大量的Ansible playbooks共享,你能找到大量的寶藏。
- 角色(roles):角色是Ansible 1.2版本引入的新特性,用于層次性、結(jié)構(gòu)化地組織playbook。roles能夠根據(jù)層次型結(jié)構(gòu)自動(dòng)裝載變量文件、tasks以及handlers等
3、ansible命令執(zhí)行過程
1). 加載自己的配置文件 默認(rèn)/etc/ansible/ansible.cfg
2). 加載自己對(duì)應(yīng)的模塊文件,如command
3). 通過ansible將模塊或命令生成對(duì)應(yīng)的臨時(shí)py文件,并將該文件傳輸至遠(yuǎn)程服 務(wù)器的對(duì)應(yīng)執(zhí)行用戶$HOME/.ansible/tmp/ansible-tmp-數(shù)字/XXX.PY文件 4). 給文件+x執(zhí)行
5). 執(zhí)行并返回結(jié)果
6). 刪除臨時(shí)py文件,退出
• 執(zhí)行狀態(tài):
綠色:執(zhí)行成功并且不需要做改變的操作
黃色:執(zhí)行成功并且對(duì)目標(biāo)主機(jī)做變更
紅色:執(zhí)行失敗
4、Ansible常用模塊
•執(zhí)行shell命令(command和shell)
•文件傳輸(copy和file)
•管理軟件包(yum)
•用戶和組(user)
•從源代碼管理系統(tǒng)部署(git)
•管理服務(wù)(service)
•收集目標(biāo)主機(jī)信息(setup)
ansible入門簡單實(shí)踐
1、基礎(chǔ)環(huán)境如下
master 192.168.198.200
node1 192.168.198.201
node2 192.168.198.202
node3 192.168.198.203
(圖片可放大查看)
2、主控節(jié)點(diǎn)上安裝ansible
yum install ansible
(圖片可放大查看)
(圖片可放大查看)
3、配置SSH密鑰身份驗(yàn)證(免密登錄)
設(shè)置用于節(jié)點(diǎn)鑒權(quán)的SSH密鑰
ssh-keygen -b 2048 -t rsa
ssh-copy-id root@192.168.198.201
ssh-copy-id root@192.168.198.202
ssh-copy-id root@192.168.198.203
(圖片可放大查看)
(圖片可放大查看)
3、創(chuàng)建Ansible主機(jī)清單
vi /etc/ansible/hosts
例如加入如下行
主機(jī)組vm_servers
[vm_servers]
192.168.198.201
192.168.198.202
192.168.198.203
(圖片可放大查看)
ansible all --list-hosts
ansible vm_servers --list-hosts
(圖片可放大查看)
4、ansible命令格式:
ansible <host-pattern> [-m module_name] [-a args]
5、簡單介紹ansible的幾個(gè)模塊使用
1)、檢查主機(jī)的連通性
ansible vm_servers -m ping
ansible all -m ping
(圖片可放大查看)
2)、command模塊
command:在遠(yuǎn)程主機(jī)執(zhí)行命令;不支持|管道命令
ansible vm_servers -m command -a 'df -PTh'
ansible vm_servers -m command -a 'uptime'
ansible vm_servers -m command -a 'uname -r'
(圖片可放大查看)
(圖片可放大查看)
3)、shell模塊
shell模塊在遠(yuǎn)程主機(jī)上調(diào)用shell解釋器運(yùn)行命令,支持shell的各種功能,例如管道
ansible vm_servers -m shell -a 'lscpu | grep Intel'
ansible vm_servers -m shell -a 'cat /etc/passwd | grep root'
(圖片可放大查看)
4)、copy模塊
ansible vm_servers -m copy -a "src=/opt/init_centos7_v2.sh dest=/opt/"
(圖片可放大查看)
(圖片可放大查看)
(圖片可放大查看)
5)、yum模塊
yum安裝軟件
ansible vm_servers -m yum -a 'name=htop state=present'
(圖片可放大查看)
(圖片可放大查看)
yum卸載軟件
ansible vm_servers -m yum -a 'name=iftop state=absent'
(圖片可放大查看)
6)、service模塊
ansible vm_servers -m service -a 'name=rsyslog state=restarted'
(圖片可放大查看)
(圖片可放大查看)
上面只列舉了幾個(gè)基本模塊的使用 ,一些復(fù)雜任務(wù)需要使用 Ansible playbooks
公眾號(hào)后臺(tái)回復(fù)【Ansible】獲取Ansible培訓(xùn)PPT及word文檔等相關(guān)文件