Ansible - 收集事实之前的行动
Ansible - actions BEFORE gathering facts
有谁知道如何做某事(比如等待端口/受管节点的引导)BEFORE 收集事实?我知道我可以关闭收集事实
gather_facts: no
和然后等待端口但是如果我需要事实同时还需要等到节点启动怎么办?
收集事实等同于运行 setup
module。您可以通过 运行 它手动收集事实。它没有记录,但只需添加这样的任务:
- name: Gathering facts
setup:
结合剧本级别的gather_facts: no
,只有在执行上述任务时才会获取事实。
都在示例剧本中:
- hosts: all
gather_facts: no
tasks:
- name: Some task executed before gathering facts
# whatever task you want to run
- name: Gathering facts
setup:
像这样的东西应该可以工作:
- hosts: my_hosts
gather_facts: no
tasks:
- name: wait for SSH to respond on all hosts
local_action: wait_for port=22
- name: gather facts
setup:
- continue with my tasks...
wait_for 将在您的 ansible 主机上本地执行,等待服务器在端口 22 上响应,然后设置模块将执行事实收集,之后您可以做任何您需要做的事情。
我试图找出如何从 ec2 提供主机,等待 ssh 出现,然后 运行 我的剧本反对它。这与您的用例基本相同。我最终得到以下结果:
- name: Provision App Server from Amazon
hosts: localhost
gather_facts: False
tasks:
# #### call ec2 provisioning tasks here ####
- name: Add new instance to host group
add_host: hostname="{{item.private_ip}}" groupname="appServer"
with_items: ec2.instances
- name: Configure App Server
hosts: appServer
remote_user: ubuntu
gather_facts: True
tasks: ----configuration tasks here----
我认为 ansible 术语是我在剧本中有两个剧本,每个剧本在不同的主机组(localhost 和 appServer 组)上运行
有谁知道如何做某事(比如等待端口/受管节点的引导)BEFORE 收集事实?我知道我可以关闭收集事实
gather_facts: no
和然后等待端口但是如果我需要事实同时还需要等到节点启动怎么办?
收集事实等同于运行 setup
module。您可以通过 运行 它手动收集事实。它没有记录,但只需添加这样的任务:
- name: Gathering facts
setup:
结合剧本级别的gather_facts: no
,只有在执行上述任务时才会获取事实。
都在示例剧本中:
- hosts: all
gather_facts: no
tasks:
- name: Some task executed before gathering facts
# whatever task you want to run
- name: Gathering facts
setup:
像这样的东西应该可以工作:
- hosts: my_hosts
gather_facts: no
tasks:
- name: wait for SSH to respond on all hosts
local_action: wait_for port=22
- name: gather facts
setup:
- continue with my tasks...
wait_for 将在您的 ansible 主机上本地执行,等待服务器在端口 22 上响应,然后设置模块将执行事实收集,之后您可以做任何您需要做的事情。
我试图找出如何从 ec2 提供主机,等待 ssh 出现,然后 运行 我的剧本反对它。这与您的用例基本相同。我最终得到以下结果:
- name: Provision App Server from Amazon
hosts: localhost
gather_facts: False
tasks:
# #### call ec2 provisioning tasks here ####
- name: Add new instance to host group
add_host: hostname="{{item.private_ip}}" groupname="appServer"
with_items: ec2.instances
- name: Configure App Server
hosts: appServer
remote_user: ubuntu
gather_facts: True
tasks: ----configuration tasks here----
我认为 ansible 术语是我在剧本中有两个剧本,每个剧本在不同的主机组(localhost 和 appServer 组)上运行