首页 \ 问答 \ 厨师没有在第一个bootstrap上执行“mount”(Chef not executing “mount” on first bootstrap)

厨师没有在第一个bootstrap上执行“mount”(Chef not executing “mount” on first bootstrap)

我正在尝试使用厨师安装s3fs。 我无法获得s3fs工作的mounts资源和s3fs的供应商cookbook想要命名mount不同于我们想要命名的东西(我们的s3桶在名称中有“。”)。

所以我手动创建了fstab记录并运行“mount”命令来挂载它。 但是挂载没有运行。 没有错误,厨师日志文件说它执行了阻止。

bash 'mount_s3fs' do
  code <<-EOF 
  mount -a
  EOF
  user 'root'
  not_if "df -kh | grep s3fs -q"
end

这是打印到日志文件的内容

[2016-12-29T21:29:02+00:00] INFO: Processing bash[mount_s3fs] action run (cookbook::recipe line 66)
[2016-12-29T21:29:03+00:00] INFO: bash[mount_s3fs] ran successfully

如果我第二次运行配方,它就可以正常安装。 如果我在bootstrap之后添加配方它运行正常。 我非常困惑。 因为这种行为只能在bootstrap中看到。

我在AWS的Debian Jessie 8.4上使用主厨12.12.15运行。


I am trying to mount s3fs using chef. I could not get the mounts resource to work for s3fs and the vendor cookbook for s3fs wants to name the mount something different than what we want to name it (our s3 buckets have "." in the name).

So I manually created the fstab record and run a "mount" command to mount it. However the mount is not running. There are no errors and the chef log file says it executed the block.

bash 'mount_s3fs' do
  code <<-EOF 
  mount -a
  EOF
  user 'root'
  not_if "df -kh | grep s3fs -q"
end

Here is what gets printed to the log file

[2016-12-29T21:29:02+00:00] INFO: Processing bash[mount_s3fs] action run (cookbook::recipe line 66)
[2016-12-29T21:29:03+00:00] INFO: bash[mount_s3fs] ran successfully

If I run the recipe a second time it mounts just fine. If I add the recipe after bootstrap it runs fine. I am incredibly perplexed. As this behavior is only seen at bootstrap.

I am running on chef 12.12.15 on Debian Jessie 8.4 in AWS.


原文:https://stackoverflow.com/questions/41387507
更新时间:2024-04-01 18:04

最满意答案

导致异常的API函数是ReadConsoleOutput()。 SDK文档有一些相关的小字体:

lpBuffer:

指向目标缓冲区的指针,该缓冲区接收从控制台屏幕缓冲区读取的数据。 此指针被视为CHAR_INFO结构的二维数组的原点,其大小由dwBufferSize参数指定。 阵列的总大小必须小于64K

我加粗了相关的短语。 当你的程序试图滚动超过200行时(201 x 80 x 4 = 64320字节,奇怪地从65536中略微偏离),你的程序将会爆炸。 它可以说是Console.MoveBufferArea()中的一个错误,它不会检查这个限制,也不会尝试解决它很容易做到的问题。 您可以在connect.microsoft.com上报告错误

现在,您必须限制行数,以便缓冲区大小不超过限制。


The API function that causes the exception is ReadConsoleOutput(). The SDK doc has some relevant small print:

lpBuffer:

A pointer to a destination buffer that receives the data read from the console screen buffer. This pointer is treated as the origin of a two-dimensional array of CHAR_INFO structures whose size is specified by the dwBufferSize parameter. The total size of the array must be less than 64K.

I bolded the relevant phrase. Your program will bomb when it tries to scroll more than 200 lines (201 x 80 x 4 = 64320 bytes, oddly off a bit from 65536). It is arguably a bug in the Console.MoveBufferArea(), it doesn't check for this limitation nor tries to work around it which would be easy to do. You can report the bug at connect.microsoft.com

For now, you'll have to limit the number of lines so the buffer size doesn't exceed the limit.

相关问答

更多
  • 很抱歉问一个明显的问题,但是您尝试加载的资源文件是否可以在测试的类路径中访问? String resourceLocation = "file/Designandrealizationofanintranetportal.pdf"; Sorry to ask an obvious question, but are the resource files that you're trying to load accessible in the test's classpath? String resourc ...
  • 似乎这是由.NET Framework的最新安全更新引起的: MS12-074:.NET Framework中的漏洞可能允许远程执行代码:2012年11月13日(KB 2745030) 所有这些都归结为Web代理解析中的以下代码: [RegistryPermission(SecurityAction.Assert, Read=@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework")] private static void InitializeFallb ...
  • 那么这是java中的“重”主题。 大多数java程序员现在都认同,检查异常是愚蠢和冗余的,不应该存在。 在你的情况下,如果关闭怎么办? 编译器不知道程序何时运行,也不知道他将在什么环境下运行。 如果运行程序的当前用户没有写入控制台的权限怎么办? 我可以坚持下去,但我认为你明白了。 Well this is a "heavy" topic in java. Most java programmers now a days agree, checked exceptions are stupid and red ...
  • 我有这个,应用strace后,我发现这个问题。 ensime-sbt.el函数从cwd中查找./project/build.properties。 在找到这个目录/文件时,它假定这是根目录。 所以只需创建这个文件,这个问题应该会消失。 如果ensime默认创建这个文件会很好,因为它是sbt函数工作所需的文件。 I had this and after applying strace I found the issue. The ensime-sbt.el function searches up from ...
  • try { input = reader.readLine(); reader.close(); } catch(IOException e) { System.out.println("Input error... :/"); } 不要关闭这个阅读器,因为它包含System.in ,它应该保持打开状态。 try { input = reader.readLine(); reader.close(); } catch(IOException e) { Sy ...
  • 此错误通常是由于eclipse和模拟器之间的IO管道被破坏引起的。 如果您的应用中没有出现任何问题,通常无需担心这一点。 另见这个帖子 。 This error is usually caused due to the IO pipe between eclipse and your emulator being broken. You don't usually need to worry about this if it isn't causing any problems in your app. A ...
  • 原来错误是由于基类是抽象的。 真的很明显。 一张地图工作的原因,而不是另一张是因为字段的顺序。 要在InvestorModel上映射的第一个字段是InvestorModel中定义的字段,因此映射器知道要实例化的类。 在AgentModel映射上,第一个字段是在抽象类EntityModel上定义的,因此映射器尝试实例化该类,但是失败了,我选择AgentModel作为目标并不重要。 Turns out the error was due to the base class being abstract. Kin ...
  • 首先,您确定要重新抛出异常,或者更好地处理它和/或向用户显示消息? 选项1:重新抛出异常(在我看来很难看): public void actionPerformed(ActionEvent e) { try{ ExportRunner.exportToFile(list); } catch(IOException ioex) { throw new RuntimeException(ioex); } } 选项2:捕获并处理它: public void act ...
  • 导致异常的API函数是ReadConsoleOutput()。 SDK文档有一些相关的小字体: lpBuffer: 指向目标缓冲区的指针,该缓冲区接收从控制台屏幕缓冲区读取的数据。 此指针被视为CHAR_INFO结构的二维数组的原点,其大小由dwBufferSize参数指定。 阵列的总大小必须小于64K 。 我加粗了相关的短语。 当你的程序试图滚动超过200行时(201 x 80 x 4 = 64320字节,奇怪地从65536中略微偏离),你的程序将会爆炸。 它可以说是Console.MoveBufferA ...
  • 确保您的清单文件指定了sdk: Make sure your manifest file specifies the sdk:

相关文章

更多

最新问答

更多
  • linux环境下怎么用maven编译一个已有的java项目?
  • Ionic2和IonicDeploy(Ionic2 and IonicDeploy)
  • 尝试分组和别名数据时出错(Error when Attempting to Group and Alias Data)
  • Facebook PHP API错误代码100:API中提供的appsecret_proof无效(Facebook PHP API Error code 100: Invalid appsecret_proof provided in the API)
  • 不用u盘和光盘怎么安装linux系统
  • 表名作为变量参数(Table name as variable parameter)
  • 我想学计算机 在望京花园住 附近那有这样的地方可以学
  • 删除原始记录的重复项(Removing duplicates with original records)
  • Pandas:使用.astype(str)时忽略空值?(Pandas: ignore null values when using .astype(str)?)
  • Python新手阵列 - 列表转换[重复](Python newbie array - list conversion [duplicate])
  • java.lang.String cannot be cast to java.lang.Float
  • 带参数的选择器(Selector with argument)
  • python中的for循环语法(for loop syntax in python)
  • Nunit - 无法检索类别属性(NUnit - Can't retrieve a category property)
  • python3 xpath无法到达子节点(AttributeError:'NoneType'对象没有属性'text')(python3 xpath can't reach a child node (AttributeError: 'NoneType' object has no attribute 'text'))
  • Android自动 - 如何启用开发人员模式(Android auto - how to enable developer mode)
  • java weka stringtowordvector没有正确计算单词出现次数(java weka stringtowordvector is not counting word occurences properly)
  • 如何解释DHT响应中的“节点”?(How to interpret 'nodes' in a DHT response?)
  • 什么是使用opencv和树莓相机模块进行人脸检测的最佳算法(What is the best algorithm for face detection using opencv and raspberry camera module)
  • 可以somone解释这两个问题的解决方案(c程序,mutex,线程)吗?(Can someone explain the solution of these two questions (c program,mutex,threads)?)
  • 如何解决SyntaxError:意想不到的令牌var gulp(How to fix SyntaxError: Unexpected token var in gulp)
  • 在满足R中的第一个实例后,在所有行中分配值(Assign value in all rows following satisfaction of first instance in R)
  • 如何记录Atk4 auth /登录事件(How to log Atk4 auth/login event)
  • 是否有必要在新的scala项目中添加我的自定义scala库依赖项?(is it necessary to add my custom scala library dependencies in new scala project?)
  • Java中对象类的继承(Inheritance of Object Class in Java)
  • 如何在jquery自动完成中获取当前元素?(How to get current element in jquery autocomplete?)
  • 学电子商务甚么大学好
  • @Override在java中(@Override in java)
  • 虚拟机中怎么给linux装office
  • Laravel邮件参数(sendmail / smtp)(Laravel mail parameters (sendmail/smtp))