1. 程式人生 > 實用技巧 >Ansible命令列方式執行

Ansible命令列方式執行

Ansible ad-hoc


什麼是ad-hoc?


臨時命令,執行完不會儲存,類似於批量執行命令。


ansible的選項


-i		# 指定主機清單
ansible rsync -m ping -i 1.txt

-m		# 指定模組
-a		# 指定動作
[root@m01 ~]# ansible nfs_group -a 'df -h'
[root@m01 ~]# ansible nfs_group -m shell -a 'df -h'

ad-hoc返回的顏色


  • 綠色:被管理的主機沒有發生修改
  • 黃色:被控主機發生了變更
  • 粉色:ansible發出的警告
  • 紅色:報錯

檢視幫助文件


[root@m01 ~]# ansible-doc shell
# shell 是模組的名稱,想檢視什麼模組直接在後面接上即可。

ad-hoc模組

command 模組


不支援管道符等特殊字元,用於執行系統命令,不僅限於linux。和shell模組差不多。

[root@m01 ~]# ansible web_group -m shell -a 'df -h'
[root@m01 ~]# ansible web_group -m command -a 'df -h'


shell 模組


用於執行命令

[root@m01 ~]# ansible web_group -m shell -a 'df -h'

script 模組


在本地執行的指令碼,功能可以同步到其它機器上面去,被控制機器不需要指令碼。

[root@m01 ~]# ansible web01 -m script -a '/root/a.sh'

yum 模組


# 檢視幫助
[root@m01 ~]# ansible-doc yum

# 安裝httpd
[root@m01 ~]# ansible web_group -m yum -a 'name=httpd state=latest'
[root@m01 ~]# ansible web_group -m yum -a 'name=httpd state=present'
# 一般使用present

# 解除安裝httpd
absent
[root@m01 ~]# ansible web_group -m yum -a 'name=httpd state=absent'

# 指定網路的rpm包
[root@m01 ~]# ansible web_group -m yum -a 'name=https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/x86_64/zabbix-agent-4.4.1-1.el7.x86_64.rpm state=present'

# 類似於
yum -y install https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/SRPMS/zabbix-4.4.1-1.el7.src.rpm 

# 在db組安裝nginx,前提是db組上的主機有本地安裝的包。
[root@m01 ~]# ansible db_group -m yum -a 'name=/root/nginx-1.18.0-1.el7.ngx.x86_64.rpm state=present'

需要掌握的方法

name:
	指定安裝的軟體。
	可以是本地的也可以是遠端的連結包
state:
	prsent	正常安裝,類似於yum -y install 
	absent	刪除、解除安裝
	lastet	最新版本

yum_repository 模組


[root@m01 ~]# ansible-doc yum_repository

[root@m01 ~]# ansible web_group -m yum_repository -a 'name=gong description=gong baseurl=zp.gong.com gpgcheck=0 enabled=no'

# web01生成的檔案
[root@web01 ~]# cat /etc/yum.repos.d/gong.repo 
[gong]
baseurl = zp.gong.com
enabled = 0
gpgcheck = 0
name = gong

# file指的是yum倉庫的檔名,gong是[ ] 裡面的內容,des是name的內容
[root@m01 ~]# ansible web_group -m yum_repository -a 'file=nginx name=gong description=gong baseurl=zp.gong.com gpgcheck=0 enabled=no'

# web01生成的檔案
[root@web01 ~]# cat /etc/yum.repos.d/nginx.repo 
[gong]
baseurl = zp.gong.com
enabled = 0
gpgcheck = 0
name = gong

# 刪除yum倉庫檔案,最好是把檔名和倉庫名都加上,防止誤刪。
[root@m01 ~]# ansible web_group -m yum_repository -a 'file=nginx name=gong state=absent'

# 直接在檔案裡面新增倉庫,file不變,其它引數改變就會加上
[root@m01 ~]# ansible web_group -m yum_repository -a 'file=nginx name=liao description=liao baseurl=tencent.gong.com gpgcheck=0 enabled=yes'


[root@web01 /etc/yum.repos.d]# cat nginx.repo 
[xiao]
baseurl = qq.gong.com
enabled = 1
gpgcheck = 0
name = xiao

[liao]
baseurl = tencent.gong.com
enabled = 1
gpgcheck = 0
name = liao


name        #指定倉庫名,如果沒有file,則倉庫名為檔名
baseurl     #指定yum源
description   # yum配置檔案中的name
gpgcheck    #指定檢查祕鑰,也可用數字
    no
    yes

enabled     #是否啟用倉庫
    no
    yes


FBI WARNING

QQ:1402122292 認準原創sheldon 別人叫我曉東