国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

自動化運維工具—Ansible

這篇具有很好參考價值的文章主要介紹了自動化運維工具—Ansible。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、Ansible概述

1.1 Ansible是什么

Ansible是一個基于Python開發(fā)的配置管理和應用部署工具,現(xiàn)在也在自動化管理領域大放異彩。它融合了眾多老牌運維工具的優(yōu)點,Pubbet和Saltstack能實現(xiàn)的功能,Ansible基本上都可以實現(xiàn)。

市面上其他自動化工具:pupet(ruby語言) saltstack(python) chef(C/S模式)等

Ansible能批量配置、部署、管理上千臺主機。比如以前需要切換到每個主機上執(zhí)行的一或多個操作,使用Ansible只需在固定的一臺Ansible控制節(jié)點上去完成所有主機的操作。

Ansible是基于模塊工作的,它只是提供了一種運行框架,它本身沒有完成任務的能力,真正執(zhí)行操作的是Ansible的模塊, 比如copy模塊用于拷貝文件到遠程主機上,service模塊用于管理服務的啟動、停止、重啟等。

1.2 Ansible的特性

(1)特性一

Ansible其中一個比較鮮明的特性是Agentless,即無Agent的存在,它就像普通命令一樣,并非C/S軟件,也只需在某個作為控制節(jié)點的主機上安裝一次Ansible即可,通常它基于ssh連接來控制遠程主機,遠程主機上不需要安裝Ansible或其它額外的服務。

使用者在使用時,在服務器終端輸入命令或者playbooks,會通過預定好的規(guī)則將playbook拆解為play,再組織成ansible可以識別的任務,調用模塊和插件,根據(jù)主機清單通過SSH將臨時文件發(fā)給遠程的客戶端執(zhí)行并返回結果,執(zhí)行結束后自動刪除

(2)特性二

Ansible的另一個比較鮮明的特性是它的絕大多數(shù)模塊都具備冪等性(idempotence)。所謂冪等性,指的是多次操作或多次執(zhí)行對系統(tǒng)資源的影響是一致的。比如執(zhí)行 systemctl stop xxx 命令來停止服務,當發(fā)現(xiàn)要停止的目標服務已經(jīng)處于停止狀態(tài), 它什么也不會做,所以多次停止的結果仍然是停止,不會改變結果,它是冪等的,而 systemctl restart xxx 是非冪等的。

Ansible的很多模塊在執(zhí)行時都會先判斷目標節(jié)點是否要執(zhí)行任務,所以,可以放心大膽地讓Ansible去執(zhí)行任務,重復執(zhí)行某個任務絕大多數(shù)時候不會產(chǎn)生任何副作用。

1.3 Ansible的特點

  • 部署簡單,只需在主控端部署Ansible環(huán)境, 被控端無需做任何操作
  • 默認使用SSH協(xié)議設備進行管理;
  • 主從集中化管理
  • 配置簡單、功能強大、擴張性強;
  • 支持API及自定義模塊,可以通過Pyhton輕松擴展
  • 通過playbooks 來定制強大的配置、狀態(tài)管理
  • 對云計算平臺、大數(shù)據(jù)都有很好的支持

1.4 Ansible數(shù)據(jù)流向

Host Inventory:記錄Ansible管理的主機信息,包含端口、密碼、IP等

Playbooks:劇本 YMAL 格式文件,多個任務定義在一個文件中,定義主機需要調用哪些模塊來完成的功能

Core Modules:核心模塊 主要操作是通過調用核心模塊來完成任務

Connection Plugins:連接主機,是插件,ansible和 Host (主機) 通信使用

Custom Modules:自動定義模塊,完成核心模塊無法完成的功能,支持多種語言

自動化運維工具—Ansible,運維,自動化,ansible

二、Ansible 環(huán)境安裝部署

IP 服務
管理端 192.168.147.105 ansible
被管理端 192.168.147.106
被管理端 192.168.147.107
//管理端安裝 ansible

yum install -y epel-release			//先安裝 epel 源
yum install -y ansible

//ansible 目錄結構
/etc/ansible/
├── ansible.cfg			#ansible的配置文件,一般無需修改
├── hosts				#ansible的主機清單,用于存儲需要管理的遠程主機的相關信息
└── roles/				#公共角色目錄

//配置主機清單  
cd /etc/ansible 
vim hosts       
[webservers]			#配置組名
192.168.147.106			#組里包含的被管理的主機IP地址或主機名(主機名需要先修改/etc/hosts文件)

[dbservers]
192.168.147.107

//配置密鑰對驗證
ssh-keygen
#生成公鑰,輸入命令輸入4個回車即可
cd ~/.ssh
ssh-copy-id -i   192.168.147.106
ssh-copy-id -i   192.168.147.107
#進入生成的公鑰路徑將公鑰傳輸給備管理的服務器,傳輸需要輸入每臺備管理服務的root密碼

//進行驗證
ssh 192.168.147.106

自動化運維工具—Ansible,運維,自動化,ansible
自動化運維工具—Ansible,運維,自動化,ansible
自動化運維工具—Ansible,運維,自動化,ansible
自動化運維工具—Ansible,運維,自動化,ansible

三、Ansible 命令行模塊

命令格式

ansible <組名> -m <模塊> -a <參數(shù)列表>

ansible <主機IP> -m <模塊> -a <參數(shù)列表>

ansible <主機名> -a <參數(shù)列表>      #不加-m指定模塊默認使用command

#選項解釋
-m: 指定模塊
-a: 指定命令

ansible-doc -l				#列出所有已安裝的模塊,按q退出

(1)command 模塊

在遠程主機執(zhí)行命令,不支持管道,重定向等shell的特性。

ansible-doc -s command		#-s 列出指定模塊的描述信息和操作動作

ansible 192.168.147.106 -m command -a 'date'		#指定 ip 執(zhí)行 date
ansible webservers -m command -a 'date'			#指定組執(zhí)行 date
ansible dbservers -m command -a 'date'       
ansible all -m command -a 'date'				#all 代表所有 hosts 主機
ansible all -a 'ls /'							#如省略 -m 模塊,則默認運行 command 模塊

自動化運維工具—Ansible,運維,自動化,ansible
自動化運維工具—Ansible,運維,自動化,ansible
自動化運維工具—Ansible,運維,自動化,ansible

//常用的參數(shù):
chdir:在遠程主機上運行命令前提前進入目錄
creates:判斷指定文件是否存在,如果存在,不執(zhí)行后面的操作
removes:判斷指定文件是否存在,如果存在,執(zhí)行后面的操作

ansible all -m command -a "chdir=/home  ls ./"

自動化運維工具—Ansible,運維,自動化,ansible
自動化運維工具—Ansible,運維,自動化,ansible
自動化運維工具—Ansible,運維,自動化,ansible

(2)shell 模塊

在遠程主機執(zhí)行命令,相當于調用遠程主機的shell進程,然后在該shell下打開一個子shell運行命令(支持管道符號等功能)

ansible-doc -s shell

免交互修改用戶密碼
ansible dbservers -m shell -a 'echo 123456 | passwd --stdin test'

過濾ens33網(wǎng)卡地址
ansible dbservers -m shell -a 'echo $(ifconfig ens33 | awk "NR==2 {print $2}") | cut -d " " -f2'
ansible dbservers -m shell -a 'echo $(ifconfig ens33 | awk "NR==2 {print \$2}")'

自動化運維工具—Ansible,運維,自動化,ansible
自動化運維工具—Ansible,運維,自動化,ansible
自動化運維工具—Ansible,運維,自動化,ansible

(3)cron 模塊

在遠程主機定義任務計劃。其中有兩種狀態(tài)(state):present表示添加(可以省略),absent表示移除。

ansible-doc -s cron				#按 q 退出

//常用的參數(shù):
minute/hour/day/month/weekday:分/時/日/月/周
job:任務計劃要執(zhí)行的命令
name:任務計劃的名稱

每分鐘輸出一次“helloworld”,任務名稱為test crontab
ansible webservers -m cron -a 'minute="*/1" job="/bin/echo helloworld" name="test crontab"'

ansible webservers -a 'crontab -l'		#查看目標主機的計劃任務

ansible webservers -m cron -a 'name="test crontab" state=absent'			#移除計劃任務,假如該計劃任務沒有取名字,name=None即可

自動化運維工具—Ansible,運維,自動化,ansible
自動化運維工具—Ansible,運維,自動化,ansible
自動化運維工具—Ansible,運維,自動化,ansible

(4)user 模塊

//用戶管理的模塊
ansible-doc -s user

常用的參數(shù):

參數(shù) 說明
name 用戶名,必選參數(shù)
state = present 或 absent 創(chuàng)建賬號或者刪除賬號,present表示創(chuàng)建,absent表示刪除
system = yes 或 no 是否為系統(tǒng)賬號
uid 用戶uid
group 用戶基本組
shell 默認使用的shell
move_home = yes 或 no 如果設置的家目錄已經(jīng)存在,是否將已經(jīng)存在的家目錄進行移動
password 用戶的密碼,建議使用加密后的字符串
comment 用戶的注釋信息
remove = yes 或 no 當state=absent時,是否刪除用戶的家目錄
ansible dbservers -m user -a 'name="test01"'				#創(chuàng)建用戶test01
ansible dbservers -m command -a 'tail /etc/passwd'
ansible dbservers -m user -a 'name="test01" state=absent'	#刪除用戶test01

自動化運維工具—Ansible,運維,自動化,ansible
自動化運維工具—Ansible,運維,自動化,ansible

(5)group 模塊

//用戶組管理的模塊
ansible-doc -s group

ansible dbservers -m group -a 'name=mysql gid=306 system=yes'	#創(chuàng)建mysql組
ansible dbservers -a 'tail /etc/group'
ansible dbservers -m user -a 'name=test01 uid=306 system=yes group=mysql'	#將test01用戶添加到mysql組中
ansible dbservers -a 'tail /etc/passwd'
ansible dbservers -a 'id test01'  

自動化運維工具—Ansible,運維,自動化,ansible
自動化運維工具—Ansible,運維,自動化,ansible
自動化運維工具—Ansible,運維,自動化,ansible

(6)copy 模塊

//用于復制指定主機文件到遠程主機的
ansible-doc -s copy

常用的參數(shù):

參數(shù) 說明
dest 指出復制文件的目標及位置,使用絕對路徑,如果是源目錄,指目標也要是目錄,如果目標文件已經(jīng)存在會覆蓋原有的內容
src 指出源文件的路徑,可以使用相對路徑或絕對路徑,支持直接指定目錄,如果源是目錄則目標也要是目錄
mode 指出復制時,目標文件的權限
owner 指出復制時,目標文件的屬主
group 指出復制時,目標文件的屬組
content 指出復制到目標主機上的內容,不能與src一起使用
ansible dbservers -m copy -a 'src=/etc/fstab dest=/opt/fstab.bak owner=root mode=640'
ansible dbservers -a 'ls -l /opt'
ansible dbservers -a 'cat /opt/fstab.bak'

ansible dbservers -m copy -a 'content="helloworld" dest=/opt/hello.txt'  #將helloworld寫入/opt/hello.txt文件中
ansible dbservers -a 'cat /opt/hello.txt' 

自動化運維工具—Ansible,運維,自動化,ansible
自動化運維工具—Ansible,運維,自動化,ansible
自動化運維工具—Ansible,運維,自動化,ansible

(7)file 模塊

//設置文件屬性
ansible-doc -s file

常用參數(shù):

參數(shù) 說明
path 指定遠程服務器的路徑,也可以寫成"dest",“name”
state 狀態(tài),可以將值設定為directory表示創(chuàng)建目錄,設定為touch表示創(chuàng)建文件,設定為link表示創(chuàng)建軟鏈接,設定為hard表示創(chuàng)建硬連接,設定為absent表示刪除目錄文件或鏈接
mode 文件復制到遠程并設定權限,默認file=644,directory=755
owner 文件復制到遠程并設定屬主,默認為root
group 文件復制到遠程并設定屬組,默認為root
recurese 遞歸修改
src 指的是目標主機上的源文件。與copy模塊不同。
ansible dbservers -m file -a 'owner=test01 group=mysql mode=644 path=/opt/fstab.bak'	#修改文件的屬主屬組權限等
ansible dbservers -m file -a 'path=/opt/fstab.link src=/opt/fstab.bak state=link'    #設置/opt/fstab.link為/opt/fstab.bak的鏈接文件
ansible dbservers -m file -a "path=/opt/123.txt state=touch"			#創(chuàng)建一個文件
ansible dbservers -m file -a "path=/opt/123.txt state=absent"			#刪除一個文件

自動化運維工具—Ansible,運維,自動化,ansible
自動化運維工具—Ansible,運維,自動化,ansible
自動化運維工具—Ansible,運維,自動化,ansible
自動化運維工具—Ansible,運維,自動化,ansible

(8)hostname 模塊

//用于管理遠程主機上的主機名
ansible dbservers -m hostname -a "name=mysql01"

自動化運維工具—Ansible,運維,自動化,ansible

(9)ping 模塊

//檢測遠程主機的連通性
ansible all -m ping

自動化運維工具—Ansible,運維,自動化,ansible

(10)yum 模塊

//在遠程主機上安裝與卸載軟件包
ansible-doc -s yum

ansible webservers -m yum -a 'name=httpd'					#安裝服務
ansible webservers -m yum -a 'name=httpd state=absent'		#卸載服務

自動化運維工具—Ansible,運維,自動化,ansible
自動化運維工具—Ansible,運維,自動化,ansible
自動化運維工具—Ansible,運維,自動化,ansible
自動化運維工具—Ansible,運維,自動化,ansible

(11)service/systemd 模塊

//用于管理遠程主機上的管理服務的運行狀態(tài)
ansible-doc -s service

自動化運維工具—Ansible,運維,自動化,ansible

常用的參數(shù):

參數(shù) 說明
name 被管理的服務名稱
state=started / stopped / restarted 動作包含啟動關閉或者重啟
enabled=yes / no 表示是否設置該服務開機自啟
runlevel 如果設定了enabled開機自啟去,則要定義在哪些運行目標下自啟動
ansible webservers -a 'systemctl status httpd'			#查看web服務器httpd運行狀態(tài)
ansible webservers -m service -a 'enabled=true name=httpd state=started'			#啟動httpd服務

自動化運維工具—Ansible,運維,自動化,ansible
自動化運維工具—Ansible,運維,自動化,ansible

(12)script 模塊

//實現(xiàn)遠程批量運行本地的 shell 腳本
ansible-doc -s script

自動化運維工具—Ansible,運維,自動化,ansible

vim test.sh
#!/bin/bash
echo "hello ansible from script" > /opt/script.txt

chmod +x test.sh
ansible webservers -m script -a 'test.sh'
ansible webservers -a 'cat /opt/script.txt'

自動化運維工具—Ansible,運維,自動化,ansible
自動化運維工具—Ansible,運維,自動化,ansible

(13)setup 模塊

//facts 組件是用來收集被管理節(jié)點信息的,使用 setup 模塊可以獲取這些信息
ansible-doc -s setup

ansible dbservers -m setup				#獲取mysql組主機的facts信息
ansible dbservers -m setup -a 'filter=*ipv4'    #使用filter可以篩選指定的facts信息

自動化運維工具—Ansible,運維,自動化,ansible
自動化運維工具—Ansible,運維,自動化,ansible
自動化運維工具—Ansible,運維,自動化,ansible

四、inventory 主機清單

Inventory支持對主機進行分組,每個組內可以定義多個主機,每個主機都可以定義在任何一個或多個主機組內。

如果是名稱類似的主機,可以使用列表的方式標識各個主機。文章來源地址http://www.zghlxwxcb.cn/news/detail-692494.html

vim /etc/ansible/hosts
[webservers]
192.168.147.106:2222		#冒號后定義遠程連接端口,默認是 ssh 的 22 端口
192.168.147.10[2:5]

[dbservers]
db-[a:f].example.org	#支持匹配 a~f

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 允許進行權限提升
ansible_become_method 指定提升權限的方式,例如可使用sudo/su/runas等方式
ansible_become_user 提升為哪個用戶的權限,默認提升為root
ansible_become_password 提升為指定用戶權限時的密碼

(1)主機變量

[webservers]
192.168.147.105 ansible_port=22 ansible_user=root ansible_password=abc1234

(2)組變量

[webservers:vars]			#表示為 webservers 組內所有主機定義變量
ansible_user=root
ansible_password=abc1234

[all:vars]					#表示為所有組內的所有主機定義變量
ansible_port=22

(3)組嵌套

[nginx]
192.168.147.104
192.168.147.105
192.168.147.106

[apache]
192.168.147.10[0:3]

[webs:children]		#表示為 webs 主機組中包含了 nginx 組和 apache 組內的所有主機
nginx
apache

到了這里,關于自動化運維工具—Ansible的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 自動化運維工具之Ansible

    自動化運維工具之Ansible

    Ansible是一個基于Python開發(fā)的配置管理和應用部署工具,現(xiàn)在也在自動化管理領域大放異彩。它融合了眾多老牌運維工具的優(yōu)點,Pubbet和Saltstack能實現(xiàn)的功能,Ansible基本上都可以實現(xiàn)。 Ansible能批量配置、部署、管理上千臺主機。比如以前需要切換到每個主機上執(zhí)行的一或多個

    2024年02月08日
    瀏覽(28)
  • 自動化運維工具——Ansible學習(二)

    自動化運維工具——Ansible學習(二)

    目錄 一、handlers和notify結合使用觸發(fā)條件 1.新建httpd.yml文件 2.復制配置文件到ansible的files目錄中 3.卸載被控機已安裝的httpd 4.執(zhí)行httpd.yml腳本 5.更改httpd.conf配置文件 6.使用handlers 7.重新執(zhí)行httpd.yml腳本 8.檢查被控機的端口號是否改變 9.handlers也可以觸發(fā)多個 二、tags 1.通過指定

    2024年02月16日
    瀏覽(40)
  • Ansible 自動化運維工具的使用

    Ansible 自動化運維工具的使用

    目錄 ? 一、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/

    2024年02月11日
    瀏覽(25)
  • Ansible 自動化運維工具(完善版)

    Ansible 自動化運維工具(完善版)

    目錄 ?Ansible概述 Ansible特點 Ansible應用 1、使用者 2、Ansible工具集合 3、作用對象 Ansible的搭建 環(huán)境 ansible主機 1、ansible 2、Ansible-doc Ansible模塊 1.command模塊 2.shell模塊 3.raw模塊 Ansible是最近非常火的一款開源運維自動化工具,通過Ansible可以實現(xiàn)運維自動化,提高運維工程師的工

    2024年02月16日
    瀏覽(22)
  • Ansible自動化運維工具的認識

    Ansible自動化運維工具的認識

    目錄 一、Ansible概述 二、Ansible特點 三、Ansible應用 1、使用者 2、Ansible工具集合 3、作用對象 四、Ansible的搭建 1、實驗環(huán)境 2、環(huán)境準備 Ansible: 3、創(chuàng)建ssh免密交互登錄 client端環(huán)境準備 五、Ansible配置 六、Ansible命令 1、ansible 實驗案例: 1.檢查所有主機是否存活 2.列出Rich組中

    2024年02月16日
    瀏覽(25)
  • Linux:ansible自動化運維工具

    Linux:ansible自動化運維工具

    當前所有執(zhí)行權限我是在root下執(zhí)行的,如果提示權限之類的,可以在每句命令前? 加上 sudo?? ? ansible主服務器? 192.168.0.194???????? 另外兩個客戶端分別為 192.168.0.193? ?192.168.0.192 軟件只需要在主服務器上安裝,客戶端不需要去安裝軟件,因為他們相互使用的是ssh 只需要

    2024年02月11日
    瀏覽(20)
  • Ansible自動化運維工具---Playbook

    Ansible自動化運維工具---Playbook

    playbook是劇本的意思,通過 task 調用 ansible 的模塊將多個 play 組織在一 個playbook中運行。 playbook各部分組成 : Tasks : 任務,即調用模塊完成的某操作 Variables : 變量 emplates : 模板 Handlers : 處理器,當某條件滿足時,觸發(fā)執(zhí)行的操作 Roles : 角色 playbook yaml語法 是換行空兩格,-和

    2024年02月03日
    瀏覽(20)
  • 自動化運維工具-------Ansible(超詳細)

    自動化運維工具-------Ansible(超詳細)

    Ansible是自動化運維工具,基于Python開發(fā),分布式,無需客戶端,輕量級,實現(xiàn)了批量系統(tǒng)配置、批量程序部署、批量運行命令等功能, ansible是基于模塊工作的,本身沒有批量部署的能力。真正具有批量部署的是ansible所運行的模塊,ansible只是提供一種框架 。 1)、no agents:不需要在

    2024年02月10日
    瀏覽(18)
  • Ansible自動化運維工具介紹與部屬

    Ansible自動化運維工具介紹與部屬

    ansible是新出現(xiàn)的自動化運維工具,基于python開發(fā),集合了從多的運維工具(puppet、chef、func、fabric)的優(yōu)點,實現(xiàn)了批量系統(tǒng)配置、批量程序部署、批量運行命令等功能。 ansible是基于paramiko開發(fā)的,并且基于模塊化工作,它本身沒有批量部署的能力。真正具有批量部署的是

    2024年02月07日
    瀏覽(24)
  • 自動化運維工具Ansible教程(二)【進階篇】

    自動化運維工具Ansible教程(二)【進階篇】

    ansible 學習大綱 Ansible 是一個開源的自動化工具,用于配置管理、應用部署和任務執(zhí)行。它以簡單、可讀性強的 YAML 格式的 Playbooks 為基礎,使得自動化任務變得簡單、可維護和可擴展。 簡單易用 :Ansible 的設計目標之一是簡單易用。它使用 YAML 語法定義任務和配置,無需編

    2024年02月09日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包