[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...