Ad-Hoc 模式是使用 ansible 命令行工具执行单个任务或命令,Ad-Hoc 任务通常用于快速的、临时性的操作,例如文件复制、软件包安装、服务启停等。
ansible <目标主机或主机组> -m <模块名称> -a <模块参数>
● <目标主机或主机组> 是指定要在哪些主机上执行任务;
● <模块名称> 是指定要使用的 Ansible 模块;
● <模块参数> 是模块所需的参数,具体取决于所选的模块。
Ansible 的复制模块(copy module)用于将文件或目录从 Ansible 服务器上复制到目标主机上。
ansible-doc copy:记录 copy 模块的文档,包括模块的描述、参数、示例以及其他相关信息。
将文件从服务器复制到 webservers 主机组
ansible webservers -m copy -a 'src=/etc/hosts dest=/tmp/2.txt owner=root group=bin mode=700'
● -m copy:指定要使用的 Ansible 模块,即copy模块,它用于复制文件;
● -a:表示接下来将提供给模块的参数;
● src=/etc/hosts:ansible 服务器上复制的文件的路径;
● dest=/tmp/2.txt:目标主机存放文件的路径;
● owner=root group=bin:指定了复制后的文件的所有者为root用户,所属组为bin组;
● mode=700:指定了复制后的文件的权限。
ansible webservers -m copy -a 'src=/etc/hosts dest=/tmp/2.txt owner=root group=bin mode=700 backup=yes'
● backup=yes:这个部分指示 Ansible 在复制文件时创建备份文件。如果目标主机上已经存在同名文件,Ansible 将创建一个备份文件,以确保不会覆盖原始文件。
在 Ansible 中,用户模块用于管理系统上的用户账户,使用用户模块可以创建、删除、修改和管理用户账户的各种属性。
ansible webservers -m user -a 'name=abc state=present'
● -m user:指定了要使用 user 模块,管理用户账户;
● state=present:指定了要创建的用户的状态,即"present",如果不存在的话就创建该用户。
echo '555' | openssl passwd -1 -stdin
使用哈希算法对密码进行加密
例:修改 shell
ansible webserver -m user -a 'name=abc shell=/sbin/nologin append=yes
append=yes:如果用户已经存在,则追加修改现有用户的信息,而不是创建一个新用户。
ansible webservers -m user -a 'name=abc state=absent'
● state=absent 的含义是删除用户账户。如果该用户存在,Ansible将尝试删除,如果不存在,则不会执行任何操作。
用于查看 Ansible 中 yum 模块的文档,包括模块的参数、用法示例以及其他相关信息。
ansible host1 -m yum -a 'name="*" state=latest'
这个命令会连接到 host1 主机,并使用 yum 模块来更新所有已安装的软件包到它们的最新版本。
● name="*":操作的软件包名称是通配符 "*",也就是所有软件包。host1 将更新所有已安装的软件包。
● state=latest:这个命令的目标是确保所有已安装的软件包都是最新版本。
如果要安装具体软件包,可将 "*" 换成软件包名
例:ansible host1 -m yum -a 'name="httpd" state=latest'
用于查看 Ansible 中与服务管理相关的模块的文档。
ansible host1 -m service -a 'name=httpd state=started'
● state=started:启动应用 ;state=stopped :停止应用 ;state=restarted:重启应用
ansible host2 -m service -a 'name=httpd state=started enabled=yes'
● enabled=yes:开机启动 ;enabled=no:禁止开机启动
ansible host1 -m file -a 'path=/tmp/88.txt mode=777 state=touch'
● path=/tmp/88.txt: 要操作的文件路径;
● state=touch: 创建文件,如果指定路径上的文件不存在,Ansible 将会创建一个空的文件;如果文件已存在,Ansible 不会修改文件的内容,但会将该文件的时间戳更新为当前时间。
ansible host1 -m file -a 'path=/tmp/99 mode=777 state=directory'
在远程主机 host1 的 /tmp 目录下创建一个名为 99 的目录,并将该目录的权限设置为 777。
检索关于远程主机的信息,例如操作系统类型、主机名、网络接口信息、CPU 和内存信息等。
ansible host3 -m setup:查询远程主机所有信息
ansible host3 -m setup -a 'filter=ansible_all_ipv4_addresses'
● filter=ansible_all_ipv4_addresses:过滤 setup 模块返回的系统信息(facts)。限制返回的信息只包括远程主机的 IPv4 地址,而不包括其他系统信息。