Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ansible 如何在特定条件下在Vagrantfile中执行playbook?_Ansible_Vagrant - Fatal编程技术网

Ansible 如何在特定条件下在Vagrantfile中执行playbook?

Ansible 如何在特定条件下在Vagrantfile中执行playbook?,ansible,vagrant,Ansible,Vagrant,我正在努力处理这个流浪汉的文件。我的目标是使用Vagrant技术建立两个虚拟机,并在创建后利用Ansible在每台机器中部署特定任务。 但是,在这两台机器成功创建之后,如何使用ansible执行供应呢 #-*-模式:ruby-*- #vi:set ft=ruby: #变数 BOX_NAME=“debian/buster64” 私钥路径控制器=“~/.ssh/id\u rsa” PRIVATE\u KEY\u PATH\u VAGRANT=“~/.VAGRANT.d/unsecure\u PRIV

我正在努力处理这个流浪汉的文件。我的目标是使用Vagrant技术建立两个虚拟机,并在创建后利用Ansible在每台机器中部署特定任务。 但是,在这两台机器成功创建之后,如何使用ansible执行供应呢

#-*-模式:ruby-*-
#vi:set ft=ruby:
#变数
BOX_NAME=“debian/buster64”
私钥路径控制器=“~/.ssh/id\u rsa”
PRIVATE\u KEY\u PATH\u VAGRANT=“~/.VAGRANT.d/unsecure\u PRIVATE\u KEY”
PUBLIC\u KEY\u PATH\u CONTROLLER=“~/.ssh/id\u rsa.pub”
授权密钥路径=“~/.ssh/AUTHORIZED\u KEYS”
Vagrant.configure(“2”)do | config|
#配置概述
config.vm.box=box\u名称
config.ssh.insert_key=false
config.ssh.private\u key\u path=[private\u key\u path\u CONTROLLER,private\u key\u path\u VAGRANT]
config.vm.provision“文件”,源:公共密钥路径控制器,目标:授权密钥路径
config.vm.synced_文件夹“/shared”、“/vagrant”
#配置节点1
config.vm.define“nodo_uno”do | nodo|
nodo.vm.hostname=“nodo1”
nodo.vm.network“专用网络”,ip:“192.168.50.10”
nodo.vm.provider“virtualbox”do | vb|
vb.name=“nodo1(50.10)”
vb.memory=512
vb.CPU=1
结束
结束
#配置节点2
config.vm.define“nodo_dos”do | nodo|
nodo.vm.hostname=“nodo2”
nodo.vm.network“专用网络”,ip:“192.168.50.20”
nodo.vm.provider“virtualbox”do | vb|
vb.name=“nodo2(50.20)”
vb.memory=512
vb.CPU=1
结束
结束
#如果nodo=“nodo\u dos”
config.vm.provision“ansible”do | ansible|
#ansible.groups={
#“nodo_uno”=>[“nodos”],
#“nodo_dos”=>[“nodos”]
# }
ansible.inventory_path=“./hosts”
ansible.limit=“nodos”
ansible.playbook=“grupos\u usuarios.yml”
变为真
结束
结束
nodos是一个涉及nodo_unonodo_dos 所以,当我运行“流浪者”时,ansible抛出了一个错误,因为noo2尚未创建。所以它不能提供它。
我知道我可以使用“vagrant up--no provision”然后是“vagrant provision”,但我想要的是避免这个系统,并在我的vagrant文件中使用一些条件语句,一旦成功设置了node2,就会触发我的剧本。很抱歉我的英语不好。

如果您评论的
语句是如何解决该问题的--请等到所有主机都启动并运行provision
limit=“all”
;您的playbook是否需要访问两台主机?是的,我的playbook需要访问两台主机。这就是为什么ansible给了我一个错误。因为它尝试设置一个不存在的节点(nodo_dos)。我曾尝试使用if条件,但我不知道如何将其应用于此特定的Vagrant文件您的注释
if
语句说明了如何解决此问题--等待所有主机启动并运行provision
limit=“all”
;您的playbook是否需要访问两台主机?是的,我的playbook需要访问两台主机。这就是为什么ansible给了我一个错误。因为它尝试设置一个不存在的节点(nodo_dos)。我曾尝试使用if条件,但我不知道如何将其应用于此特定文件