Ansible adhoc 命令顺序
Ansible adhoc command in sequence
我想 运行 在 EC2 实例列表上执行 ansible adhoc 命令。我想要 ansible 按顺序 运行 它,但 ansible 运行 随机。例如:
13:42:21 @cnayak ansible :► ansible aws -a "hostname"
ec2 | SUCCESS | rc=0 >>
ip-172-31-36-255
ec3 | SUCCESS | rc=0 >>
ip-172-31-45-174
13:42:26 @cnayak ansible :► ansible aws -a "hostname"
ec3 | SUCCESS | rc=0 >>
ip-172-31-45-174
ec2 | SUCCESS | rc=0 >>
ip-172-31-36-255
有什么方法可以让它们运行按顺序排列吗?
默认情况下 运行s 任务是并行的。如果您希望它们连续执行,那么您可以使用“--forks”选项限制同时 运行ning 的工人数量。
将“--forks 1”添加到您的 ansible 调用应该 运行 您的命令在所有主机上按顺序执行(按清单定义的顺序)。
您可以在剧本中使用 forks
with adhoc 命令和 serial: 1
。
临时命令:
ansible aws -a "hostname" --forks=1
剧本内幕:
- hosts: aws
become: yes
gather_facts: yes
serial: 1
tasks:
- YOUR TASKS HERE
--forks=1 在最近版本的 ansible (2.7) 中没有为我整理库存
我发现另一种有用的方法是使用 "oneline" 输出回调,因此我可以在输出上使用标准 sort
和 grep
工具:
ANSIBLE_LOAD_CALLBACK_PLUGINS=1 \
ANSIBLE_STDOUT_CALLBACK=oneline \
ansible \
-m debug -a "msg={{ansible_host}}\t{{inventory_hostname}}" \
| sort \
| grep -oP '"msg": \K"[^"]*"' \
| xargs -n 1 echo -e
这对于快速报告任意变量或(单行)shell 命令输出非常有用。
我想 运行 在 EC2 实例列表上执行 ansible adhoc 命令。我想要 ansible 按顺序 运行 它,但 ansible 运行 随机。例如:
13:42:21 @cnayak ansible :► ansible aws -a "hostname"
ec2 | SUCCESS | rc=0 >>
ip-172-31-36-255
ec3 | SUCCESS | rc=0 >>
ip-172-31-45-174
13:42:26 @cnayak ansible :► ansible aws -a "hostname"
ec3 | SUCCESS | rc=0 >>
ip-172-31-45-174
ec2 | SUCCESS | rc=0 >>
ip-172-31-36-255
有什么方法可以让它们运行按顺序排列吗?
默认情况下 运行s 任务是并行的。如果您希望它们连续执行,那么您可以使用“--forks”选项限制同时 运行ning 的工人数量。
将“--forks 1”添加到您的 ansible 调用应该 运行 您的命令在所有主机上按顺序执行(按清单定义的顺序)。
您可以在剧本中使用 forks
with adhoc 命令和 serial: 1
。
临时命令:
ansible aws -a "hostname" --forks=1
剧本内幕:
- hosts: aws
become: yes
gather_facts: yes
serial: 1
tasks:
- YOUR TASKS HERE
--forks=1 在最近版本的 ansible (2.7) 中没有为我整理库存
我发现另一种有用的方法是使用 "oneline" 输出回调,因此我可以在输出上使用标准 sort
和 grep
工具:
ANSIBLE_LOAD_CALLBACK_PLUGINS=1 \
ANSIBLE_STDOUT_CALLBACK=oneline \
ansible \
-m debug -a "msg={{ansible_host}}\t{{inventory_hostname}}" \
| sort \
| grep -oP '"msg": \K"[^"]*"' \
| xargs -n 1 echo -e
这对于快速报告任意变量或(单行)shell 命令输出非常有用。