WordPress網(wǎng)站注冊賬戶百度超級鏈
ansible使用手冊
1. 簡述
Ansible 是一種開源的自動化工具,主要用于配置管理、應(yīng)用程序部署和任務(wù)自動化。
它使用簡單的 YAML 語言來定義自動化的任務(wù)【playbook】,使得配置和部署變得更加直觀和易于管理。
基于SSH協(xié)議連接到遠(yuǎn)程主機(jī)來執(zhí)行指令。
2. ansible特性
1.豐富的模塊化管理
2.通過yaml格式 編寫playbok批量部署服務(wù)
3.基于OpenSSH服務(wù)相對比較安全,它不需要在被管理的主機(jī)上安裝代理軟件。
4.一個任務(wù)執(zhí)行一次和執(zhí)行多次的結(jié)果相同
5.管理模式容易,一條命令可以影響上千臺主機(jī)
3. 架構(gòu)
● 控制節(jié)點:運行 Ansible 的機(jī)器。
● 被管理節(jié)點:需要被配置或管理的機(jī)器。
● 清單文件:定義了 Ansible 要管理的主機(jī)和主機(jī)組。
● Playbook:用 YAML 編寫的配置文件,定義了如何配置和管理主機(jī)。
● 角色:組織 Playbook 的一種方式,可以將任務(wù)、變量和文件等封裝在一個模塊中。
4. Ansible 基本概念
●清單(Inventory):列出所有被管理的主機(jī)或主機(jī)組的文件。默認(rèn)位置是 /etc/ansible/hosts,可以自定義路徑。
vim /opt/ansible/Inventory/all_hosts
[hosts]
10.127.192.5
10.127.192.195[node]
10.127.192.195[webservers]
10.127.192.5[all:vars]
# root可以直連
#ansible_ssh_user="root"
#ansible_ssh_pass="xxxxx"# 非root用戶sudo
ansible_user=dev01
ansible_ssh_pass='d5qAPDG^F6rA*C9p'
ansible_become=True
ansible_become_method=sudo
●Playbook:定義任務(wù)的執(zhí)行步驟,使用 YAML 格式。每個 Playbook 可以包含多個 plays,每個 play 針對一組主機(jī)執(zhí)行任務(wù)。
例如:如下,利用ansible-playbook安裝apache服務(wù)
vim install_apache.yml
---
- name: Install and configure Apachehosts: webserversbecome: yestasks:- name: Install Apache packageapt:name: apache2state: presentupdate_cache: yes- name: Ensure Apache is running and enabledservice:name: apache2state: startedenabled: yes- name: Copy a custom index.html filecopy:src: index.htmldest: /var/www/html/index.htmlowner: www-datagroup: www-datamode: '0644'
執(zhí)行ansible-playbook指令
ansible-playbook -i ./inventory/all_hosts install_apache.yml
●任務(wù)(Task):在 Playbook 中定義的具體操作步驟,如安裝軟件、啟動服務(wù)等。
●角色(Role):用來組織 Playbook,使其更具可重用性和模塊化。每個角色包含任務(wù)、處理程序、文件、模板等。
5.常用的Ansible模塊
5.1. 文件模塊
copy:將文件從本地復(fù)制到遠(yuǎn)程主機(jī)
template:將本地文件復(fù)制到遠(yuǎn)程主機(jī)上,并進(jìn)行變量替換
file:管理文件和目錄,如創(chuàng)建、刪除、修改等操作
fetch:從遠(yuǎn)程主機(jī)上獲取文件
5.2. 系統(tǒng)模塊
command:在遠(yuǎn)程主機(jī)上執(zhí)行命令
shell:在遠(yuǎn)程主機(jī)上執(zhí)行 shell 命令
5.3. 包管理模塊
yum:管理CentOS和RedHat等Linux系統(tǒng)上的軟件包
5.4. 服務(wù)模塊
service:管理系統(tǒng)服務(wù),如啟動、停止、重啟、重載等操作
firewalld:管理防火墻中的服務(wù)和端口
5.5. 用戶模塊
user:管理系統(tǒng)用戶和用戶組,如創(chuàng)建、刪除、修改等操作
group:管理系統(tǒng)用戶組,如創(chuàng)建、刪除、修改等操作
5.6. 調(diào)試和測試類模塊
ping:ping 一下你的遠(yuǎn)程主機(jī),如果可以通過Ansible連接成功,那就范圍 pong。
debug:用于調(diào)試的模塊,只是打印一些簡單消息,有點像Linux的 echo命令
6. 模擬測試
6.1. 測試網(wǎng)絡(luò)連接連接
ansible all -m ping
ansible hosts -m ping
6.2. 命令測試
1. shell模塊
ansible -i ./inventory/ hosts -m shell -a "ls"
2. command模塊
ansible -i ./inventory/ hosts -m command -a "ls"
command模塊和shell模塊不同之處
command模塊不支持"&&“和”>>"
如下可顯示:
3. yum模塊
ansible -i ./inventory/ hosts -m yum -a "name=rsync state=present"
4. copy模塊
使用Ansible的copy模塊復(fù)制文件到遠(yuǎn)程主機(jī):
ansible all -m copy -a 'src=/etc/hosts dest=/tmp/hosts'
5. service模塊
使用Ansible的service模塊管理服務(wù):
ansible all -m service -a 'name=httpd state=started'
6. user模塊
使用Ansible的user模塊管理用戶:
創(chuàng)建user用戶
ansible all -m user -a 'name="testuser" state=present'
刪除用戶
ansible all -m user -a 'name="testuser" state=absent'
6.3. playbook測試
ansible-playbook -i ./inventory/all_hosts apache.yaml
利用ansible-playbook部署完后,可用如下檢測是否安裝成功
ansible -i ./inventory/ hosts -m shell -a "systemctl status httpd"