環境準備python
yum -y install openssh-clients wgetlinux
rpm安裝web
centos系統須要epel源,shell
yum –y install epel-releasecentos
yum –y install ansible # 默認安裝在/etc/ansible/目錄下tomcat
配置文件認識ssh
ansible.cfg : # 主配置文件ide
hosts: # 主機,能夠填ip或者主機名,注意這個webservers很是的重要和ansible.cfg配置文件有極大關係,以及下文要用這個測試
roles: # 權限fetch
配置密鑰與被管理主機通訊,通訊方式爲SSH方式
在管理機也就是安裝anbisle這個服務的機器上,生成ssh密鑰,並把這個密鑰複製給被管理機
生成密鑰: ssh-keygen -t rsa,默認在/root/.ssh/id_rsa
拷貝密鑰到被管理機: ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.17.31.43
若是有如下錯誤,則表示沒有安裝openssh-clients庫,解決方法:yum -y install openssh-clients
使用ansible命令進行測試使用驗證
命令格式:ansible <host-pattern> [-m module_name] [-a args] [options],以下:
ansible all -m ping
all 表示檢測全部被管理機器, –m ping 表示使用ping這個模塊,ping通了會返回一個pong值
命令做用:測試目標主機是否存活,如存活會返回success JSON格式的返回值,
經常使用命令介紹
ansible-doc:
做用:獲取模塊列表以及用法,相似linux --help的做用
ansible-doc –l:
做用:獲取列表
運行此命令可能遇到遇到的錯誤,以下:
解決方法:
sed -i 's/^#deprecation_warnings = True/deprecation_warnings = False/' /etc/ansible/ansible.cfg
rm -f /usr/lib/python2.6/site-packages/ansible/modules/extras/cloud/misc/rhevm.py
ansible-doc –s:
做用:獲取指定模塊的使用方法,如ansible-doc –s ping
命令格式
ansible <host-pattern> [-f forks] [-m module_name] [-a args]
<host-pattern> # 在ansible.cfg配置文件中指明要管控哪些主機,這些主機能夠用一個組的方式管控,如[webserver] [dbserver] ,all 設置全部
[-f forks] # 每一批管控多少個主機,默認貌似是5個
[-m module_name] # 指要用哪一種模塊進行管理操做,注意全部的操做必需要經過模塊來指定
[-a args] # 指明模塊所用參數是哪些,除了command模塊是直接輸出執行命名以外,通常是key-vaule格式
經常使用模塊
command模塊:
如:ansible webservers -m command -a "ls /var/log/",注意這個commad模塊不支持管道命令(|),shell才支持。
也能夠省略這個commad命令不寫,ansible webservers -a "ls /var/log/"
如給給遠程主機添加用戶:ansible webservers -a "useradd tomcat"
到被管控機器上去看一下172.17.31.43是否添加成功:
shell模塊
做用: 遠程主機在shell進程下運行命令,支持shell特性,支持管道
如給遠程主機上的用戶添加密碼:ansible webservers -m shell -a "echo 123456 | passwd --stdin tomcat" --stdin 這個選項用於 從標準輸入 管道讀入新的密碼
copy模塊
做用:把當前主機文件複製到被管控主機機器上,能夠指定mode(權限)、own(所屬主)、group(所屬組)
如:ansible all -m copy -a "src=/soft/test_ansible_copy_model.txt dest=/opt/ mode=755 owner=tomcat group=tomcat"
注意-a後面的參數格式必定要對,否則會報以下錯誤:
cron模塊
做用: 在被管控主機上制定crontab週期性計劃任務
格式:ansible all -m cron -a "minute=*/10 job='/sbin/ntpdate 172.17.31.44 &> /dev/null' name=synctime"
minute=vaule hour=vaule day=vaule month=vaule weekday=vaule job=vaule name=value(必須填寫) state=vaule
一樣的,命令參數不要寫錯了,寫錯了就會有如下紅色提示:
到被管控機器上看crontab -l 或者crontab -e :
也能夠刪除遠控主機上的任務計劃:ansible all -m cron -a "state=absent name=synctime"
fetch模塊
做用:和copy模塊相反,從被管控主機上拷貝文件到管控主機上
如:ansible all -m copy -a "src=/opt/test_ansible_copy_model1.txt dest=/opt/test/ flat=yes"
flat=yes做用:
當dest=/opt/test/,test_ansible_copy_model1.txt會保存在/opt/test/目錄下
當dest=/opt/test,會拷貝test_ansible_copy_model1.txt文件,並命名爲test
file模塊
做用:對文件、文件夾、超連接的建立、拷貝、移動、刪除操做
test