(二)ansible 使用
阿新 • • 發佈:2019-01-08
一,ansible 命令格式
#ansible <pattern> -m <module_name> -a <arguments> #單個伺服器 ansible 39.108.231.212 -m ping #多個伺服器,使用":"連線 ansible 192.168.1.190:192.168.1.191 -m ping #test 組 ansible test -m ping #所有伺服器 ansible all -m ping
二,ansible 常用模組
command、copy、fetch、file、ping、shell、service、setup、synchronize、yum
Asible 模組查詢
ansible-doc -l #可以直接檢視內建模組
ansible-doc -s file #file為模組名
1、命令執行模組
#重啟主機 -f 執行緒數 ansible all –a "hostname" –f 10 #shell模組 ansible all -m shell -a "hostname" #底層ssh 模組 ansible all -m raw -a "hostname"
2、檔案操作
#下發檔案,且授權以及備份 ansible all –m copy –a "src=/etc/hosts dest=/tmp/hosts owner=root group=root backup=yes" #備份的時候,只有在檔案發生了變化的時候,那麼會在遠端主機上進行備份,而不是在本機上進行備份原始檔,備份的是遠端主機上被修改的檔案 #上傳檔案(將把192.168.1.126伺服器上的/root/test.sh檔案上傳到ansible 伺服器,在/root目錄下面儲存為:192.168.1.126/root/test.sh) ansible 192.168.1.126 -m fetch -a "src=/root/test.sh dest=/root" #建立目錄 ansible all -m file -a "path=/tmp/hidir state=directory owner=opadmin mode=777" #建立空檔案 ansible all -m file -a "path=/tmp/hifile state=touch owner=opadmin mode=777" #建立軟連線(/tmp/test2.txt 是目標伺服器上的原始檔) ansible all -m file -a "path=/tmp/mytest.txt src=/tmp/test2.txt state=link" #刪除符號連結 ansible all -m file -a "path=/tmp/mytest.txt state=absent" #為檔案賦予許可權 ansible all -m file -a "dest=a.txt mode=600 owner=opadmin group=opadmin"
3,get_url模組
#下載url 檔案,儲存至tmp目錄下 ansible all -m get_url -a "url=http://download.redis.io/releases/redis-4.0.2.tar.gz dest=/tmp/"
4,git模組
#通過yum 模組安裝git ansible webserver -m yum -a "name=git state=latest" #克隆倉庫,儲存至/tmp/fastdfs ansible webserver -m git -a"repo=https://github.com/happyfish100/fastdfs.git dest=/tmp/fastdfs"
5,cron 模組
#每隔五分鐘所有機器都去172..18.0.1上面同步一次時間 ansible all -m cron -a "name='timesync' job='/usr/sbin/ntpdate 172.18.0.1 &> /dev/null' minute='*/5'" ansible all -m cron -a "name='check dirs' hour='5,2' job='ls -alh > /dev/null'" #刪除crontab ansible all -m cron -a "name='timesync' job='/usr/sbin/ntpdate 172.18.0.1 &> /dev/null' minute='*/5' state=absent" #註釋crontab ansible all -m cron -a "name='timesync' job='/usr/sbin/ntpdate 172.18.0.1 &> /dev/null' minute='*/5' state=present disabled=true"
6,service模組
#啟動服務 ansible all -m service -a "name=nginx enabled=true state=started" #重啟服務 ansible all –m service –a "name=nginx state=restarted" #停止服務 ansible all –m service –a "name=nginx state=stopped"
7,yum模組
#安裝 ansible all –m yum –a "name=httpd state=installed" #安裝指定版本的包 ansible all –m yum –a "name=httpd-2.6 state=installed" #安裝最新版本的包 ansible all –m yum –a "name=httpd state=latest" #解除安裝安裝包 ansible all –m yum –a "name=httpd state=removed"
8,使用者管理(user)
# 增加使用者 ansible all –m user –a "name=tom password=123456" # 刪除使用者 ansible all –m user –a "name=tom state=absent"
9、裝置資訊檢查
ansible all –m setup
10,script 指令碼執行模組
ansible all –m script –a "/root/demo/test.sh"
11,mount 遠端主機分割槽掛載
ansible all -m mount -a "name=/mnt/data src=/dev/sd0 fstype=ext4 opts=ro state=present"