目錄
?
一、Ansible簡介
二、Ansible 的安裝和使用
1.下載
2.使用
三、Ansible命令和模塊
1.命令格式
2.命令行模塊
(1)command 模塊
(2)shell 模塊
(3)cron 模塊
(4)user 模塊
(5)group 模塊
(6)copy 模塊
(7)file 模塊
(8)hostname 模塊
(9)ping 模塊?
(10)yum 模塊
(11)service/systemd 模塊
(12)script 模塊
四、inventory 主機清單
1.主機名和端口
2.inventory 中的變量
(1)設(shè)置主機變量
(2)設(shè)置主機組變量
(3)設(shè)置全局變量
3.組的嵌套?
?
一、Ansible簡介
????????Ansible是一個基于Python開發(fā)的配置管理和應(yīng)用部署工具,現(xiàn)在也在自動化管理領(lǐng)域大放異彩。它融合了眾多老牌運維工具的優(yōu)點,Pubbet和Saltstack能實現(xiàn)的功能,Ansible基本上都可以實現(xiàn)。
????????Ansible能批量配置、部署、管理上千臺主機。比如以前需要切換到每個主機上執(zhí)行的一或多個操作,使用Ansible只需在固定的一臺Ansible控制節(jié)點上去完成所有主機的操作。
????????Ansible是基于模塊工作的,它只是提供了一種運行框架,它本身沒有完成任務(wù)的能力,真正執(zhí)行操作的是Ansible的模塊, 比如copy模塊用于拷貝文件到遠程主機上,service模塊用于管理服務(wù)的啟動、停止、重啟等。
????????Ansible其中一個比較鮮明的特性是Agentless,即無Agent的存在,它就像普通命令一樣,并非C/S軟件,也只需在某個作為控制節(jié)點的主機上安裝一次Ansible即可,通常它基于ssh連接來控制遠程主機,遠程主機上不需要安裝Ansible或其它額外的服務(wù)。
????????使用者在使用時,在服務(wù)器終端輸入命令或者playbooks,會通過預(yù)定好的規(guī)則將playbook拆解為play,再組織成ansible可以識別的任務(wù),調(diào)用模塊和插件,根據(jù)主機清單通過SSH將臨時文件發(fā)給遠程的客戶端執(zhí)行并返回結(jié)果,執(zhí)行結(jié)束后自動刪除
????????Ansible的另一個比較鮮明的特性是它的絕大多數(shù)模塊都具備冪等性(idempotence)。所謂冪等性,指的是多次操作或多次執(zhí)行對系統(tǒng)資源的影響是一致的,如果多次操作的狀態(tài)沒有發(fā)生改變,是不會重復(fù)執(zhí)行的。比如執(zhí)行 systemctl stop xxx 命令來停止服務(wù),當發(fā)現(xiàn)要停止的目標服務(wù)已經(jīng)處于停止狀態(tài), 它什么也不會做,所以多次停止的結(jié)果仍然是停止,不會改變結(jié)果,它是冪等的,而 systemctl restart xxx 是非冪等的。
????????Ansible的很多模塊在執(zhí)行時都會先判斷目標節(jié)點是否要執(zhí)行任務(wù),所以,可以放心大膽地讓Ansible去執(zhí)行任務(wù),重復(fù)執(zhí)行某個任務(wù)絕大多數(shù)時候不會產(chǎn)生任何副作用。
Ansible 總結(jié)
- 自動化運維工具,能批量配置、部署、管理上千臺主機;
- 無agent的存在,不需要在被控制節(jié)點上安裝客戶端應(yīng)用;
- 通過SSH協(xié)議與被控制節(jié)點通訊的;
- 基于模塊工作的,通過模塊可以實現(xiàn)在被控制節(jié)點上執(zhí)行命令操作;
- 很多模塊具備冪等性,實現(xiàn):如果多次操作的狀態(tài)沒有發(fā)生改變,是不會重復(fù)執(zhí)行的。
二、Ansible 的安裝和使用
1.下載
#先安裝epel源,再安裝ansible
yum install -y epel-release
yum install -y ansible
Ansible 目錄結(jié)構(gòu)
/etc/ansible/
├── ansible.cfg?? ??? ?#ansible的配置文件,一般無需修改
├── hosts?? ??? ??? ??? ?#ansible的主機清單,用于存儲需要管理的遠程主機的相關(guān)信息
└── roles/?? ??? ??? ??? ?#公共角色目錄
2.使用
首先需要在/etc/ansible/hosts文件中添加管理的主機名
然后對需要管理的這些主機做ssh免密驗證(首先要關(guān)閉ssh主機驗證,再做密鑰對驗證)
#配置密鑰對驗證
ssh-keygen -t rsa #一路回車,使用免密登錄
sshpass -p '123123' ssh-copy-id root@192.168.116.30
sshpass -p '123123' ssh-copy-id root@192.168.116.40
...
三、Ansible命令和模塊
1.命令格式
ansible 主機名?-m 模塊?-a 參數(shù)列表
? ? ? ? ? ? ? 組名? ? ? ?#會對組中所有主機操作
? ? ? ? ? ? ? ? all? ? ? ? ?#會對所有組中的所有主機操作
2.命令行模塊
ansible-doc -l? ? ? ? #可以列出所有已安裝的模塊(按q退出)
ansible-doc -s 模塊名? ? ? ? # -s 列出指定模塊的描述信息和操作動作
(1)command 模塊
在遠程主機執(zhí)行命令,不支持管道,重定向等shell的特性。
實例?
常用的參數(shù)
????????chdir:在遠程主機上運行命令前提前進入目錄
????????creates:判斷指定文件是否存在,如果存在則不執(zhí)行后面的操作
????????removes:判斷指定文件是否存在,如果存在則執(zhí)行后面的操作
實例?
(2)shell 模塊
在遠程主機執(zhí)行命令,相當于調(diào)用遠程主機的shell進程,然后在該shell下打開一個子shell運行命令(支持管道符號等功能)
模塊參數(shù)
實例
(3)cron 模塊
在遠程主機定義任務(wù)計劃。其中有兩種狀態(tài)(state):
- present表示添加(可以省略);
- absent表示移除。
模塊參數(shù)
常用的參數(shù)
????????minute/hour/day/month/weekday:分/時/日/月/周
????????job:任務(wù)計劃要執(zhí)行的命令
????????name:任務(wù)計劃的名稱
present添加
absent刪除?
(4)user 模塊
用戶管理的模塊
常用的參數(shù)
????????name:用戶名,必選參數(shù)
????????state=present、absent:創(chuàng)建賬號或者刪除賬號,present表示創(chuàng)建,absent表示刪除
????????system=yes、no:是否為系統(tǒng)賬號
????????uid:用戶uid
????????group:用戶基本組????????groups:用戶附加組
????????shell:默認使用的shell
????????move_home=yse、no:如果設(shè)置的家目錄已經(jīng)存在,是否移動已經(jīng)存在的家目錄
????????password:用戶的密碼,建議使用加密后的字符串(如果在這里指定的明文密碼,在/etc/shadow文件中的密碼將不會被加密)
????????comment:用戶的注釋信息
????????remove=yes、no:當state=absent時,是否刪除用戶的家目錄
新建用戶
刪除用戶?
(5)group 模塊
用戶組管理的模塊
模塊參數(shù)
新建組
刪除組
(6)copy 模塊
用于復(fù)制指定主機文件到遠程主機的
常用的參數(shù)
????????dest:指出復(fù)制文件的目標及位置,使用絕對路徑,如果源是目錄,指目標也要是目錄,如果目標文件已經(jīng)存在會覆蓋原有的內(nèi)容
????????src:指出源文件的路徑,可以使用相對路徑或絕對路徑,支持直接指定目錄,如果源是目錄則目標也要是目錄
????????mode:指出復(fù)制時,目標文件的權(quán)限?
????????owner:指出復(fù)制時,目標文件的屬主
????????group:指出復(fù)制時,目標文件的屬組
????????content:指出復(fù)制到目標主機上的內(nèi)容,不能與src一起使用
實例
(7)file 模塊
創(chuàng)建刪除文件目錄,設(shè)置屬性
常用的參數(shù)
? ? ? ? path:指定文件的路徑(此參數(shù)為必選項)
? ? ? ? mode:文件權(quán)限,使用數(shù)字表示
? ? ? ? state:默認為file修改文件目錄屬性;touch創(chuàng)建文件;directory創(chuàng)建目錄;absent刪除文件或目錄;link添加軟連接
? ? ? ? src:指定做軟連接的文件
創(chuàng)建文件
修改屬性
刪除文件?
(8)hostname 模塊
用于管理遠程主機上的主機名
(9)ping 模塊?
檢測遠程主機的連通性
(10)yum 模塊
在遠程主機上安裝與卸載軟件包
yum安裝
yum刪除?
(11)service/systemd 模塊
用于管理遠程主機上的管理服務(wù)的運行狀態(tài)
常用的參數(shù)
????????name:被管理的服務(wù)名稱
????????state=started|stopped|restarted:動作包含啟動關(guān)閉或者重啟
????????enabled=yes|no:表示是否設(shè)置該服務(wù)開機自啟
????????runlevel:如果設(shè)定了enabled開機自啟去,則要定義在哪些運行目標下自啟動
(12)script 模塊
實現(xiàn)遠程批量運行本地的 shell 腳本
寫一個測試腳本,用于創(chuàng)建用戶,并給上x執(zhí)行權(quán)限,然后執(zhí)行-a后加上腳本文件路徑和參數(shù)?
(13)setup 模塊
facts 組件是用來收集被管理節(jié)點信息的,使用 setup 模塊可以獲取這些信息?
可以使用filter去過濾需要的信息
四、inventory 主機清單
????????Inventory支持對主機進行分組,每個組內(nèi)可以定義多個主機,每個主機都可以定義在任何一個或多個主機組內(nèi)。如果是名稱類似的主機,可以使用列表的方式標識各個主機。
1.主機名和端口
2.inventory 中的變量
Inventory變量名 | 含義 |
---|---|
ansible_host | ansible連接節(jié)點時的IP地址 |
ansible_port | 連接對方的端口號,ssh連接時默認為22 |
ansible_user | 連接對方主機時使用的用戶名。不指定時,將使用執(zhí)行ansible或ansible-playbook命令的用戶 |
ansible_password | 連接時的用戶的ssh密碼,僅在未使用密鑰對驗證的情況下有效 |
ansible_ssh_private_key_file | 指定密鑰認證ssh連接時的私鑰文件 |
ansible_ssh_common_args | 提供給ssh、sftp、scp命令的額外參數(shù) |
ansible_become | 允許進行權(quán)限提升 |
ansible_become_method | 指定提升權(quán)限的方式,例如可使用sudo/su/runas等方式 |
ansible_become_user | 提升為哪個用戶的權(quán)限,默認提升為root |
ansible_become_password | 提升為指定用戶權(quán)限時的密碼 |
(1)設(shè)置主機變量
(2)設(shè)置主機組變量
(3)設(shè)置全局變量
文章來源:http://www.zghlxwxcb.cn/news/detail-681290.html
3.組的嵌套?
文章來源地址http://www.zghlxwxcb.cn/news/detail-681290.html
到了這里,關(guān)于Ansible 自動化運維工具的使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!