Ansible自动化运维(二)ad-hoc 模式详解

👨‍🎓博主简介

  🏅云计算领域优质创作者
  🏅华为云开发者社区专家博主
  🏅阿里云开发者社区专家博主
💊交流社区:运维交流社区 欢迎大家的加入!
🐋 希望大家多多支持,我们一起进步!😄
🎉如果文章对你有帮助的话,欢迎 点赞 👍🏻 评论 💬 收藏 ⭐️ 加关注+💗


文章目录

  • Ansible 中的 ad-hoc 模式
    • 1、Ansible帮助命令
    • 2、ad-hoc 模式执行流程
    • 3、Ansible中常见的返回值
    • 4、常用模块
    • 5、常用模块的用法
      • 5.1 command 模块:用于远程执命令,不支持管道
      • 5.2 shell 模块:远程执行命令,支持管道
      • 5.3 raw 模块:ssh登录,再执行
      • 5.4 script 模块:远程执行本地脚本
      • 5.5 yum 模块:远程安装软件
      • 5.6 copy 模块:推送文件
      • 5.7 file 模块:对文件操作
      • 5.8 service 模块:控制启动关闭服务
      • 5.9 cron 模块:定时任务
      • 5.10 mount 模块:用于管理设备挂载与卸载
      • 5.11 user/group 模块:用于管理的用户创建与删除
      • 5.12 unarchive 模块:解压缩模块
      • 5.13 get_url 模块:下载文件
      • 5.14 setup 模块:获取主机信息
  • 相关文章

Ansible 中的 ad-hoc 模式

Ad-hoc模式的使用场景:

  • 查看某个进程的信息
  • 拷贝日志到本地

Ad-hoc模式的命令格式 :

ansible 主机组名称 -m 模块 -a “具体命令”常用选项:
-m 指定要使用的模块,不指定默认使用command模块 
-a 指定要执行的具体命令
-i  指定自定义的主机清单配置文件 
-f  一次返回几个结果

1、Ansible帮助命令

ansible-doc 		#帮助命令 
ansible-doc -l   	#列出所以的模块
ansible-doc 模块名   #查看模块的详细信息
ansible-doc 模块名 -s  #查看模块的选项使用说明

2、ad-hoc 模式执行流程

模块执行的工作流程:

  • 1.主控端命令行执行命令;

  • 2.将模块拷贝到受控端;

  • 3.按照模块定义的操作在受控端执行;

  • 4.返回信息,删除受控端模块;

说明:

ansible模块可以使用的前提是:主控端与受控端python版本一致,并且Ansible的模块是幂等执行的

Ansible执行命令的返回值颜色:

屎黄色:执行命令成功,并且做了修改;

草帽绿:执行命令成功,只查看信息,没有修改

玫瑰红:执行失败,报错

葡萄紫:表示对命令发错的操作有警告信息

比如上面,最开始的主机清单配置规则中,返回的结果就是绿色的,表示只查看,并不会做修改。

3、Ansible中常见的返回值

返回值返回值含义
changed几乎所有的Ansible模块都会返回该变量,表示模块是否对远程主机执行了修改操作
failed如果模块未能执行完成,将返回failed为true
msg模块执行失败的原因,常见的错误如ssh连接失败
rc与命令行工具相关的模块会返回rc,表示执行Linux命令的状态码
stdout与rc类似,返回的是标准输出的结果
stderr与rc类似,返回的是标准错误的结果
backup_file所有存在backup选项的模块,用来返回备份文件的路径
results应用在playbook中存在循环的情况,返回多个结果

4、常用模块

  • 远程命令相关
1. command  	# 默认使用模块,用于远程执命令,不支持管道
2. shell   		# 远程执行命令,支持管道 
3. raw    		# ssh登录,再执行
4. script   	# 远程执行本地脚本
5. yum			# 远程安装
6. copy			# 推送文件
7. file			# 对文件操作
8. service		# 控制启动关闭服务
9. systemd   	# 控制启动关闭服务
10. cron		# 定时任务模块
11. mount		# 挂载与卸载模块
12. user/group	# 用于管理的用户创建与删除
13. unarchive	# 解压缩模块
14. get_url		# 下载文件,类似于curl
15. firewalld	# 防火墙
16. selinux		# selinux
17. setup		# 获取主机信息
18. git			# git命令模块
19. sysctl      # 控制内核

5、常用模块的用法

5.1 command 模块:用于远程执命令,不支持管道

  • command 模块:用于远程执命令,不支持管道
ansible 主机组名称 -m command -a “具体命令”
ansible 主机组名称 -a “具体命令”
# 默认为command模块
[root@localhost ansible]# vim /etc/ansible/hosts 
#配置要远程的地址
[web_group]
172.16.11.209
172.16.10.232[web_group:vars]
ansible_ssh_pass='123123'#执行:
[root@localhost ansible]# ansible web_group -a "mkdir /root/cs123"
[WARNING]: Consider using the file module with state=directory rather than running 'mkdir'.  If you need to use command because file is insufficient you can
add 'warn: false' to this command task or set 'command_warnings=False' in ansible.cfg to get rid of this message.
172.16.11.209 | CHANGED | rc=0 >>172.16.10.232 | CHANGED | rc=0 >>

5.2 shell 模块:远程执行命令,支持管道

  • shell 模块:远程执行命令,支持管道
ansible 主机组名称 -m shell -a “具体命令”
[root@localhost ansible]# vim /etc/ansible/hosts 
#配置要远程的地址
[web_group]
172.16.11.209
172.16.10.232[web_group:vars]
ansible_ssh_pass='123123'#执行:
[root@localhost ansible]# ansible web_group -m shell -a "ls /home/test/"
172.16.10.232 | CHANGED | rc=0 >>
xunjian-yong.sh# 在执行的时候多个地址是不分开的,需要仔细观看172.16.11.209 | CHANGED | rc=0 >>
xunjian-yong.sh

5.3 raw 模块:ssh登录,再执行

  • raw 模块:ssh登录,再执行
ansible 主机组名称 -m raw -a “具体命令”
[root@localhost ansible]# vim /etc/ansible/hosts 
#配置要远程的地址
[web_group]
172.16.11.209
172.16.10.232[web_group:vars]
ansible_ssh_pass='123123'#执行:
[root@localhost ansible]# ansible web_group -m raw -a "ls /home/test/"
172.16.10.232 | CHANGED | rc=0 >>
xunjian-yong.sh
Shared connection to 172.16.10.232 closed.172.16.11.209 | CHANGED | rc=0 >>
xunjian-yong.sh
Shared connection to 172.16.11.209 closed.

5.4 script 模块:远程执行本地脚本

  • script 模块:远程执行本地脚本
ansible 主机组名称 -m script -a "your_script_file"

在这个命令中,将主机组名称替换为您的目标主机名或组名,并将your_script_file替换为您要在目标主机上执行的脚本文件的本地路径。

[root@localhost ansible]# vim /etc/ansible/hosts 
#配置要远程的地址
[web_group]
172.16.11.209
172.16.10.232[web_group:vars]
ansible_ssh_pass='123123'#执行:
[root@localhost ansible]# ansible web_group -m script -a "/home/test/a.sh"
172.16.11.209 | CHANGED => {"changed": true, "rc": 0, "stderr": "Shared connection to 172.16.11.209 closed.\r\n", "stderr_lines": ["Shared connection to 172.16.11.209 closed."], "stdout": "bin  games    lib    libexec\t    openssh-9.4p1.tar.gz  openssl-1.1.1t  share\r\netc  include  lib64  openssh-9.4p1  openssl\t\t  sbin\t\t  src\r\n", "stdout_lines": ["bin  games    lib    libexec\t    openssh-9.4p1.tar.gz  openssl-1.1.1t  share", "etc  include  lib64  openssh-9.4p1  openssl\t\t  sbin\t\t  src"]
}
172.16.10.232 | CHANGED => {"changed": true, "rc": 0, "stderr": "Shared connection to 172.16.10.232 closed.\r\n", "stderr_lines": ["Shared connection to 172.16.10.232 closed."], "stdout": "bin  games    lib    libexec\t    openssl\t    phpstudy  share\r\netc  include  lib64  openssh-9.3p2  openssl-1.1.1t  sbin      src\r\n", "stdout_lines": ["bin  games    lib    libexec\t    openssl\t    phpstudy  share", "etc  include  lib64  openssh-9.3p2  openssl-1.1.1t  sbin      src"]
}

a.sh中内容为:ls /usr/local/

这将在目标主机上执行a.sh脚本文件。

请注意,script模块会将脚本文件传输到目标主机,然后在目标主机上执行它。因此,确保脚本文件在控制节点上可用,并且具有可执行权限(使用chmod +x命令添加执行权限)。

raw模块不同,script模块允许您在目标主机上执行本地脚本文件,而不需要手动传输脚本内容。这对于执行复杂的本地操作非常有用。


5.5 yum 模块:远程安装软件

  • yum 模块:远程安装软件

name=软件包的名,多个软件包逗号隔开

state=installed/present安装、removed/absent卸载 、lastest 更新、installed列出已安装的包

yum模块的更多使用可使用ansible-doc yum查看。

ansible 主机组名称 -m yum -a "name=要安装\卸载\更新的包名 state=是安装还是卸载还是更新"
[root@localhost ansible]# vim /etc/ansible/hosts 
#配置要安装的地址
[web_group]
172.16.11.209
172.16.10.232[web_group:vars]
ansible_ssh_pass='123123'#执行:
#更新lrzsz命令
[root@localhost ansible]# ansible web_group -m yum -a "name=lrzsz state=latest"
#安装tldr和netstat命令
[root@localhost ansible]# ansible web_group -m yum -a "name=tldr,net-tools state=present"
172.16.10.232 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "msg": "", "rc": 0, "results": ["tldr-1.2.0-4.el7.noarch providing tldr is already installed", "net-tools-2.0-0.25.20131004git.el7.x86_64 providing net-tools is already installed"]
}
172.16.11.209 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "msg": "", "rc": 0, "results": ["tldr-1.2.0-4.el7.noarch providing tldr is already installed", "net-tools-2.0-0.25.20131004git.el7.x86_64 providing net-tools is already installed"]
}

5.6 copy 模块:推送文件

  • copy 模块:推送文件

推送文件模块

src= 源文件路径

dest= 目标文件路径

content= 指定文件内容,只有目标文件;如果文件不存在会创建

owner= 指定属主

group= 指定属组

mode= 指定权限

copy 模块的更多使用可使用ansible-doc copy查看。

ansible 主机组名称 -m copy -a "src=文件路径及文件 dest=目录文件路径"
[root@localhost ansible]# vim /etc/ansible/hosts 
#配置要复制的地址
[web_group]
172.16.11.209
172.16.10.232[web_group:vars]
ansible_ssh_pass='123123'#执行:
[root@localhost ansible]# ansible web_group -m copy -a "src=/root/tongji.sh dest=/home/test/"
172.16.10.232 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "checksum": "4eff49d9f511f76b733cf739e820f8b7d17ff3f3", "dest": "/home/test/tongji.sh", "gid": 0, "group": "root", "mode": "0644", "owner": "root", "path": "/home/test/tongji.sh", "size": 10156, "state": "file", "uid": 0
}
172.16.11.209 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "checksum": "4eff49d9f511f76b733cf739e820f8b7d17ff3f3", "dest": "/home/test/tongji.sh", "gid": 0, "group": "root", "mode": "0644", "owner": "root", "path": "/home/test/tongji.sh", "size": 10156, "state": "file", "uid": 0
}

在这里插入图片描述

这时候就可以看到两台服务器上都有这个文件了,如果想要先备份在复制,后面会讲到实战;


5.7 file 模块:对文件操作

  • file 模块:对文件操作

对文件操作,创建文件或目录、删除文件或目录、修改文件权限

path 指定路径

src 源文件路径

recurse 递归授权

owner 指定属主

group 指定属组

mode 指定权限

state 指定文件的状态

  directory   在远端创建目录

  touch  在远端创建文件

  link  创建软连接

  hard  创建硬连接

  absent  表示删除文件或目录

ansible 主机组名称 -m file -a "操作内容"
[root@localhost ansible]# vim /etc/ansible/hosts 
#配置要执行的地址
[web_group]
172.16.11.209
172.16.10.232[web_group:vars]
ansible_ssh_pass='123123'#执行:
# 创建一个目录
ansible web_group -m file -a "path=/home/cs state=directory"# 创建一个文件
ansible web_group -m file -a "path=/home/cs/cs.sh state=touch"# 将/home/test/tongji.sh软连接到/home/cs/下
ansible web_group -m file -a "src=/home/test/tongji.sh path=/home/cs/tongji_link.sh state=link"# 创建一个文件并给予root用户和执行权限
ansible web_group -m file -a "path=/home/cs/lv.sh state=touch mode=777 owner=root group=root"

5.8 service 模块:控制启动关闭服务

  • service 模块:控制启动关闭服务

name 定义要启动服务的名称

state 指定服务状态

  started 启动服务(幂等)

  stopped 停止服务(幂等)

  restarted 重启服务

  reloaded 重载服务

enabled 开机自启

ansible 主机组名称 -m service -a "name=服务名称 state=服务操作 enabled=是否设置开机自启"
[root@localhost ansible]# vim /etc/ansible/hosts 
#配置要执行的地址
[web_group]
172.16.11.209
172.16.10.232[web_group:vars]
ansible_ssh_pass='123123'#执行:
# 可以先安装一个httpd服务来测试
ansible web_group -m yum -a "name=httpd state=present"# 启动httpd服务
ansible web_group -m service -a "name=httpd state=started"# 关闭httpd服务
ansible web_group -m service -a "name=httpd state=stopped"# 重启httpd服务状态
ansible web_group -m service -a "name=httpd state=restarted"# 设置httpd服务开机自启
ansible web_group -m service -a "name=httpd state=enabled"# 重启httpd服务并设置开机自启
ansible web_group -m service -a "name=httpd state=restarted enabled=yes"
# 设置完可以使用命令查看是否设置了开机自启
systemctl is-enabled httpd
systemctl list-unit-files --type=service --state=enabled --no-pager | grep "enabled" | grep httpd

5.9 cron 模块:定时任务

  • cron 模块:定时任务

name 注释说明

minute、hour、day、month、weekday(分、时、日、月、周)

user 指定用户

job 操作的指令

state

  present 创建

  absent 删除

ansible 主机组名称 -m cron -a "操作内容"
[root@localhost ansible]# vim /etc/ansible/hosts 
#配置要设置的地址
[web_group]
172.16.11.209
172.16.10.232[web_group:vars]
ansible_ssh_pass='123123'#执行:
# 直接写一个定时任务(不写执行时间,默认就是每分钟一次;不写name默认为None);不建议使用。
ansible web_group -m cron -a "job='/bin/sh /home/cs/tongji_link.sh'"# 查看设置的定时任务
crontab -l# 设置定时执行统计脚本(每一个小时执行一次,使用root用户)
ansible web_group -m cron -a "name="每小时执行一次统计脚本" minute=0 hour=*/1 day=* month=* weekday=* user=root job='/bin/sh /home/cs/tongji_link.sh' state=present"# 删除指定的定时任务
ansible web_group -m cron -a "name="每小时执行一次统计脚本" minute=0 hour=*/1 day=* month=* weekday=* user=root job='/bin/sh /home/cs/tongji_link.sh' state=absent"

5.10 mount 模块:用于管理设备挂载与卸载

  • mount 模块:用于管理设备挂载与卸载

mount操作需要谨慎,一不小心会导致服务器不可使用。

src :指定挂载源

path:指定挂载点 (挂载点不存在会自动创建)

fstype:指定文件系统类型

opts:挂载参数,默认不写为:defaults

dump:是否备份:0表示不进行备份

passno:文件系统检测:0表示不进行文件系统检测

state

  present  写入fstab,但实际没有挂载,需要重启服务器

  absent  取消临时挂载,并且删除fstab

  mounted  写入fstab,并且直接挂载了(常用)

  unmounted  临时取消挂载,但是没有删除fstab,重启服务器之后就会恢复(常用)

ansible 主机组名称 -m mount -a "操作内容"
[root@localhost ansible]# vim /etc/ansible/hosts 
#配置要挂载的地址
[web]
172.16.11.209[web:vars]
ansible_ssh_pass='123123'#执行:
# 临时取消挂载在data的/dev/sdb(常用)
ansible web -m mount -a "src=/dev/sdb path=/data/ state=unmounted"# 取消挂载在data的/dev/sdb,并且直接删除fstab中的单独配置(暂时没有成功,我也不知道为什么)
ansible web -m mount -a "src=/dev/sdb path=/data/ state=absent"# 添加一个挂载写入fstab,但实际没有挂载,需要重启服务器,重启完就会自动挂载上
ansible web -m mount -a "src=/dev/sdb path=/data fstype=xfs opts=defaults dump=0 passno=0 state=present"# 添加一个挂载写入fstab,并且直接挂载上(常用)
ansible web -m mount -a "src=/dev/sdb path=/data fstype=xfs opts=defaults dump=0 passno=0 state=mounted"

5.11 user/group 模块:用于管理的用户创建与删除

  • user/group 模块:用于管理的用户创建与删除

user用于管理用户的创建与删除,相当于useradd,userdel,usermod;

group模块用于管理用户组的,相当于groupadd,groupdel等。

name(必需):指定用户的用户名。

state:指定用户账户的状态。可以是以下之一:

  present:创建用户(默认值)。

  absent:删除用户。

  locked:锁定用户账户。

  unlocked:解锁用户账户。

  password:仅更改用户的密码。

uid:指定用户的用户ID(UID)

gid: 指定用户的用户ID(GID)

group:指定用户的初始主组。

groups:指定用户所属的其他组。

home:指定用户的家目录路径。

shell:指定用户的登录 shell。

password:指定用户的密码(已加密的密码)。

append:如果为 yes,则添加用户到组而不是替换(默认为 no)。

remove:如果为 yes,则删除用户的家目录和邮箱文件(默认为 no)。

move_home:如果为 yes,则在更改用户的主目录时移动用户的文件(默认为 no)。

create_home:如果为 yes,则创建用户的主目录(默认为 yes)。

update_password:如果为 always,则始终更新密码(默认为 on_create)。

ansible 主机组名称 -m user -a "操作内容"
ansible 主机组名称 -m group -a "操作内容"
[root@localhost ansible]# vim /etc/ansible/hosts 
#配置要管理的地址
[web]
172.16.11.209[web:vars]
ansible_ssh_pass='123123'#执行:
# 创建用户,使用 user 模块创建一个名为 johndoe 的新用户:
ansible web -m user -a "name=johndoe state=present"
# 查看
tail -1 /etc/passwd# 删除用户,使用 user 模块删除一个名为 johndoe 的用户:
ansible web -m user -a "name=johndoe state=absent"
# 删除用户和home家目录,使用 user 模块删除一个名为 johndoe 的用户:(常用)
ansible web -m user -a "name=johndoe remove=yes state=absent"
# 查看
tail -1 /etc/passwd# 创建组,使用 group 模块创建一个名为 mygroup 的新组:
ansible web -m group -a "name=mygroup state=present"
# 查看
tail -1 /etc/group# 删除组,使用 group 模块删除一个名为 mygroup 的组:
ansible web -m group -a "name=mygroup state=absent"
# 查看
tail -1 /etc/group# 在将上面的用户和用户组在创建一遍;
ansible web -m user -a "name=johndoe state=present"
ansible web -m group -a "name=mygroup state=present"
# 添加用户到组,使用 user 模块将用户 johndoe 添加到组 mygroup:
ansible web -m user -a "name=johndoe group=mygroup append=yes"
# 查看
tail -1 /etc/passwd# 从组中移除用户,使用 user 模块从组 mygroup 中移除用户 johndoe:
ansible web -m user -a "name=johndoe groups=mygroup append=no"

这里就不写加创建密码的了,因为创建密码必须要哈希密码;我这边用了转换成哈希的密码还是不行,不知道为啥;

这里写了一个转为哈希密码的py脚本,需要在PyCharm中运行,交互式的;

import bcrypt# 加密密码
passwd = input("请输入要加密的密码:")
password = passwd.encode('utf-8')
salt = bcrypt.gensalt()
hashed_password = bcrypt.hashpw(password, salt)# 输出哈希密码
print("转换后的哈希密码:", hashed_password.decode('utf-8'))# 验证密码
password_to_check = passwd.encode('utf-8')
if bcrypt.checkpw(password_to_check, hashed_password):print("密码验证成功!")
else:print("密码验证失败!")

这里还是建议如果需要加密码或者修改密码使用command、shell、raw方式去执行 passwd 用户名 修改;


5.12 unarchive 模块:解压缩模块

  • unarchive 解压缩模块

解压缩模块,这个模块有两种用法:

  • 1、将ansible主机上的压缩包在本地解压缩后传到远程主机上,这种情况下,copy=yes.本地解压缩,解压缩位置不是默认的目录,没找到或传完删了后传到远程主机

  • 2、将远程主机上的某个压缩包解压缩到指定路径下。这种情况下,需要设置copy=no远程主机上面的操作,不涉及ansible服务端

tar、.tar.gz、.tar.bz2、.zip等都支持

copy 默认为no,当copy=yes,那么拷贝的文件是从ansible主机复制到远程主机上而不是在原地解压缩,如果设置为copy=no,那么会在远程主机上寻找src源文件;

src 源路径,可以是ansible主机上的路径,也可以是远程主机上的路径,如果是远程主机上的路径,则需要设置copy=no

dest 指定了解压缩后文件的目标目录

mode 设置解压缩后的文件权限,可以使用数字或符号模式,例如 "0644""u=rw,go=r"

list_files 默认值为no,如果设置为yes,解压同时,返回压缩包的文件列表

remote_src:如果设置为 yes,则表示 src 参数是远程主机上的路径。

extra_opts: 允许您指定解压缩命令的额外选项。这对于一些特定格式的存档文件非常有用。

creates: 如果指定了此选项,只有在 creates 中指定的文件或目录不存在时,才会执行解压缩操作。

owner: 设置解压缩后文件的所有者。

group: 设置解压缩后文件的所属组。

ansible 主机组名称 -m unarchive -a "src=源路径 dest=目标路径 其他参数"
[root@localhost ansible]# vim /etc/ansible/hosts 
#配置要解压的地址
[web]
172.16.11.209[web:vars]
ansible_ssh_pass='123123'#执行:
# 将jdk-8u221-linux-x64.tar.gz复制到/home/cs/下并解压
[root@localhost ~]# ansible web -m unarchive -a "src=/home/test/jdk-8u221-linux-x64.tar.gz dest=/home/cs/"
172.16.11.209 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": true, "dest": "/home/cs/", "extract_results": {"cmd": ["/usr/bin/gtar", "--extract", "-C", "/home/cs/", "-z", "-f", "/root/.ansible/tmp/ansible-tmp-1697035885.77-18118-31918487585626/source"], "err": "", "out": "", "rc": 0}, "gid": 0, "group": "root", "handler": "TgzArchive", "mode": "0755", "owner": "root", "size": 26, "src": "/root/.ansible/tmp/ansible-tmp-1697035885.77-18118-31918487585626/source", "state": "directory", "uid": 0
}

5.13 get_url 模块:下载文件

  • get_url 模块:下载文件
  • url (必需): 指定要下载文件的URL。这是一个必需参数。
  • dest (必需): 指定文件将保存到本地目标主机上的目标路径。这是一个必需参数。
  • force (可选): 如果设置为 yes,将强制下载文件,即使文件已经存在。默认为 no
  • checksum (可选): 提供要下载文件的校验和,以确保文件完整性。
  • backup (可选): 如果设置为 yes,将在下载之前备份现有文件。默认为 no
  • timeout (可选): 设置下载文件的超时时间(秒)。
  • url_username (可选): 如果目标URL需要身份验证,可以提供用户名。
  • url_password (可选): 如果目标URL需要身份验证,可以提供密码。
  • owner (可选): 设置下载后文件的所有者。
  • group (可选): 设置下载后文件的所属组。
  • mode (可选): 设置下载后文件的权限模式。
ansible 主机组名称 -m get_url -a "url=远程下载的url dest=目标路径 其他参数"
ansible web -m get_url -a "url=https://example.com/file.txt dest=/path/to/local/file.txt"
[root@localhost ansible]# vim /etc/ansible/hosts 
#配置要下载到的地址
[web]
172.16.11.209[web:vars]
ansible_ssh_pass='123123'#执行:
[root@localhost ~]# ansible web -m get_url -a "url=https://liucy.blog.csdn.net/article/details/133460612?spm=1001.2014.3001.5502 dest=/home/cs/csdn.txt"
172.16.11.209 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": true, "checksum_dest": null, "checksum_src": "263c306aaaa75ea1890f33fb846e17c47bac1a7c", "dest": "/home/cs/csdn.txt", "elapsed": 0, "gid": 0, "group": "root", "md5sum": "6337bd5bd661d45598c6402652c59e03", "mode": "0644", "msg": "OK (unknown bytes)", "owner": "root", "size": 244776, "src": "/root/.ansible/tmp/ansible-tmp-1697037340.77-18641-38036675583497/tmp0nw1sp", "state": "file", "status_code": 200, "uid": 0, "url": "https://liucy.blog.csdn.net/article/details/133460612?spm=1001.2014.3001.5502"
}

5.14 setup 模块:获取主机信息

  • setup 模块:获取主机信息

setup 模块不仅是一个常见的模块,而且是一个特殊的模块。它用于获取目标主机的系统信息和事实(facts),并将这些信息返回到 Ansible Playbook 中,以供后续任务使用。setup 模块通常不需要额外的参数,因为它会自动获取系统信息。

ansible web -m setup

获取的信息较长,可以使用重定向到一个空文件中。

  • 常用的几个参数:
ansible_all_ipv4_addresses # ipv4的所有地址
ansible_all_ipv6_addresses # ipv6的所有地址
ansible_date_time # 获取到控制节点时间
ansible_default_ipv4 # 默认的ipv4地址
ansible_distribution # 系统
ansible_distribution_major_version # 系统的大版本
ansible_distribution_version # 系统的版本号
ansible_domain #系统所在的域
ansible_env #系统的环境变量
ansible_hostname #系统的主机名
ansible_fqdn #系统的全名
ansible_machine #系统的架构
ansible_memory_mb #系统的内存信息
ansible_os_family # 系统的家族
ansible_pkg_mgr # 系统的包管理工具
ansible_processor_cores #系统的cpu的核数(每颗)
ansible_processor_count #系统cpu的颗数
ansible_processor_vcpus #系统cpu的总个数=cpu的颗数*CPU的核数
ansible_python # 系统上的python

至此,Ansible的ad-hoc模式就讲解完了,下面讲解的是playbook模式,因为playbook模式要使用yaml格式的语法,所以可以先去了解一下yaml语法;推荐:yaml文件格式详解及实例

相关文章

文章标题文章链接
Ansible自动化运维(一)简介及部署、清单https://liucy.blog.csdn.net/article/details/133769300
Ansible自动化运维(二)ad-hoc 模式详解https://liucy.blog.csdn.net/article/details/133772023
Ansible自动化运维(三)Playbook 模式详解https://liucy.blog.csdn.net/article/details/133899966
Ansible自动化运维(四)jinja2 模板、Roles角色详解https://liucy.blog.csdn.net/article/details/133994509

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/336601.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSDN : Armv8/Armv9架构从入门到精通二期-课程介绍

【学习对象】 [行业]:汽车电子、手机、服务器、云计算、物联网、人工智能; [人群]:本科/研究生/博士、初级工程师、中级工程师、资深工程师、行业大佬,即适合小白入门,也适合大佬查缺补漏; [方向]&#xf…

C++力扣题目-- 二叉树层序遍历

102.二叉树的层序遍历(opens new window)107.二叉树的层次遍历II(opens new window)199.二叉树的右视图(opens new window)637.二叉树的层平均值(opens new window)429.N叉树的层序遍历(opens new window)515.在每个树行中找最大值(opens new window)116.填充每个节点的下一个右…

openGauss企业版简化安装实战

openGauss企业版简化安装实战 操作系统配置数据库配置安装数据库检查 bilibili同步演示视频:https://www.bilibili.com/video/BV1JW4y1G7BVbilibili视频专栏:https://space.bilibili.com/282421760 操作系统配置 # 创建系统用户 groupadd -g 1008 dbgr…

学习记录9-TFT屏的使用

前言 一、验证连接是否正确 二、更改自己想用的图像 1.取模软件 Image2Lcd 2.9 的使用 2.使用 总结 前言 本文在中景园的代码上改写而来,主要记录下使用记录 一、验证连接是否正确 1.按内容说明进行线路连接 2.运行程序,因为内部有图片样本&…

2024年寒假即将来临 如何实现高质量亲子陪伴?

近日,各地陆续公布了寒假放假时间安排,孩子们期待着迎来一个休闲和轻松的假期。然而,对于许多家长来说,他们也意识到寒假不仅是一个放松的时间,更是一个增进亲子关系的宝贵机会,可以为孩子提供有意义的学习陪伴。 自“双减”政策落地后,学生的课业负担减轻许多,拥有了更多的空余…

3D Web可视化开发工具包HOOPS Communicator:提供Web端浏览大型模型新方案!

前言:HOOPS Communicator是Tech Soft 3D旗下的主流产品之一,具有强大的、专用的高性能图形内核,专注于基于Web的高级3D工程应用程序。其由HOOPS Server和HOOPS Web Viewer两大部分组成,提供了HOOPS Convertrer、Data Authoring的模…

智能合约介绍

莫道儒冠误此生,从来诗书不负人 目录 一、什么是区块链智能合约? 二、智能合约的发展背景 三、智能合约的优势 四、智能合约的劣势 五、一些关于智能合约的应用 总结 一、什么是区块链智能合约? 智能合约,是一段写在区块链上的代码,一…

【重学C语言】一、C语言简介

【重学C语言】一、C语言简介 什么是编程语言?编程语言 C语言发展史C语言标准变迁开发软件CLion安装步骤 VIsual Studio安装步骤 Clion 和 VS2022 绑定 电脑常识 什么是编程语言? 人类语言:语言就是人类进行沟通交流的表达方式,应…

SaaS 电商设计 (六) 实现 id 生成器本地化生产 (附源码)

一.背景 1.1 背景 业务背景: 目前梳理 SaaS 系统中存在以下几种 Id 生成的场景. 财务系统: 财务在生产财务单的时候,获取财务单 Id ,满足分布式场景下能够获取全局Id即可. 支付系统:订单系统在进行外部提单过程中,需要将生成的订单号与外部的支付平台做对接.在具体开发调试…

基于ssm的在线视频网站开发论文

摘 要 计算机网络发展到现在已经好几十年了,在理论上面已经有了很丰富的基础,并且在现实生活中也到处都在使用,可以说,经过几十年的发展,互联网技术已经把地域信息的隔阂给消除了,让整个世界都可以即时通话…

高性价比蓝牙耳机有哪些?五款热门高性价比开放式蓝牙耳机推荐

想要一款音质超赞、佩戴舒适、价格又亲民的高性价比蓝牙耳机吗,在这那可就找对地方了,开放式蓝牙耳机就是那种让你在听音乐的同时,还能听到周围环境音的耳机,这种设计让你的听音体验更加舒适,那么哪款开放式蓝牙耳机最…

1688商品采集API实现无货源跨境电商对接教程

随着电子商务的迅猛发展,跨境电商已经成为许多企业和个人的首选商业模式。然而,在跨境交易中,库存和物流管理成为一大难题。为了解决这个问题,我们可以利用1688商品采集API实现无货源跨境电商对接。本文将详细介绍如何通过1688商品…