自動化運維工具ansible常用模組

2021-10-05 01:22:11 字數 3635 閱讀 9021

[root@nb01 ~]# ansible-doc -l | wc -l

1378 ###模組數高大1378個

[root@nb01 ~]# ansible-doc -help ###ansible-doc 的幫助命令

[root@nb01 ~]# ansible-doc ping##檢視ping模組的詳細幫助相當於shell的man幫助

[root@nb01 ~]# ansible web -m command -a 'uptime'		 ##檢視公司web集群的負載

[root@nb01 ~]# ansible all -m command -a 'date+%f_%t' ##檢視所有主機的日期和時間

command模組侷限性:

執行不了由shell解析的命令;不能解析系統變數;執行命令中有< 、>、|、&等符號都執行不了;

[root@nb02 ~]# ansible all -m command -a 'echo $' ##解析不了

原因是:該模組不啟動shell;直接在ssh程序中執行命令;

[root@nb02 ~]# ansible cache -m command -a 'ps-ef | grep sshd' ##因為管道符 解析不了

[root@nb02 ~]# ansible cache -m shell -a 'ps-ef | grep sshd'						##換成shell模組可以解析

[root@nb02 ~]# ansible all -m shell -a 'echo $' ##可以解析輸出所有主機名

**所以我們一般工作中shell的使用率高**

ansible cache -m shell -a 『cd /tmp』

ansible cache -m shell -a 『touch testfile』**** ##檔案在根下建立的原因是cd在在遠端連線是失效

**ansible web -m shell -a 「echo $」

ansible web -m shell -a 『echo $』

『echo $』—》第一次解析(本地主機不解析)—》傳送給遠端主機–》(遠端主機解析;輸出為遠端主機的主機名)—》所以輸出結果是web集群主機的主機名web1…webn

###相當於ssh web1 『echo $』 和 ssh web1 「echo $」 的執行

所以在[root@nb02 ~]# id nb ##檢視系統沒有nb使用者

id: nb: no such user

[root@nb02 ~]# ansible web1,cache -m command -a 『useradd nb』 ##給web1、cache主機建立nb使用者並設定密碼123

[root@nb02 ~]# ansible web1,cache -m shell -a 『echo 123 | passwd --stdin nb』

[root@nb02 ~]# cd /usr/

[root@nb02 usr]# cd ansible

[root@nb02 ansible]# vim uu.sh ##本地建立指令碼然後遠端執行指令碼;給web集群所有主機新增使用者;有nb沒wk;wk密碼是456

#!/bin/bash

id nb

if [ $? != 0 ];then

useradd wk

echo 456 | passwd --stdin wk

fi[root@nb02 ansible]# ansible web -mscript-a 『./uu.sh』 ##遠端執行指令碼;

**使用yum包管理器管理軟體包

name要管理的軟體包名稱

state動作(installd#安裝 removed#解除安裝)**

給所有db集群安裝mariadb資料庫軟體
[root@nb02 ~]# ansible db -m yum -a 'name="mariadb-server" state=installed'
[root@nb02 ~]# ansible cache -m yum -a 『name=lrzaz state=removed』

name:必選選項;服務名稱

enabled:是否開機自啟 yes|no

sleep :執行restartd;會在stop和start之間睡眠幾秒
##給cache快取伺服器上的ssh服務設定啟動和開機自啟

[root@nb02 ~]# ansible cache -m service -a 『name=「sshd」 enabled=「yes」 state=「started」』

冪等性

複製檔案到遠端主機:
src(代表源主機):複製檔案到遠端主機;絕對路徑和相對路徑都可以;路徑為目錄時會遞迴複製。 若路徑以「/」結尾,只是複製目錄裡邊的內容;若路徑不以『/』結尾,則複製包含目錄在內的所有內容,類似rsync;

##dest (代表遠端主機):遠端主機的絕對路徑。如果原始檔是個目錄則該路徑必須是個目錄

#backup:覆蓋前先備份原檔案、備份檔案包含時間資訊等;有兩個選項yes|no

#force :若目標主機包含該檔案,但內容不同,如果設定為yes則強制覆蓋;為no時,則只有當目標主機的目標位置不存在時該檔案才會複製。預設為yes;

[root@nb02 ~]# ansible all -m copy -a 『src=/etc/resolv.conf dest=/etc/resolv.conf』 ##複製檔案

[root@nb02 ~]# ansibe all -m copy -a 『src=/etc/yum.repos.d/ dest=/etc/yum.repos.d/』 ##複製目錄

****類似sed的一種行編輯替換模組

path目標檔案檔案

regexp 正規表示式 要修改的行

line 最終修改的結果****

##修改bin-log日誌

[root@nb01 ~]# ansible db -m lineinfile -a 'path="/etc/my.cnf" rregexp="^binlog-format" line="binlog-format = row" '

類似sed的一種行編輯替換模組

path 目的檔案

regexp正規表示式 要修改大位置

replace 替換後的結果

例項:替換指定字元;row -->mixed

[root@nb01 ~]# ansible db -m replace -a 'path="/etc/my.cnf" regexp="row" replace="mixed"'

主要用於獲取主機資訊;playbooks裡邊經常會用到的另乙個引數gather_facts與該模組相關;setup模組經常使用的是filer引數
#####例項: filer過濾所需資訊

[root@nb01 ~]# ansible cache -m setup -a 『filter=ansible_distrlbution』

ansible 自動化運維工具

ansible 自動化運維工具 批量管理 python開發 無客戶端 基於ssh服務 22 安裝 1.ansible包在擴充套件源,epel release yum y install epel release yum repolist 2.安裝,ansible yum y install ansi...

自動化運維工具 ansible

ansible ansible 一 簡介和部署 ansible 二 主機清單管理 ansible 三 配置和命令集 ansible 四 常用模組 ansible 五 palybooks劇本 ansible 彙總 ansible 中文權威指南 本部落格 至 小左先森的部落格 ansible ansib...

ansible 自動化運維工具

ansible是新出現的自動化運維工具,基於python開發,集合了眾多運維工具 puppet cfengine chef func fabric 的優點,實現了批量系統配置 批量程式部署 批量執行命令等功能。ansible是基於模組工作的,本身沒有批量部署的能力。真正具有批量部署的是ansible...