天天看點

ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單

目錄

一、ansible組成結構以及工作方式

二、Ansible概述

 三、Ansible部署

 四、ansible常用指令

4.1ansible 指令集

4.2ansible-doc 指令

五、ansible常用子產品 

5.1ping子產品

5. 2command 子產品

 5.3cron子產品

 5.4user子產品

 5.5group子產品

 5.6shell子產品

5.7copy子產品

5.8file子產品

5.9yum子產品

5.10service子產品

5.11、script子產品

5.12setup子產品

六.inventory 主機清單

一、ansible組成結構以及工作方式

  • ansible是一個架構,它負責調用子產品來幹活,真正光幹活的是其中的子產品,可以使用playbooks定義一系列子產品,操作任務序列,可以通過主機清單來确定控制遠端主機的範圍
  • ansible不需要安裝代理端應用,他是通過SSH連接配接控制遠端主機的ansible具有幂等性(重複操作不會重複執行),如果有重複操作則不會重複執行

它主要有四個部分:

  1. 主機清單(定義被控制的遠端主機)
  2. 子產品(真正幹活的)
  3. 插件(功能擴充的)
  4. 劇本(多個子產品指令的集合體)

工作原理:

通過主機清單來确定哪些主機要幹活 然後使用子產品指令或者劇本指令作用于對應的主機上面然後通過ssh并且以臨時檔案的形式把這些指令發送到對應的主機上面,這些臨時檔案包含了需要執行的指令操作,最後在遠端主機上執行這些指令操作再把執行結果傳回給我們的控制節點,接下來删除臨時檔案。

二、Ansible概述

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

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

• Ansible是基于子產品工作的,它隻是提供了一種運作架構,它本身沒有完成任務的能力,真正執行操作的是Ansible的子產品,

比如copy子產品用于拷貝檔案到遠端主機上,service子產品用 于管理服務的啟動、停止、重新開機等

• Ansible其中一個比較鮮明的特性是Agentless,即無Agent的存在,它就像普通指令一樣, 并非c/s軟體,

也隻需在某個作為控制節點的主機上安裝一次Ansible即可, 通常它基于ssh連接配接來控制遠端主機,遠端主機上不需要安裝Ansible或其它額外的服務。

使用者在使用時,在伺服器終端輸入指令或者playbooks,會通過預定好的規則将playbook拆解為play,

再組織成ansible可以識别的任務,調用子產品和插件,根據主機清單通過SSH将臨時檔案發給遠端的用戶端執行并傳回結果,執行結束後自動删除

• Ansible的另一個比較鮮明的特性是它的絕大多數子產品都具備幂等性(idempotence)。

所謂幂等性,指的是多次操作或多次執行對系統資源的影響是一緻的。比如執行systemctl stop xxx指令來停止服務,

當發現要停止的目标服務已經處于停止狀态,它什麼也不會做,是以多次停止的結果仍然是停止,不會改變結果,它是幂等的,

而systemctl restart xxx是非幂等的

• Ansible的很多子產品在執行時都會先判斷目标節點是否要執行任務,是以,可以放心大膽地讓Ansible去執行任務,重複執行某個任務絕大多數時候不會産生任何副作用

ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單

 三、Ansible部署

環境準備

管理端:192.168.130.70 ansible

被管理端:192.168.130.30 192.168.130.40

#管理端安裝epel擴充源
yum -y install epel-release
yum -y install ansible

#樹型查詢工具
yum -y install tree

tree /etc/ansible

//ansible 目錄結構
/etc/ansible/
ansible.cfg
#ansible的配置檔案,一般無需修改
hosts
#ansible的主機清單,用于存儲需要管理的遠端主機的相關資訊
roles/
#公共角色目錄


//配置主機清單
cd /etc/ansible
vim hosts 
[webservers]
#配置組名
192.168.19.40
#組裡包含的被管理的主機IP位址或主機名(主機名需要先修改/etc/hosts檔案)
[dbservers]
192.168.19.30

//配置密鑰對驗證
ssh-keygen -t rsa
#一路回車,使用免密登入
sshpass -p ' abc1234' ssh-copy-id [email protected]
sshpass -P ' abc1234' ssh-copy-id [email protected]
           
ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單
ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單
ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單

修改ansible的倉庫庫檔案 

在配置檔案中,我們提到了資源清單,這個清單就是我們的主機清單,裡面儲存的是一些 ansible 需要連接配接管理的主機清單,我們可以根據實際情況配置主機清單。

ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單

 配置公私鑰

ansible 是基于 ssh 協定實作的,是以其配置公私鑰的方式與 ssh 協定的方式相同

生成公私鑰

ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單
ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單

 向主機分發公鑰

ssh-copy-id [email protected]
ssh-copy-id [email protected]
           
ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單
ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單
ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單

 設定免互動

ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單

 測試

主機連通性測試

ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單

 四、ansible常用指令

4.1ansible 指令集

/usr/bin/ansible  #Ansibe AD-Hoc 臨時指令執行工具,常用于臨時指令的執行
/usr/bin/ansible-doc #Ansible 子產品功能檢視工具
/usr/bin/ansible-galaxy  #下載下傳/上傳優秀代碼或Roles子產品 的官網平台,基于網絡的
/usr/bin/ansible-playbook #Ansible 定制自動化的任務集編排工具
/usr/bin/ansible-pull   #Ansible遠端執行指令的工具,拉取配置而非推送配置(使用較少,海量機器時使用,對運維的架構能力要求較高)
/usr/bin/ansible-vault   #Ansible 檔案加密工具
/usr/bin/ansible-console  #Ansible基于Linux Consoble界面可與使用者互動的指令執行工具
           

其中,我們比較常用的是/usr/bin/ansible和/usr/bin/ansible-playbook,而本章主要講/usr/bin/ansible的使用。

4.2ansible-doc 指令

ansible-doc指令常用于擷取子產品資訊及其使用幫助

//列出所有已安裝的子產品;注:按q退出

ansible-doc -l

//-s列出yum子產品描述資訊和操作動作

ansible-doc -s yum

ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單
ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單

五、ansible常用子產品 

指令格式: ansible [主機] [-m 子產品] [-a args]
           

5.1ping子產品

此子產品用于進行主機連通性測試

ansible all -m ping
           
ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單

5. 2command 子產品

這個子產品可以直接在遠端主機上執行指令,并将結果傳回本主機。不支援管道,重定向等shell的特性。

檢視command子產品資訊

ansible-doc -s command
           
ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單

 常用的參數:

chdir  # 在執行指令之前,先切換到該目錄

creates  # 一個檔案名,當這個檔案存在,則該指令不執行,可以

用來做判斷

removes # 一個檔案名,這個檔案不存在,則該指令不執行

//指定ip執行date
ansible 192.168.19.18 -m command -a 'date'
//指定分類執行date
ansible 192.168.19.17 -m command -a 'date'
ansible 192.168.19.17 -m command -a 'date'
//所有hosts主機執行date
ansible all -m command -a 'date'

//如果不加-m子產品,則預設運作command子產品
ansible all -a 'ls /'

注意:該指令不支援|管道指令。
           
ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單

 5.3cron子產品

該子產品适用于管理cron計劃任務的,其使用的文法跟我們的crontab檔案中的文法一緻

檢視cron子產品資訊

ansible-doc -s cron
           

常用選項:

day= #日應該運作的工作( 1-31, *, */2, )

hour= #小時 ( 0-23, *, */2, )

minute= #分鐘( 0-59, *, */2, )

month= #月( 1-12, *, /2, )

weekday= #周 ( 0-6 for Sunday-Saturday, )

job= #指明運作的指令是什麼

name= #定時任務描述,用于删除任務

reboot #任務在重新開機時運作,不建議使用,建議使用special_time

special_time #特殊的時間範圍,參數:reboot(重新開機時),annually(每年),monthly(每月),weekly(每周),daily(每天),hourly(每小時)

state #指定狀态,present表示添加定時任務,也是預設設定,absent表示删除定時任務

user #以哪個使用者的身份執行

//添加計劃任務
ansible 192.168.19.17 -m cron -a 'minute="*/1" job="/bin/echo hello" name="test cron job"'
//檢視計劃任務
ansible 192.168.19.17 -a 'crontab -l'
//移除計劃任務
ansible 192.168.19.17 -m cron -a 'name="test cron job" state=absent'
           
ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單
ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單

 5.4user子產品

該子產品主要是用來管理使用者賬号

user子產品是請求的是useradd,userdel,usermod三個指令

檢視user子產品資訊

ansible-doc -s user
           

comment  # 使用者的描述資訊

createhome  # 是否建立家目錄

force  # 在使用state=absent時, 行為與userdel –force一緻.

group  # 指定基本組

groups  # 指定附加組,如果指定為(groups=)表示删除所有組

home  # 指定使用者家目錄

move_home  # 如果設定為home=時, 試圖将使用者主目錄移動到指定的目錄

name  # 指定使用者名

non_unique  # 該選項允許改變非唯一的使用者ID值

password  # 指定使用者密碼

remove  # 在使用state=absent時, 行為是與userdel –remove一緻

shell  # 指定預設shell

state  # 設定帳号狀态,不指定為建立,指定值為absent表示删除

system  # 當建立一個使用者,設定這個使用者是系統使用者。這個設定不能更改現有使用者

uid  # 指定使用者的uid

//建立使用者test01
ansible 192.168.130.40 -m user -a 'name="test01"'
//檢視建立的使用者資訊
ansible 192.168.130.40 -a 'tail /etc/passwd'
//删除使用者test01
ansible 192.168.130.40 -m user -a 'name="test01" state=absent'
           
ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單
ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單
ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單

 5.5group子產品

 該子產品主要用于添加或删除組。

group子產品請求的是groupadd,groupdel,groupmod三個指令。

檢視group子產品資訊

ansible-doc -s group
           
gid=  #設定組的GID号
name=  #指定組的名稱
state=  #指定組的狀态,預設為建立,設定值為absent為删除
system=  #設定值為yes,表示建立為系統組
           
ansible 192.168.130.40 -m user -a 'name="test01"'
//建立組
ansible 192.168.130.40 -m group -a 'name=mysql gid=306 system=yes'
//檢視組資訊
ansible 192.168.130.40 -a 'tail /etc/group'
//使用user子產品向組裡添加成員
ansible 192.168.130.40 -m user -a 'name=test01 uid=306 system=yes group=mysql'

ansible 192.168.130.40 -a 'id test01'
           
ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單
ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單
ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單

 5.6shell子產品

 該子產品用于在遠端主機上調用shell解釋器運作指令,支援shell的各種功能,例如管道等。

檢視shell子產品資訊

ansible-doc -s shell
           
//建立使用者使用無互動模式給使用者設定密碼
ansible 192.168.130.40 -m shell -a 'echo abc123 | passwd --stdin test01'
           

ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單

5.7copy子產品

這個子產品用于将檔案複制到遠端主機,同時支援給定内容生成檔案和修改權限等

檢視copy子產品資訊

ansible-doc -s copy
           
常用選項:
src    #被複制到遠端主機的本地檔案。可以是絕對路徑,也可以是相對路徑。如果路徑是一個目錄,則會遞歸複制,用法類似于"rsync"
content   #用于替換"src",可以直接指定檔案的值
dest    #必選項,将源檔案複制到的遠端主機的絕對路徑
backup   #當檔案内容發生改變後,在覆寫之前把源檔案備份,備份檔案包含時間資訊
directory_mode    #遞歸設定目錄的權限,預設為系統預設權限
force    #當目标主機包含該檔案,但内容不同時,設為"yes",表示強制覆寫;設為"no",表示目标主機的目标位置不存在該檔案才複制。預設為"yes"
others    #所有的 file 子產品中的選項可以在這裡使用
owner #應該擁有檔案/目錄的使用者名,将提供給chown
mode #目标檔案或目錄的權限,将提供給chmod
           
//複制本地檔案/etc/fstab到mysql清單中的主機/opt目錄下并改名為fstab.back
ansible 192.168.19.17 -m copy -a 'src=/etc/fstab dest=/opt/fstab.back owner=root mode=640'
ansible 192.168.19.17 -a 'ls -l /opt'
ls -l /etc/fstab

//将hello world!寫入/opt/fstab.back
ansible 192.168.19.17 -m copy -a 'content="hello world!" dest=/opt/fstab.back'
ansible 192.168.19.17 -a 'cat /opt/fstab.back'
           

ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單

ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單
ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單
ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單

5.8file子產品

該子產品主要用于設定檔案的屬性,比如建立檔案、建立連結檔案、删除檔案等。

檢視file子產品資訊

ansible-doc -s file
           
force  #需要在兩種情況下強制建立軟連結,一種是源檔案不存在,但之後會建立的情況下;另一種是目标軟連結已存在,需要先取消之前的軟鍊,然後建立新的軟鍊,有兩個選項:yes|no
group  #定義檔案/目錄的屬組。後面可以加上mode:定義檔案/目錄的權限
owner  #定義檔案/目錄的屬主。後面必須跟上path:定義檔案/目錄的路徑
recurse  #遞歸設定檔案的屬性,隻對目錄有效,後面跟上src:被連結的源檔案路徑,隻應用于state=link的情況
dest  #被連結到的路徑,隻應用于state=link的情況
state  #狀态,有以下選項:
           

directory:如果目錄不存在,就建立目錄

file:即使檔案不存在,也不會被建立

link:建立軟連結

hard:建立硬連結

touch:如果檔案不存在,則會建立一個新的檔案,如果檔案或目錄已存在,則更新其最後修改時間

absent:删除目錄、檔案或者取消連結檔案

ansible webserver -m user -a 'name=mysql system=yes'
ansible webserver -m group -a 'name=mysql system=yes'
           
//修改/opt/fstab.back檔案參數(屬主、屬組、權限)
ansible webserver -m file -a 'owner=mysql group=mysql mode=644 path=/opt/fstab.back'
//建立/opt/fstab.back檔案的軟連結/opt/fstab.link
ansible webserver -m file -a 'path=/opt/fstab.link src=/opt/fstab.back state=link'
           
//删除一個檔案
ansible webserver -m file -a 'path=/opt/fstab.back state=absent'
           
//建立一個空檔案
ansible webserver -m file -a 'path=/opt/test state=touch'
//建立一個目錄,并設定權限700
ansible webserver -m file -a 'path=/opt/test1 state=directory mode=700'
           

ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單

ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單
ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單
ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單
ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單
ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單

5.9yum子產品

該子產品主要用于軟體的安裝

檢視yum子產品資訊

ansible-doc -s yum
           

name=  #所安裝的包的名稱

state=  #present—>安裝, latest—>安裝最新的, absent—> 解除安裝軟體。

update_cache  #強制更新yum的緩存

conf_file  #指定遠端yum安裝時所依賴的配置檔案(安裝本地已有的包)。

disable_pgp_check  #是否禁止GPG checking,隻用于presentor latest。

disablerepo  #臨時禁止使用yum庫。 隻用于安裝或更新時。

enablerepo  #臨時使用的yum庫。隻用于安裝或更新時。

//yum安裝httpd
ansible webserver -m yum -a 'name=httpd'

//檢視是否安裝
ansible webserver -a 'rpm -q httpd'



//解除安裝httpd
ansible webserver -m yum -a 'name=httpd state=absent'

ansible webserver -a 'rpm -q httpd'
           

ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單

ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單
ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單

5.10service子產品

該子產品用于服務程式的管理

檢視service子產品資訊

ansible-doc -s service
           
arguments #指令行提供額外的參數
enabled #設定開機啟動。
name= #服務名稱
runlevel #開機啟動的級别,一般不用指定。
sleep #在重新開機服務的過程中,是否等待。如在服務關閉以後等待2秒再啟動。(定義在劇本中。)
state #有四種狀态,分别為:started—>啟動服務, stopped—>停止服務, restarted—>重新開機服務, reloaded—>重載配置
           
ansible webserver -m yum -a 'name=httpd'
//檢視web伺服器httpd運作狀态
ansible webserver -a 'systemctl status httpd'

           

ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單

ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單

ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單
ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單

5.11、script子產品

該子產品用于将本機的腳本在被管理端的機器上運作

檢視script子產品資訊

ansible-doc -s script
           
//先寫個腳本
vim test.sh
#!/bin/bash
echo "hello ansible from script" > /opt/script.txt

chmod +x test.sh
           
//使用script執行腳本
ansible webserver -m script -a 'test.sh'

cat /opt/script.txt
           

ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單

ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單

5.12setup子產品

該子產品主要用于收集資訊,是通過調用facts元件來實作的。

facts就是變量,内建變量 。每個主機的各種資訊,cpu顆數、記憶體大小等會存在facts中的某個變量中。

檢視setup子產品資訊

ansible-doc -s setup
           
filter #隻傳回與這個shell樣式(fnmatch)通配符比對的事實。
//擷取mysql組主機的facts資訊
ansible webserver -m setup
           
//檢視記憶體
ansible webserver -m setup  -a 'filter="*mem*"'
ansible webserver -m shell -a 'free -m'
           

ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單

ansible自動化運維工具和常用子產品介紹一、ansible組成結構以及工作方式二、Ansible概述 三、Ansible部署 四、ansible常用指令五、ansible常用子產品 六.inventory 主機清單

六.inventory 主機清單

// Inventory支援對主機進行分組,每個組内可以定義多個主機,每個主機都可以定義在任何一一個或多個主機組内。
//如果是名稱類似的主機,可以使用清單的方式辨別各個主機。
vim /etc/ansible/hosts
[lz]
192.168.80.11:2222
#冒号後定義遠端連接配接端口,預設是ssh的22端口
192.168.80.1[2:5]

[zs]
db-[a:f].example.org
#支援比對a~f

//inventory中的變量
Inventory變量名                      含義
ansible host                        ansible連接配接節點時的IP位址
ansible_port                        連接配接對方的端口号,ssh連 接時預設為22
ansible_user                        連接配接對方主機時使用的主機名。不指定時,将使用執行ansible或ansible- playbook指令的使用者
ansible_password                    連接配接時的使用者的ssh密碼,僅在未使用密鑰對驗證的情況下有效
ansible_ssh_private_key_file        指定密鑰認證ssh連接配接時的私鑰檔案
ansible_ssh_common_args             提供給ssh、sftp、 scp指令的額外參數
ansible_become                     允許進行權限提升
ansible_become_method              指定提升權限的方式,例如可使用sudo/ su/runas等方式
ansible_become_user                提升為哪個使用者的權限,預設提升為root
ansible_become_password            提升為指定使用者權限時的密碼

(1)主機變量
[webservers]
192.168.80.11 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.80.20
192.168.80.21
192.168.80.22

[apache ]
192.168.80.3[0:3]

[webservers:children]
#表示為webservers 主機組中包含了nginx 組合apache組内的所有主機
nginx
apache