Ansible 临时命令
1. 为什么使用临时命令
- 临时命令非常适合做很少重复的任务
$ ansible [pattern] -m [module] -a "[module options]"
2. 临时任务的用例
- 临时任务可用于重启服务器、复制文件、管理包和用户等等。可以在临时任务中使用任何 Ansible 模块。临时任务,如剧本,使用声明性模型,计算和执行达到指定最终状态所需的操作。他们通过在开始之前检查当前状态并且除非当前状态与指定的最终状态不同否则不做任何事情。
2.1 重启服务器
# ansible 命令行实用程序的默认模块是命令模块。
$ ansible atlanta -a "/sbin/reboot"
# 默认情况下,Ansible 仅使用 5 个并发进程。,如果您的主机数量多于为 fork 计数设置的值,Ansible 将与它们通信,但会花费更长的时间
$ ansible atlanta -a "/sbin/reboot" -f 10
# /usr/bin/ansible 将默认从您的用户帐户运行。,以不同的用户身份连接
$ ansible atlanta -a "/sbin/reboot" -f 10 -u username
# 重新启动可能需要权限升级。,您可以使用用户名连接到服务器,并使用 become 关键字以 root 用户身份运行命令
$ ansible atlanta -a "/sbin/reboot" -f 10 -u username --become [--ask-become-pass]
# 如果添加 --ask-become-pass 或 -K,Ansible 会提示输入用于权限升级的密码 (sudo/su/pfexec/doas/etc)。
# 命令模块不支持扩展的 shell 语法,如管道和重定向(尽管 shell 变量将始终有效)。,如果您的命令需要特定于 shell 的语法,请改用 shell 模块。
# 要使用不同的模块,请为模块名称传递 -m
$ ansible raleigh -m shell -a 'echo $TERM'
# 使用 Ansible ad hoc CLI(与 Playbooks 相反)运行任何命令时,请特别注意 shell 引用规则,以便本地 shell 保留变量并将其传递给 Ansible。
2.2 文件管理
- 临时任务可以利用 Ansible 和 SCP 的强大功能将许多文件并行传输到多台机器。
$ ansible atlanta -m copy -a "src=/etc/hosts dest=/tmp/hosts"
# 文件模块允许更改文件的所有权和权限。这些相同的选项也可以直接传递给复制模块
$ ansible webservers -m file -a "dest=/srv/foo/a.txt mode=600"
$ ansible webservers -m file -a "dest=/srv/foo/b.txt mode=600 owner=mdehaan group=mdehaan"
# 文件模块也可以创建目录,类似于 mkdir -p
$ ansible webservers -m file -a "dest=/path/to/c mode=755 owner=mdehaan group=mdehaan state=directory"
# 删除文件
$ ansible webservers -m file -a "dest=/path/to/c state=absent"
2.3 包管理
# 可以使用 ad-hoc 任务通过包管理模块(如 yum)在受管节点上安装、更新或删除包。要确保安装包而不更新它。
$ ansible webservers -m yum -a "name=acme state=present"
# 确保安装特定版本的软件包
$ ansible webservers -m yum -a "name=acme-1.5 state=present"
# 确保安装最新版本的软件包
$ ansible webservers -m yum -a "name=acme state=latest"
# 确保未安装软件包
$ ansible webservers -m yum -a "name=acme state=absent"
# Ansible 具有用于在许多平台下管理包的模块。如果没有包管理器模块,可以使用命令模块安装包或为您的包管理器创建一个模块
2.4 用户和组管理
# 可以使用临时任务在受管节点上创建、管理和删除用户帐户
$ ansible all -m user -a "name=foo password=<crypted password here>"
$ ansible all -m user -a "name=foo state=absent"
2.5 服务管理
# 确保服务已经开启
$ ansible webservers -m service -a "name=httpd state=started"
# 重启服务
$ ansible webservers -m service -a "name=httpd state=restarted"
# 停止服务
$ ansible webservers -m service -a "name=httpd state=stopped"
2.6 收集事实
# 事实代表关于系统的已发现变量。您可以使用事实来实现任务的条件执行,但也可以仅获取有关系统的临时信息。
$ ansible all -m setup
版权声明:本文为double_happy111原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。