ansible是什么? 由python2.7開發(fā)的一個基于模塊在遠(yuǎn)程主機(jī)上批量執(zhí)行命令或者腳本的一個工具 安裝 下載wget yum install -y wget 將epel源下載到本地 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 安裝ansible yum install -y ansible ansible命令格式 shell Usage: ansible <host-pattern> [options] ansible 192.xxx.xxx.xx -m?ping,第一次使用報(bào)錯主機(jī)名為空,需要進(jìn)行配置 ping走什么協(xié)議 ICMP rpm -ql ansible|more # 查看ansible生成的文件
進(jìn)入etc下找到cfg文件進(jìn)行配置
? rmp -ql?ansible |?more,查看生成的文件并一屏顯示,user/bin中的文件為2進(jìn)制
?
? ? vi /etc/ansible/hosts,此時執(zhí)行報(bào)錯,因?yàn)閍nsible底層走的事ssh協(xié)議,所以需要執(zhí)行密碼 ? 當(dāng)輸入密碼后,就可以連接成功
?ssh -?keygen,執(zhí)行后一直回車
出現(xiàn)這樣的界面后就可以進(jìn)行拷貝連接,加上你的用戶名跟端口ip拷貝成功后,就可以使用密鑰進(jìn)行連接了
host-pattern的格式 - 單個的ip地址
此時再使用ansible進(jìn)行ping就不要使用密碼,可以一臺一臺的機(jī)器是否在線,ansible 192.168.226.101 -m ping #單獨(dú)機(jī)器的ping
此方法還可多個ip同時使用,ansible 192.168.226.101,192.168.226.102 -m ping #多個機(jī)器的ping
ansible?all -m?ping,all將全部的機(jī)器都探測是否在線,ansible all -m ping #全部機(jī)器
按功能進(jìn)行分組
? www[001:006].example.com? 代表 www001-www006(包含),測試ansible是否包含結(jié)尾
ansible web -m ping #單個的組
ansible 'web:&db' -m ping #多個組的交集
ansible 'web:!db' -m ping #多個組的差集,在前面但是不在后面 ? ? ansible-doc 命令格式 ansible-doc [-l|-F|-s] [options] [-t <plugin type> ] [plugin] ansible -doc -l|wc -l ,查看所有的模塊 ? ? command ansible web -m command -a "pwd"
ansible web -m command -a "ls"
ansible web -m command -a "chdir=/tmp pwd" #切換目錄并執(zhí)行命令
ansible web -m command -a "creates=/tmp pwd" #因?yàn)閠mp目錄存在,pwd不會執(zhí)行
ansible web -m command -a "creates=/tmp2 pwd" #因?yàn)閠mp2不存在,pwd執(zhí)行,用來判斷tmp是否?存在,并沒有創(chuàng)建
ansible web -m command -a "removes=/tmp2 pwd" #因?yàn)閠mp2不存在pwd不執(zhí)行
echo "1234" |passwd --stdin alex #設(shè)置用戶的密碼,無需二次確認(rèn)密碼直接設(shè)置密碼的方式
使用ansible命令設(shè)置賬戶密碼
ansible web -m shell -a "echo '1234' |passwd --stdin alex",密碼設(shè)置成功
ansible web -m shell -a "chdir=/tmp pwd"?
shell腳本文件,文件結(jié)尾名為sh,/bin/bash代表解釋器
執(zhí)行會出現(xiàn)權(quán)限不足的情況,此時要增加一個執(zhí)行的權(quán)限
增加執(zhí)行的權(quán)限后再執(zhí)行就沒有問題了
指定解釋器的方式執(zhí)行腳本文件 執(zhí)行shell腳本 ansible 192.168.226.101 -m shell -a "bash a.sh" #執(zhí)行shell腳本 ansible 192.168.226.101 -m shell -a "/root/a.sh" # 執(zhí)行shell腳本,文件要有執(zhí)行的權(quán)限,執(zhí)行shell腳本的第二種方法,第二種的路徑方法,要提前給文件加上執(zhí)行的權(quán)限
python2.7執(zhí)行中文的方式 env系統(tǒng)當(dāng)前環(huán)境 ?ansible 192.168.226.101 -m shell -a "/root/a.py" #執(zhí)行Python文件
script
查看幫助信息
? ansible db -m script -a "/root/a.sh" #執(zhí)行本地的文件,管控機(jī)的文件
ansible db -m script -a "creates=/root/a.sh /root/a.sh" # 判斷被控機(jī)上的文件是否存在,如果不存在,就執(zhí)行,如果存在,就跳過 ansible db -m script -a "creates=/tmp /root/a.sh" #判斷被控機(jī)上的文件
?copy backup #創(chuàng)建一個備份文件,以時間戳結(jié)尾 ansible web -m copy -a "src=/etc/fstab dest=/tmp/f" #復(fù)制本地文件到遠(yuǎn)程主機(jī),并修改文件名,多次執(zhí)行不會改變,因?yàn)閏hecksum值是一樣的 ansible web -m copy -a "src=a.sh dest=/tmp/a.sh backup=yes" #復(fù)制本地文件,并備份 ? ansible web -m copy -a "src=a.sh dest=/tmp/a.sh backup=yes group=alex mode=755"# 復(fù)制本地文件到遠(yuǎn)程主機(jī),并指定屬組和權(quán)限 ansible web -m copy -a "src=/etc/init.d dest=/tmp backup=yes group=alex mode=755" #復(fù)制本地的目錄到遠(yuǎn)程主機(jī),修改目錄權(quán)限,則目錄里面的文件也會跟著變更 ? ansible web -m copy -a "src=/etc/init.d/ dest=/tmp backup=yes group=alex mode=755" #復(fù)制本地目錄下的所有文件, ? ansible web -m copy -a "content='大弦嘈嘈如急雨,小弦切切如私語,嘈嘈切切錯 雜彈,大珠小珠落玉盤' dest=/tmp/b" #直接往文件里面寫內(nèi)容,覆蓋寫,慎用
? ? ? 來源:http://www./content-4-181751.html |
|