ansible

一.安裝

#] yum -y install ansible

一.ansible簡(jiǎn)介

要求ansible可以無密碼連接受控節(jié)點(diǎn)(Control node)(也可以使用用戶名,密碼管理),受控節(jié)點(diǎn)無需安裝任何客戶端

  • 控制節(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ǔ)庫則包含大約3000多個(gè)模塊,現(xiàn)在還在不斷跟新,也可以用python編寫適合自己業(yè)務(wù)模塊

  • 任務(wù)(Task)
    是Ansible客戶機(jī)上執(zhí)行的操作??梢允褂胊d-hoc單行命令執(zhí)行一個(gè)任務(wù)。

  • 劇本(Playbook)
    是利用YAML標(biāo)記語言編寫的可重復(fù)執(zhí)行的任務(wù)的列表,playbook實(shí)現(xiàn)任務(wù)的更便捷的讀寫和貢獻(xiàn)。比如,在Github上有大量的Ansible playbooks共享,你要你有一雙善于發(fā)現(xiàn)的眼睛你就能找到大量的寶藏。

  • 角色(roles):角色是Ansible 1.2版本引入的新特性,用于層次性、結(jié)構(gòu)化地組織playbook。roles能夠根據(jù)層次型結(jié)構(gòu)自動(dòng)裝載變量文件、tasks以及handlers等。

二.安裝

#] yum -y install ansible

三.配置

配置文件

默認(rèn)的配置文件位于/etc/ansible/ansible.cfg下??梢允褂么伺渲梦募硇薷慕^Ansible大多數(shù)設(shè)置,一般無需額外多配置,默認(rèn)配置應(yīng)能滿足大多數(shù)使用情況。關(guān)于Ansible配置文件,其執(zhí)行程序會(huì)按照一定順序搜索配置:
Ansible按照以下順序搜索配置文件,優(yōu)先配置優(yōu)先使用,而忽略其余配置文件:
$ANSIBLE_CONFIG環(huán)境變量。
任務(wù)當(dāng)前目錄下的:ansible.cfg(如果在當(dāng)前目錄中)。
當(dāng)前用戶下的ansible.cfg:~/.ansible.cfg
默認(rèn)配置文件:/etc/ansible/ansible.cfg。
]# vim /etc/ansible/ansible.cfg
[defaults]
inventory = /etc/ansible/hosts
host_key_checking = False #首次連接時(shí)不要手動(dòng)輸yes,ansible自己輸

主機(jī)清單文件

默認(rèn)清單配置文件位于/etc/ansible/hosts中,但是通過ansible.cfg配置文件中修改此位置。也可以通過-i自定義hosts清單。
為了安全起見,建議不要直接在/etc/ansible/host配置清單,尤其是有用戶認(rèn)賬等信息時(shí)候。對(duì)于長期不執(zhí)行ansible可以將host文件加密鎖定,防止信息泄露,引起安全事故。
清單文件格式如下:
[dbs]
db1
db2 ansible_ssh_user=root ansible_ssh_pass=password ansible_ssh_port=22
[webs]
web1
web2
[lamp:children]
dbs
webs

四.常用模塊

  • ping
    ]# ansible dbs -m ping

  • shell
    ]# ansible dbs -m shell -a "df -h | grep home"

  • copy

  • script //本地寫腳本,然后script模塊批量執(zhí)行
    ]# ansible dbs -m script -a "/root/test.sh"

  • yum

  • service

  • lineinfile

  • setup
    獲取主機(jī)計(jì)信系,playbooks里經(jīng)常會(huì)用到的另一個(gè)參數(shù)gather_facts與該模塊相關(guān),setup模塊經(jīng)常用的是filter參數(shù)
    ]# ansible webs -m setup -a "filter=ansible_distribution"

五.playbook(劇本)

Ansible 的劇本文件格式使用的是 YAML 語法,每一個(gè) YAML 文件都是從一個(gè)列表開始. 列表中的每一項(xiàng)都是一個(gè)鍵值對(duì), 通常它們被稱為一個(gè) “哈希” 或 “字典”. 所以, 我們需要知道如何在 YAML 中編寫列表和字典.


image.png

hosts(主機(jī)和用戶) 用于指明 playbook 作用的目標(biāo)
tasks(任務(wù)列表 ) 用于定義 playbook 所要執(zhí)行的操作,比如安裝軟件,拷貝文件等
handlers (在發(fā)生改變時(shí)會(huì)被觸發(fā)的操作)
每一個(gè) task 必須有一個(gè)名稱 name,這樣在運(yùn)行 playbook 時(shí),從其輸出的任務(wù)執(zhí)行信息中可以很好的辨別出是屬于哪一個(gè) task 的。每一個(gè)name下一行都是一個(gè)模塊
ansible-playbook apache.yaml --syntax-check 檢驗(yàn)語法(最好每次執(zhí)行前都去檢測(cè)寫語法)
ansible-playbook apache.yaml --list-tasks 列出任務(wù)
ansible-playbook apache.yaml --list-hosts 列出主機(jī)
ansible-playbook apache.yaml -C 試運(yùn)行
ansible-playbook apache.yaml 運(yùn)行

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容