Terraform,如何在现有资源上运行配置程序?(Terraform, How to run the provisioner on existing resources?)
我的问题类似于这个git hub帖子:
https://github.com/hashicorp/terraform/issues/745
它还与我的另一个堆栈交换帖有关:
我正在尝试引导几个服务器,并且我需要在我的实例上运行几个命令,这些命令需要所有其他实例的IP地址。 但是,在创建实例之前,我无法访问保存新创建实例的IP地址的变量。 所以,当我尝试像这样运行
provisioner "remote-exec"
:provisioner "remote-exec" { inline = [ "sudo apt-get update", "sudo apt-get install -y curl", "echo ${openstack_compute_instance_v2.consul.0.network.0.fixed_ip_v4}", "echo ${openstack_compute_instance_v2.consul.1.network.1.fixed_ip_v4}", "echo ${openstack_compute_instance_v2.consul.2.network.2.fixed_ip_v4}" ] }
没有任何事情发生,因为所有实例都在等待所有其他实例完成创建,因此首先不创建任何内容。 所以我需要一种方法来创建我的资源,然后在创建后运行我的
provisioner "remote-exec"
块命令,terraform可以访问我所有实例的IP地址。My question is similar to this git hub post:
https://github.com/hashicorp/terraform/issues/745
It is also related to another stack exchange post of mine:
Terraform stalls while trying to get IP addresses of multiple instances?
I am trying to bootstrap several servers and there are several commands I need to run on my instances that require the IP addresses of all the other instances. However I cannot access the variables that hold the IP addresses of my newly created instances until they are created. So when I try to run a
provisioner "remote-exec"
block like this:provisioner "remote-exec" { inline = [ "sudo apt-get update", "sudo apt-get install -y curl", "echo ${openstack_compute_instance_v2.consul.0.network.0.fixed_ip_v4}", "echo ${openstack_compute_instance_v2.consul.1.network.1.fixed_ip_v4}", "echo ${openstack_compute_instance_v2.consul.2.network.2.fixed_ip_v4}" ] }
Nothing happens because all the instances are waiting for all the other instances to finish being created and so nothing is created in the first place. So I need a way for my resources to be created and then run my
provisioner "remote-exec"
block commands after they are created and terraform can access the IP addresses of all my instances.
原文:https://stackoverflow.com/questions/37865979
最满意答案
通过将“帖子”扩展为“默认”来解决问题。
Having package "posts" extending "default" would solve the issue.
相关问答
更多-
如何使用struts 2中不同包中定义的拦截器?(how to use interceptor defined in different packages in struts 2?)[2023-04-25]
通过将“帖子”扩展为“默认”来解决问题。 Having package "posts" extending "default" would solve the issue. -
当然。 您可以在ResultConfig对象中读取结果配置, 如此处所述 ,它将公开其params的Map,如源代码所示。 就像是: // Get the action configuration defined in struts.xml ActionConfig config = invocation.getProxy().getConfig(); // Get the SUCCESS result configured for that Action ResultConfig success = ...
-
如何在Struts 2拦截器中访问HttpSession?(How do I access the HttpSession inside a Struts 2 interceptor? Should I?)[2023-02-19]
从拦截器访问HttpSession是完全正常的; 在活动中访问它是积极的劝阻。 通过拦截器控制访问是一个完美的用例。 访问控制通常会影响大部分应用程序。 在拦截器中隔离它可以使主线代码更清晰。 拦截器是与会话等servlet规范工件接口的最合适的位置。 操作可以通过SessionAware接口访问会话属性 。 它只公开属性的Map。 这使操作与servlet规范分离,使测试更容易。 Accessing the HttpSession from interceptors is ... -
Struts2准备拦截器?(Struts2 prepare interceptor?)[2022-01-29]
这是paramsPrepareParamsStack的典型用法。 你也可以看到这个答案。 您可以在此处找到此堆栈的使用示例。 初始化操作实例的方式可能会有所不同,这就是此堆栈可以应用的原因。 通常,您可能只是实例化User对象以接受参数,而不是从数据库中检索它。 This is a typical usage of the paramsPrepareParamsStack. You can see this answer too. An example of usage this stack you can ... -
如果它返回INPUT,并且没有为此定义结果(并且没有一般结果),您将得到一个类似于 No result defined for type INPUT and action
. 您可以定义一个始终显示为“INPUT”的常规页面,但更好的解决方案是,如果您有一个validate()方法,通常最好定义一个INPUT结果返回。 即使您没有明确地进行任何验证,诸如传递给整数字段的非整数值之类的东西也会导致该结果,因此定义它是个好主意。 If it returns INPUT, and t ... -
以下是如何绕过特定操作的验证。 (我假设你不想为整个应用程序禁用拦截器。)
execute execute 如果您收到“无法找到引用名称XYZ引用的拦截器类”之类的错误。 这意味着公约放置您的操作的包不会扩展定义拦截器的包。 要解决此问题,请执行以下操作:1)使用@ParentPackage注释(或struts.convention.default.parent.package)传递定义拦截器的包的名称,或者2)在XML中创建一个扩展定义拦截器的包的包,并使用@ParentPackage(或struts.convention.default.parent.package)指向它。 If you get error ...在struts.xml中进行以下更改后问题已解决 删除了completeStack拦截器并用completeStack拦截器替换了defaultStack。1509 ... 如果未在任何其他Struts 2配置文件中声明它,则需要声明它。 框架自己的工件以其默认配置声明。 不是很困惑。 You need to declare it if it isn't declared in any other Struts 2 config file. The framework's own artifacts are declared in its default configuration. Not very confusing.跨struts配置文件中定义的不同包的全局结果(global results across different packages defined in struts configuration file)[2022-10-18]
在其他包扩展的包中定义全局结果。 例如... 此结果可用于转发到错误页面的操作和异常处理结果。 如果您使用带注释的约定插件,则可以在具有其他包扩展的父包的类上定义@Results注 .../pages/error_page.jsp 相关文章
更多- 【Hadoop】Build and Run HDFS
- 关于Thread类中的start()方法和run()方法
- Cannot expose request attribute 'website' because of an existing model object of the same name 的解决方案
- Eclipse:Run on Hadoop 没有反应
- maven jetty:run “找不到符号”
- Nike Free Run Shoes Sale Online Shopping
- 看看程序哪儿错了...在Jcreator中运行不对呀,但是不知道哪儿出错了
- Gradle构建Java Web应用程序并在Tomcat上运行
- Java程序运行异常,望牛人指点
- jboss运行程序出错
最新问答
更多- 您如何使用git diff文件,并将其应用于同一存储库的副本的本地分支?(How do you take a git diff file, and apply it to a local branch that is a copy of the same repository?)
- 将长浮点值剪切为2个小数点并复制到字符数组(Cut Long Float Value to 2 decimal points and copy to Character Array)
- OctoberCMS侧边栏不呈现(OctoberCMS Sidebar not rendering)
- 页面加载后对象是否有资格进行垃圾回收?(Are objects eligible for garbage collection after the page loads?)
- codeigniter中的语言不能按预期工作(language in codeigniter doesn' t work as expected)
- 在计算机拍照在哪里进入
- 使用cin.get()从c ++中的输入流中丢弃不需要的字符(Using cin.get() to discard unwanted characters from the input stream in c++)
- No for循环将在for循环中运行。(No for loop will run inside for loop. Testing for primes)
- 单页应用程序:页面重新加载(Single Page Application: page reload)
- 在循环中选择具有相似模式的列名称(Selecting Column Name With Similar Pattern in a Loop)
- System.StackOverflow错误(System.StackOverflow error)
- KnockoutJS未在嵌套模板上应用beforeRemove和afterAdd(KnockoutJS not applying beforeRemove and afterAdd on nested templates)
- 散列包括方法和/或嵌套属性(Hash include methods and/or nested attributes)
- android - 如何避免使用Samsung RFS文件系统延迟/冻结?(android - how to avoid lag/freezes with Samsung RFS filesystem?)
- TensorFlow:基于索引列表创建新张量(TensorFlow: Create a new tensor based on list of indices)
- 企业安全培训的各项内容
- 错误:RPC失败;(error: RPC failed; curl transfer closed with outstanding read data remaining)
- C#类名中允许哪些字符?(What characters are allowed in C# class name?)
- NumPy:将int64值存储在np.array中并使用dtype float64并将其转换回整数是否安全?(NumPy: Is it safe to store an int64 value in an np.array with dtype float64 and later convert it back to integer?)
- 注销后如何隐藏导航portlet?(How to hide navigation portlet after logout?)
- 将多个行和可变行移动到列(moving multiple and variable rows to columns)
- 提交表单时忽略基础href,而不使用Javascript(ignore base href when submitting form, without using Javascript)
- 对setOnInfoWindowClickListener的意图(Intent on setOnInfoWindowClickListener)
- Angular $资源不会改变方法(Angular $resource doesn't change method)
- 在Angular 5中不是一个函数(is not a function in Angular 5)
- 如何配置Composite C1以将.m和桌面作为同一站点提供服务(How to configure Composite C1 to serve .m and desktop as the same site)
- 不适用:悬停在悬停时:在元素之前[复制](Don't apply :hover when hovering on :before element [duplicate])
- 常见的python rpc和cli接口(Common python rpc and cli interface)
- Mysql DB单个字段匹配多个其他字段(Mysql DB single field matching to multiple other fields)
- 产品页面上的Magento Up出售对齐问题(Magento Up sell alignment issue on the products page)