4.ad-hoc运行临时命令

补充

运行临时命令

使用ansible命令来运行临时命令:

ansible host-pattern -m module [-a 'module arguments' ]  [-i inventory]

可以列出系统上安装的所有模块。

ansible-doc-1

查看模块数

ansible-doc -l |wc -l

要了解有关模块的更多信息,请访问在线Ansible文档,网址:

http://docs.ansible.com/ansible/latest/modules/modules_by_category.html

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hbMm2afS-1649681371154)(C:\Users\17589\AppData\Roaming\Typora\typora-user-images\image-20220409152556481.png)]

配置临时命令的连接

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yqkQDvnr-1649681371155)(C:\Users\17589\AppData\Roaming\Typora\typora-user-images\image-20220410111613500.png)]

Ad-hoc

简介

Ad-Hoc 是指ansible下临时执行的一条命令,并且不需要保存的命令,对于复杂的命令会使用playbook。Ad-hoc的执行

依赖于模块,ansible官方提供了大量的模块。 如:command、raw、shell、fifile、cron等,具体可以通过ansible-doc -l

进行查看 。可以使用ansible-doc -s module来查看某个模块的参数,也可以使用ansible-doc help module来查看该模块更

详细的信息。

命令说明

一个ad-hoc命令的执行,需要按以下格式进行执行:

ansible 主机或组 -m 模块名 -a '模块参数' ansible参数

●主机和组,是在/etc/ansible/hosts 里进行指定的部分,当然动态Inventory 使用的是脚本从外部应用里获取的主

机;

●模块名,可以通过ansible-doc -l 查看目前安装的模块,默认不指定时,使用的是command模块,具体可以查

看/etc/ansible/ansible.cfg 的“#module_name = command ” 部分,默认模块可以在该配置文件中进行修改;

●模块参数,可以通过 “ansible-doc -s 模块名” 查看具体的用法及后面的参数;

●ansible参数,可以通过ansible命令的帮助信息里查看到,这里有很多参数可以供选择,如是否需要输入密码、

是否sudo等。

用户说明

ansible在执行ad-hoc的时候,需要使用远程管理机上的一个用户身份,默认这个用户是root,而在实际生产环境中,

不建议直接使用root,而推荐使用一个普通用户,需要配置该普通用户可通过sudo提权。

下面是一个配置示例:

1.在被管理机上创建一个普通用户ansible,并配置sudo提权:

# 创建ansible用户
useradd ansible
# 设置ansible用户可免密提权
vim /etc/sudoers.d/ansible
ansible ALL=(ALL) NOPASSWD:ALL
chmod 400 /etc/sudoers.d/ansible
mkdir /home/ansible/.ssh
chown ansible.ansible /home/ansible/.ssh
chmod 700 /home/ansible/.ssh

2.在管理端修改ansible.cfg配置文件如下:

[default]
remote_user = ansible
ask_pass = False
[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False

3.将管理端用户的 id_rsa.pub 复制到被管理端

的 /home/ansible/.ssh//home/ansible/.ssh/authorized_keys 文件中,并设置该文件的权限为400

# 管理端执行:

ssh-copy-id -i .ssh/id_rsa.pub ansible@db1.example.com

需要说明的是,通过上面的操作,需要为ansible用户先创建密码,在实际生产当

中,不建议为该用户设置密码。可在安装系统时,提前将管理端公钥直接写入到

被管理节点的ansible用户下

命令执行模块

命令执行模块包含如下四个模块:

●command模块:该模块通过-a跟上要执行的命令可以直接执行,不过命令里如果有带有如下字符部分则执行不

成功 “ “<”, “>”, “|”, “&” ;

command模块包含以下选项:

Ø creates:一个文件名,当该文件存在,则该命令不执行 

Ø free_form:要执行的linux指令 

Ø chdir:在执行指令之前,先切换到该指定的目录 

Ø removes:一个文件名,当该文件不存在,则该选项不执行 

Ø executable:切换shell来执行指令,该执行路径必须是一个绝对路径 

注解:command模块不是调用的shell的指令,所以没有bash的环境变量,也不能使用shell的一些操 

作方式,其他和shell没有区别

●shell 模块:用法基本和command一样,不过其是通过/bin/sh进行执行,所以shell 模块可以执行任何命令,就像在本机执行一样;

●raw模块:用法和shell模块一样,也可以执行任意命令,就像在本机执行一样;和command、shell模块不同的是

其没有chdir、creates、removes参数

●script模块:将管理端的shell 在被管理主机上执行,其原理是先将shell 复制到远程主机,再在远程主机上执

行,原理类似于raw模块。

shell模块

shell模块包含如下选项:

●creates:一个文件名,当该文件存在,则该命令不执行

●free_form:要执行的linux指令

●chdir:在执行指令之前,先切换到该指定的目录

●removes:一个文件名,当该文件不存在,则该选项不执行

chdir示例:

# 三个命令都会返回执行成功的状态。不过实际上只有前两个文件会被创建成功。使用raw模块的执行的结果文件事

ansible 192.168.1.1 -m command -a 'chdir=/tmp/test.txt touch test.file'
ansible 192.168.1.1 -m shell -a 'chdir=/tmp/test.txt touch test2.file'
ansible 192.168.1.1 -m raw -a 'chdir=/tmp/text.txt touch test3.file'

creates与removes示例:

ansible 192.168.1.1 -a 'creates=/tmp/server.txt uptime' #当/tmp/server.txt文件存在时,则不执行

ansible 192.168.1.1 -a 'removes=/tmp/server.txt uptime' #当/tmp/server.txt文件不存在时,则不执行

script模块

示例:

#要执行的脚本文件script.sh内容如下:

#/bin/bash

ifconfig

df -hT

# 执行ansible指令:

ansible 10.212.52.252 -m script -a 'script.sh'

练习:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CkSRI7zS-1649681371156)(C:\Users\17589\AppData\Roaming\Typora\typora-user-images\image-20220410111757700.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6cnDtkwX-1649681371156)(C:\Users\17589\AppData\Roaming\Typora\typora-user-images\image-20220410111832625.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SLFpHkhB-1649681371156)(C:\Users\17589\AppData\Roaming\Typora\typora-user-images\image-20220410111937654.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KMhUxaRo-1649681371156)(C:\Users\17589\AppData\Roaming\Typora\typora-user-images\image-20220410112013060.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qreEfoiu-1649681371156)(C:\Users\17589\AppData\Roaming\Typora\typora-user-images\image-20220410112047773.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YiYkXw1q-1649681371157)(C:\Users\17589\AppData\Roaming\Typora\typora-user-images\image-20220410112128434.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AuQtzUiJ-1649681371157)(C:\Users\17589\AppData\Roaming\Typora\typora-user-images\image-20220410112159030.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iqTewCpE-1649681371157)(C:\Users\17589\AppData\Roaming\Typora\typora-user-images\image-20220410112228639.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v8mjDBmJ-1649681371157)(C:\Users\17589\AppData\Roaming\Typora\typora-user-images\image-20220410112252329.png)]

img-KMhUxaRo-1649681371156)]

[外链图片转存中…(img-qreEfoiu-1649681371156)]

[外链图片转存中…(img-YiYkXw1q-1649681371157)]

[外链图片转存中…(img-AuQtzUiJ-1649681371157)]

[外链图片转存中…(img-iqTewCpE-1649681371157)]

[外链图片转存中…(img-v8mjDBmJ-1649681371157)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZFFht7On-1649681371158)(C:\Users\17589\AppData\Roaming\Typora\typora-user-images\image-20220410112326108.png)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值