一 ad-hoc使用场景
ad-hoc更倾向于解决简单、临时性任务。
1.1 ad-hoc基础命令
基本语法:
1 ansible <host-pattern> [options]
<host-pattern>:指inventory中定义的主机或主机组,可以为ip、hostname、inventory中的group组名等。同时支持具有“.”、“*”或“:”等特殊字符的匹配型字符串。
提示:<>表示该选项为必选,[]表述是该选项中的参数任选其一或多个。
1 [options]: 2 -v,--verbose:输出更详细的执行过程信息,-vvv可得到执行过程所有信息; 3 -i path,--inventory=path:指定inventory信息,默认/etc/ansible/hosts; 4 -f num,--forks=num:并发线程数,默认5个线程; 5 --private-key=private_key_file:指定秘钥文件; 6 -m name,--module-name=name:指定执行使用的模块。
提示:-m指定模块名称, 默认情况下是指command模块, 可以省略不写。
1 -m directory,--module-path=directory:指定模块存放路径,默认/usr/share/ansible; 2 -a 'arguments',--args=‘arguments’"模块参数; 3 -k,--ask-pass ssh:认证密码; 4 -k,ask-sudo=pass sudo:用户的密码(--sudo时使用); 5 -o,--one-line:标准输出至一行; 6 -s,--sudo:相当于linux系统下的sudo命令; 7 -t directory,--tree=directory:输出信息至directory目录下,结果文件以远程主机命名; 8 -t seconds,--timeout=seconds:指定连接远程主机的最大超时,单位是秒; 9 -b num,--background=num:后台执行命令,超num秒后中止正在执行的任务; 10 -p num,--poll=num:定期返回后台任务进度; 11 -u username,--user=username:指定远程主机以username运行命令; 12 -u sudo_username,--sudo-user=sudo_username:使用sudo,相当于linux系统下的sudo命令; 13 -c connection,--connection=connection:指定连接方式,可用选项paramiko(ssh)、ssh、local,local方式常用于crontab和kickstarts; 14 -l subset,--limit=subset:指定运行主机; 15 -l ~regex,--limit=~regex:指定运行主机(正则); 16 --list-hosts:列出符合条件的主机列表,不执行任何命令。
- 场景1:检查myhost主机组所有主机是否存活.
1 [root@manage ~]# ansible myhost -f 5 -m ping
解析:
172.24.8.32:表示执行命令的主机;
success:表示命令成功执行;
=> {……}:表示详细返回结果;
"changed": false,:表示没有对主机做变更;
"ping": "pong":表示执行ping命令返回结果为pong。
- 场景2:返回myhost组所有主机的hostname,并打印最详细的执行过程到标准输出。
1 [root@manage ~]# ansible myhost1 -s -m command -a 'hostname' -vvv
解析:
执行过程图如下:
- 场景3:列出myhost组所有主机列表。
1 [root@manage ~]# ansible myhost --list-hosts
- 场景4:将172.24.8.31服务器以root执行sleep 20,设置最大连接超时为2s,且设置为后台运行模式,执行过程每2s输出一次进度,如5s还未执行完则终止该任务。
1 [root@manage ~]# time ansible 172.24.8.31 -b 5 -p 2 -t 2 -m command -a 'sleep 20' -u root
1.2 通过ad-hoc查看系统设置
- 场景1:批量查看myhost组所有主机的磁盘容量(command模块)。
1 [root@manage ~]# ansible myhost -a "df -hl"
解析:rc=0表示resultcode=0,即命令执行成功。
- 场景2:批量查看远程主机内存使用情况(shell模块)。
1 [root@manage ~]# ansible myhost -m shell -a "free -m"
二 ansible模块使用
2.1 ad-hoc查看模块介绍
ansible-doc
ansible-doc是ansible模块文档说明,针对每个模块都有详细的用法及应用案例介绍,类似linux的man。
基本语法:
1 ansible-doc [-l|-f|-s] [options] [-t <plugin type> ] [plugin]
参数:
-v,--version:显示工具版本号;
-h,--help:显示该help说明;
-m module_path,--module-path=module_path:指定ansible模块的默认加载目录;
-l,--list:列出所有可用模块;
-s,--snippet:只显示playbook说明的代码段;
示例:
1 [root@manage ~]# ansible-doc -l #列出支持的模块 2 [root@manage ~]# ansible-doc yum #查看模块功能说明
- 场景1:安装redhat-lsb并查看服务器系统版本号。
1 [root@manage ~]# ansible myhost -m yum -a 'name=redhat-lsb state=present' #安装软件
解析:
"changed":true:主机是否有变更,true表示有,false表示没有;
"msg":安装过程信息;
"rc":0,resultcode:结果返回码,非0返回码往往是红色并且错误的返回。
1 [root@manage ~]# ansible myhost -a 'lsb_release -a'
- 场景2:为服务器安装mysql,并启动,同时设置为开机启动.
1 [root@manage ~]# ansible myhost -m yum -a 'name=mariadb,mariadb-server state=present' 2 [root@manage ~]# ansible myhost -m service -a 'name=mariadb state=started enabled=yes'
三 ansible主机、用户与组管理
3.1 主机变更
- 情景1:指定组内特定主机变更。
1 [root@manage ~]# ansible myhost -m service -a 'name=ntpd state=started' --limit "172.24.8.31"
--limit:通过limit参数限定主机做变更
- 场景2:通过指定具体ip限定主机做变更。
1 [root@manage ~]# ansible 172.24.8.32 -m command -a "systemctl start ntpd"
- 场景3:指定多台主机做变更。
1 [root@manage ~]# ansible 172.24.8.31:172.24.8.33 -m command -a "systemctl start ntpd"
解析:使用:指定多台服务器,:非31-33,而是31和33两台主机。
1 [root@manage ~]# ansible 172.24.8.3* -m command -a "systemctl stop ntpd"
3.2 linux用户管理模块user
- 场景1:新增用户
需求描述:为myhost1服务器,新增用户dba,使用bash shell,附加组为adm、mysql,家目录为/home/dba。
1 [root@manage ~]# ansible myhost1 -m user -a "name=dba shell=/bin/bash append=yes groups=adm,mysql home=/home/dba state=present"
- 场景2:修改用户属组
需求描述:修改dba附加
您可能感兴趣的文章:
如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!
相关文章:
-
-
Linux系统怎么更改默认网关?Linux系统中想要修改默认的网关,该怎么操作呢?下面我们就来看看详细的教程,需要的朋友可以参考下... 19-12-11 [阅读全文]
-
本文中为大家带来的是在linux系统中安装Rabbitmq的方法,有需要的朋友可以阅读本文参考一下... 20-01-10 [阅读全文]
-
linux系统怎么使用vmstat命令显示虚拟内存状态?linux系统中想要查看虚拟内存的状态,该怎么查看呢?下面我们就来看看详细的教程,详细请看下文介绍...... [阅读全文]
-
linux系统怎么使用alias创建命令别名?linux系统中有很多命令,今天我们就来看看alias命令的使用方法,详细请看下文介绍... 20-02-13 [阅读全文]
-
linux怎么快速创建创建一次性的计划任务?linux系统总想要创建一次性任务,该怎么创建呢?下面我们就来看看详细的教程,需要的朋友可以参考下... 20-02... [阅读全文]
-
linux下文本编辑器vim的使用方法(复制、粘贴、替换、行号、撤销、多文件操作)
这篇文章主要介绍了linux下文本编辑器vim的使用方法,包括复制、粘贴、替换、行号、撤销、多文件操作,需要的朋友可以参考下... 20-02-16 [阅读全文] -
Linux虚拟机怎么拍摄快照并管理?安装Linux虚拟机后,想要将操作步骤保存成快照,并管理,该怎么实现呢?下面我们就来看看详细的教程,需要的朋友可以参考下..... [阅读全文]
-
linux中crontab计划任务怎么删除?linux中想要删除crontab计划任务,该怎么删除呢?下面我们就来看看详细的教程,需要的朋友可以参考下... 2... [阅读全文]
-
linux系统比windows系统声音小怎么办?电脑安装linux系统后,发现比windows系统的声音小,想要将声音变大,该怎么办呢?下面我们就来看看详细的教... [阅读全文]
-
linux怎么查看防火墙是否开启并清除防火墙规则?linux系统想要看看有没有开启防火墙,怎么删除防火墙规则?下面我们就来看看详细的教程,需要的朋友可以参考下.... [阅读全文]
-
网友评论